<?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>180370</bug_id>
          
          <creation_ts>2017-12-04 12:48:44 -0800</creation_ts>
          <short_desc>[GStreamer] &lt;img&gt; tag needs to support video formats</short_desc>
          <delta_ts>2021-04-02 08:05:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>Other</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=224107</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>211995</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Philippe Normand">pnormand</assigned_to>
          <cc>annulen</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>calvaris</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>magomez</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>vjaquez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1377837</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-12-04 12:48:44 -0800</bug_when>
    <thetext>I&apos;m adding a skip expectation for layout test http/tests/images/image-supports-video.html, which ensures that video formats can be used in an image tag. I think the expected behavior is for the first frame of the image to be displayed. Unfortunately websites are actually doing this.

I had previously skipped fast/images/animated-image-mp4.html for the same reason. I&apos;ll associate that expectation with this bug as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428802</commentid>
    <comment_count>1</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2018-05-31 03:14:59 -0700</bug_when>
    <thetext>Adding fast/images/animated-image-mp4-crash.html here as well, which is timing out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650933</commentid>
    <comment_count>2</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-05-09 10:51:50 -0700</bug_when>
    <thetext>I... kinda... started having a look... :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653401</commentid>
    <comment_count>3</comment_count>
      <attachid>399588</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-05-17 05:27:34 -0700</bug_when>
    <thetext>Created attachment 399588
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653415</commentid>
    <comment_count>4</comment_count>
      <attachid>399594</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-05-17 09:58:29 -0700</bug_when>
    <thetext>Created attachment 399594
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653588</commentid>
    <comment_count>5</comment_count>
      <attachid>399594</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-05-18 07:12:48 -0700</bug_when>
    <thetext>Comment on attachment 399594
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/ImageDecoderGStreamer.cpp:65
&gt; +        m_image = ImageGStreamer::createImage(gst_sample_ref(platformSample().sample.gstSample));

From what I am seeing, I think you&apos;re leaking the sample here. It is true that the ImageGStreamer::createImage adopts, but it adopts the ImageGStreamer object, not the sample (at least in the Cairo Impl).

This said, I think this API is confusing and it could be well using either a const GstSample* or maybe a GRefPtr&lt;GstSample&gt;&amp;&amp;. In this case the pointer would be destroyed after the call because nobody will use it.

&gt; Source/WebCore/platform/graphics/gstreamer/ImageDecoderGStreamer.cpp:351
&gt; +void ImageDecoderGStreamer::pushEncodedData(SharedBuffer&amp; buffer)

Maybe you can switch to const SharedBuffer&amp; all the way in the onion

&gt; Source/WebCore/platform/graphics/gstreamer/ImageDecoderGStreamer.h:102
&gt; +        ImageDecoderGStreamer* m_decoder;

Would it make sense to make this refcounted or weak?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654362</commentid>
    <comment_count>6</comment_count>
      <attachid>399822</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-05-20 02:10:20 -0700</bug_when>
    <thetext>Created attachment 399822
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654363</commentid>
    <comment_count>7</comment_count>
      <attachid>399594</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-05-20 02:11:50 -0700</bug_when>
    <thetext>Comment on attachment 399594
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/ImageDecoderGStreamer.cpp:65
&gt;&gt; +        m_image = ImageGStreamer::createImage(gst_sample_ref(platformSample().sample.gstSample));
&gt; 
&gt; From what I am seeing, I think you&apos;re leaking the sample here. It is true that the ImageGStreamer::createImage adopts, but it adopts the ImageGStreamer object, not the sample (at least in the Cairo Impl).
&gt; 
&gt; This said, I think this API is confusing and it could be well using either a const GstSample* or maybe a GRefPtr&lt;GstSample&gt;&amp;&amp;. In this case the pointer would be destroyed after the call because nobody will use it.

Can&apos;t be const GstSample* because the gst_sample_* APIs expect a non-const pointer. I don&apos;t really see the point of using a GRefPtr either because the sample is already owned by the MediaSampleGStreamer :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654417</commentid>
    <comment_count>8</comment_count>
      <attachid>399822</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-05-20 07:28:21 -0700</bug_when>
    <thetext>Comment on attachment 399822
Patch

I still see lots of SharedBuffer&amp; not turned into const, please do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654423</commentid>
    <comment_count>9</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-05-20 07:34:42 -0700</bug_when>
    <thetext>Those are part of the ImageDecoder API. Why should I change all the implementations for the sake of another one?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654441</commentid>
    <comment_count>10</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-05-20 08:15:16 -0700</bug_when>
    <thetext>(In reply to Philippe Normand from comment #9)
&gt; Those are part of the ImageDecoder API. Why should I change all the
&gt; implementations for the sake of another one?

ok, you might go ahead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654460</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-20 08:52:40 -0700</bug_when>
    <thetext>Committed r261922: &lt;https://trac.webkit.org/changeset/261922&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 399822.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662472</commentid>
    <comment_count>12</comment_count>
      <attachid>399594</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-06-14 04:33:39 -0700</bug_when>
    <thetext>Comment on attachment 399594
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/ImageDecoderGStreamer.h:102
&gt;&gt; +        ImageDecoderGStreamer* m_decoder;
&gt; 
&gt; Would it make sense to make this refcounted or weak?

Making it weak wasn&apos;t a good idea: https://bugs.webkit.org/show_bug.cgi?id=213178</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399588</attachid>
            <date>2020-05-17 05:27:34 -0700</date>
            <delta_ts>2020-05-17 09:58:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180370-20200517132733.patch</filename>
            <type>text/plain</type>
            <size>33558</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTg1Mzk5ODc4NDE1MWNl
ZjgxODEwMzQ1Y2NmOTRkNjZkM2I0M2U5Mi4uZWE5ODlmNzgwZWY3ZmVjZjg4YzliYjQ2MDNhZTRl
YzJlNDhmMzU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIwLTA1LTE3ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVy
XSA8aW1nPiB0YWcgbmVlZHMgdG8gc3VwcG9ydCB2aWRlbyBmb3JtYXRzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAzNzAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHU3RyZWFtZXIgaW1wbGVtZW50YXRp
b24gb2YgdGhlIEltYWdlRGVjb2Rlci4gSXQgY3VycmVudGx5IGRvZXNuJ3Qgc3VwcG9ydCB6ZXJv
LWNvcHkKKyAgICAgICAgcmVuZGVyaW5nIHRob3VnaCBkdWUgdG8gdGhlIHRoZSBOYXRpdmVJbWFn
ZVB0ciByZXF1aXJlbWVudC4KKworICAgICAgICAqIHBsYXRmb3JtL0dTdHJlYW1lci5jbWFrZToK
KyAgICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VWaWRlb09yU1ZHTUlNRVR5cGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXI6OnN1cHBvcnRzTWVkaWFUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjp0b1NhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFt
ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6Oklt
YWdlRGVjb2RlckdTdHJlYW1lcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3Ry
ZWFtZXI6OnN1cHBvcnRzQ29udGFpbmVyVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURl
Y29kZXJHU3RyZWFtZXI6OmNhbkRlY29kZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyOjplbmNvZGVkRGF0YVN0YXR1cyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpyZXBldGl0aW9uQ291bnQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjp1dGkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpmcmFtZU9yaWVudGF0aW9uQXRJbmRleCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OmZyYW1lRHVy
YXRpb25BdEluZGV4IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJl
YW1lcjo6ZnJhbWVIYXNBbHBoYUF0SW5kZXggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVyR1N0cmVhbWVyOjpmcmFtZUJ5dGVzQXRJbmRleCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6c2V0RGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNsZWFyRnJhbWVCdWZmZXJDYWNo
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OnNhbXBsZUF0SW5k
ZXggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5l
ckRlY29kZXI6OmRlY29kZWJpblBhZEFkZGVkQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmNvbm5lY3REZWNvZGVyUGFkKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6aGFuZGxlU2FtcGxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpo
YW5kbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6
SW5uZXJEZWNvZGVyOjpwcmVwYXJlUGlwZWxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OnJ1bik6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2Rl
ZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29k
ZXJHU3RyZWFtZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0ltYWdlR1N0cmVhbWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUdTdHJlYW1lcjo6
Y3JlYXRlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VHU3RyZWFtZXI6OmltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlR1N0cmVhbWVyOjpzZXRDcm9wUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUdTdHJlYW1lcjo6cmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUdTdHJlYW1lcjo6aGFzQWxwaGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlR1N0cmVhbWVyOjpJbWFnZUdTdHJlYW1lcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmg6CisKIDIwMjAtMDUtMTcgIENhcmxv
cyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIE1v
dmUgdG8gbmV3IFBhc3RlYm9hcmQgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9HU3RyZWFtZXIuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIu
Y21ha2UKaW5kZXggODM0N2JiYzZhOTAwYWUyZWMyY2U1OTMxM2I5OGZkMWExN2FiMzVmMS4uMTYw
OWU5MWJjMGQ0NWQyYjdjZDFmNjY2ZDQxYzAzOTE0ZWFjYWI0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0dTdHJlYW1lci5jbWFrZQpAQCAtMTMsNiArMTMsNyBAQCBpZiAoRU5BQkxFX1ZJREVP
IE9SIEVOQUJMRV9XRUJfQVVESU8pCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9Hc3RBbGxvY2F0b3JGYXN0TWFsbG9jLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcAogICAgICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9GcmFtZUhvbGRlci5jcHAKKyAgICAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKICAg
ICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYUVu
Z2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5R1N0cmVhbWVyLmNwcAogICAgICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAppbmRleCAwOTVlNTBhZjNk
ZDY3MTMyMmY0NzZiYjRiNWQ0ZjdkZThhNTJhNWRhLi5iYjJlZjlhOTg1MDliNTBhMzE4YjY5MWNl
ZWUwNjFjNTQzZDllOGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1F
VHlwZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJl
Z2lzdHJ5LmNwcApAQCAtNTgsNiArNTgsMTAgQEAKICNpbmNsdWRlICJQcmV2aWV3Q29udmVydGVy
LmgiCiAjZW5kaWYKIAorI2lmIFVTRShHU1RSRUFNRVIpCisjaW5jbHVkZSAiSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBIYXNo
U2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgTUlNRVR5cGVSZWdpc3RyeTo6
c3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKQpAQCAtNDM2LDYgKzQ0MCwxMSBAQCBib29sIE1JTUVU
eXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VWaWRlb09yU1ZHTUlNRVR5cGUoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogCisjaWYgVVNFKEdT
VFJFQU1FUikKKyAgICBpZiAoSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpzdXBwb3J0c0NvbnRhaW5l
clR5cGUobWltZVR5cGUpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VEZWNvZGVyLmNwcAppbmRleCBjNTRiMzg4ODc0NGI0NTgwMThiN2M0NmRjMWQ5NjMzMmZj
M2U4NTNjLi5hNWMxMjZlYWE2NGYxN2IzMjgzZTJhODBiZDBlZWIxZDZiODY4NGFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKQEAg
LTM4LDYgKzM4LDEwIEBACiAjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyQVZGT2JqQy5oIgogI2VuZGlm
CiAKKyNpZiBVU0UoR1NUUkVBTUVSKQorI2luY2x1ZGUgIkltYWdlRGVjb2RlckdTdHJlYW1lci5o
IgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVmUHRyPEltYWdlRGVjb2Rlcj4g
SW1hZ2VEZWNvZGVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCkBAIC00OSw2ICs1MywxMSBAQCBSZWZQdHI8
SW1hZ2VEZWNvZGVyPiBJbWFnZURlY29kZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIGNv
bnN0IFN0cmluZyYgbWltZQogICAgICAgICByZXR1cm4gSW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3Jl
YXRlKGRhdGEsIG1pbWVUeXBlLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pOwogI2VuZGlmCiAKKyNpZiBVU0UoR1NUUkVBTUVSKQorICAgIGlmIChJbWFnZURlY29kZXJH
U3RyZWFtZXI6OmNhbkRlY29kZVR5cGUobWltZVR5cGUpKQorICAgICAgICByZXR1cm4gSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGUoZGF0YSwgbWltZVR5cGUsIGFscGhhT3B0aW9uLCBnYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisjZW5kaWYKKwogI2lmIFVTRShDRykKICAgICByZXR1
cm4gSW1hZ2VEZWNvZGVyQ0c6OmNyZWF0ZShkYXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pOwogI2VsaWYgVVNFKERJUkVDVDJEKQpAQCAtNzYsNiArODUsMTEgQEAg
Ym9vbCBJbWFnZURlY29kZXI6OnN1cHBvcnRzTWVkaWFUeXBlKE1lZGlhVHlwZSB0eXBlKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogCisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICBpZiAo
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpzdXBwb3J0c01lZGlhVHlwZSh0eXBlKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisjZW5kaWYKKwogICAgIHJldHVybiBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2Rl
ckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MzJlODQwNWYyZjllOTgw
ZGQxNmIwNWVjM2RkZTUxODgyYzdmYmM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAK
QEAgLTAsMCArMSwzNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTAor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWludCB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbWFnZURlY29kZXJHU3RyZWFtZXIuaCIKKwor
I2lmIFVTRShHU1RSRUFNRVIpCisKKyNpbmNsdWRlICJGbG9hdFNpemUuaCIKKyNpbmNsdWRlICJH
U3RyZWFtZXJDb21tb24uaCIKKyNpbmNsdWRlICJHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuaCIK
KyNpbmNsdWRlICJJbWFnZUdTdHJlYW1lci5oIgorI2luY2x1ZGUgIk1lZGlhU2FtcGxlR1N0cmVh
bWVyLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlIDxnc3QvYXBwL2dz
dGFwcHNpbmsuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9P
cHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitHU1RfREVCVUdfQ0FURUdPUlkod2Via2l0X2ltYWdlX2RlY29kZXJfZGVidWcpOwor
I2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgd2Via2l0X2ltYWdlX2RlY29kZXJfZGVidWcKKworY2xh
c3MgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlIGZpbmFsIDogcHVibGljIE1lZGlhU2FtcGxl
R1N0cmVhbWVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2RlckdTdHJlYW1l
clNhbXBsZT4gY3JlYXRlKEdSZWZQdHI8R3N0U2FtcGxlPiYmIHNhbXBsZSwgY29uc3QgRmxvYXRT
aXplJiBwcmVzZW50YXRpb25TaXplKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlKFdURk1vdmUoc2FtcGxlKSwgcHJlc2VudGF0
aW9uU2l6ZSkpOworICAgIH0KKworICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIGlmICghbV9pbWFnZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICByZXR1cm4gbV9pbWFnZS0+aW1hZ2UoKS5uYXRpdmVJbWFnZSgpOworICAgIH0KKyAg
ICB2b2lkIGRyb3BJbWFnZSgpIHsgbV9pbWFnZSA9IG51bGxwdHI7IH0KKworICAgIFNhbXBsZUZs
YWdzIGZsYWdzKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJldHVybiAoU2FtcGxl
RmxhZ3MpKE1lZGlhU2FtcGxlR1N0cmVhbWVyOjpmbGFncygpIHwgKG1faW1hZ2UgJiYgbV9pbWFn
ZS0+aGFzQWxwaGEoKSA/IEhhc0FscGhhIDogMCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBJ
bWFnZURlY29kZXJHU3RyZWFtZXJTYW1wbGUoR1JlZlB0cjxHc3RTYW1wbGU+JiYgc2FtcGxlLCBj
b25zdCBGbG9hdFNpemUmIHByZXNlbnRhdGlvblNpemUpCisgICAgICAgIDogTWVkaWFTYW1wbGVH
U3RyZWFtZXIoV1RGTW92ZShzYW1wbGUpLCBwcmVzZW50YXRpb25TaXplLCB7IH0pCisgICAgewor
ICAgICAgICBtX2ltYWdlID0gSW1hZ2VHU3RyZWFtZXI6OmNyZWF0ZUltYWdlKGdzdF9zYW1wbGVf
cmVmKHBsYXRmb3JtU2FtcGxlKCkuc2FtcGxlLmdzdFNhbXBsZSkpOworICAgIH0KKworICAgIFJl
ZlB0cjxJbWFnZUdTdHJlYW1lcj4gbV9pbWFnZTsKK307CisKK3N0YXRpYyBJbWFnZURlY29kZXJH
U3RyZWFtZXJTYW1wbGUqIHRvU2FtcGxlKGNvbnN0IFByZXNlbnRhdGlvbk9yZGVyU2FtcGxlTWFw
Ojp2YWx1ZV90eXBlJiBwYWlyKQoreworICAgIHJldHVybiAoSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
U2FtcGxlKilwYWlyLnNlY29uZC5nZXQoKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXJh
dG9yPgorSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlKiB0b1NhbXBsZShJdGVyYXRvciBpdGVy
KQoreworICAgIHJldHVybiAoSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlKilpdGVyLT5zZWNv
bmQuZ2V0KCk7Cit9CisKK1JlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IEltYWdlRGVjb2Rl
ckdTdHJlYW1lcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
IGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEltYWdlRGVjb2RlckdTdHJlYW1lcihkYXRhLCBtaW1lVHlwZSwgYWxwaGFPcHRpb24sIGdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7Cit9CisKK0ltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW1h
Z2VEZWNvZGVyR1N0cmVhbWVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgIDogbV9t
aW1lVHlwZShtaW1lVHlwZSkKK3sKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7
CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgR1NUX0RFQlVHX0NB
VEVHT1JZX0lOSVQod2Via2l0X2ltYWdlX2RlY29kZXJfZGVidWcsICJ3ZWJraXRpbWFnZWRlY29k
ZXIiLCAwLCAiV2ViS2l0IGltYWdlIGRlY29kZXIiKTsKKyAgICB9KTsKKworICAgIHB1c2hFbmNv
ZGVkRGF0YShkYXRhKTsKK30KKworYm9vbCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnN1cHBvcnRz
Q29udGFpbmVyVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCit7CisgICAgcmV0dXJuIEdTdHJlYW1l
clJlZ2lzdHJ5U2Nhbm5lcjo6c2luZ2xldG9uKCkuaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKHR5
cGUpOworfQorCitib29sIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y2FuRGVjb2RlVHlwZShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIHJldHVybiBHU3RyZWFtZXJSZWdpc3RyeVNjYW5u
ZXI6OnNpbmdsZXRvbigpLmlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChtaW1lVHlwZSk7Cit9CisK
K0VuY29kZWREYXRhU3RhdHVzIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6ZW5jb2RlZERhdGFTdGF0
dXMoKSBjb25zdAoreworICAgIGlmIChtX2VvcykKKyAgICAgICAgcmV0dXJuIEVuY29kZWREYXRh
U3RhdHVzOjpDb21wbGV0ZTsKKyAgICBpZiAobV9zaXplKQorICAgICAgICByZXR1cm4gRW5jb2Rl
ZERhdGFTdGF0dXM6OlNpemVBdmFpbGFibGU7CisgICAgaWYgKG1faW5uZXJEZWNvZGVyKQorICAg
ICAgICByZXR1cm4gbV9pbm5lckRlY29kZXItPmVuY29kZWREYXRhU3RhdHVzKCk7CisKKyAgICBy
ZXR1cm4gRW5jb2RlZERhdGFTdGF0dXM6OlVua25vd247Cit9CisKK0ludFNpemUgSW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyOjpzaXplKCkgY29uc3QKK3sKKyAgICBpZiAobV9zaXplKQorICAgICAgICBy
ZXR1cm4gbV9zaXplLnZhbHVlKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKworUmVwZXRpdGlvbkNv
dW50IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6cmVwZXRpdGlvbkNvdW50KCkgY29uc3QKK3sKKyAg
ICAvLyBJbiB0aGUgYWJzZW5jZSBvZiBpbnN0cnVjdGlvbnMgdG8gdGhlIGNvbnRyYXJ5LCBhc3N1
bWUgYWxsIG1lZGlhIGZvcm1hdHMgcmVwZWF0IGluZmluaXRlbHkuCisgICAgcmV0dXJuIGZyYW1l
Q291bnQoKSA+IDEgPyBSZXBldGl0aW9uQ291bnRJbmZpbml0ZSA6IFJlcGV0aXRpb25Db3VudE5v
bmU7Cit9CisKK1N0cmluZyBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnV0aSgpIGNvbnN0Cit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4geyB9OworfQorCitJbWFnZU9yaWVudGF0
aW9uIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90
KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEltYWdlT3JpZW50
YXRpb246Ok5vbmU7Cit9CisKK1NlY29uZHMgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpmcmFtZUR1
cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgYXV0byogc2FtcGxlRGF0
YSA9IHNhbXBsZUF0SW5kZXgoaW5kZXgpOworICAgIGlmICghc2FtcGxlRGF0YSkKKyAgICAgICAg
cmV0dXJuIHsgfTsKKworICAgIHJldHVybiBTZWNvbmRzKHNhbXBsZURhdGEtPmR1cmF0aW9uKCku
dG9Eb3VibGUoKSk7Cit9CisKK2Jvb2wgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpmcmFtZUhhc0Fs
cGhhQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgYXV0byogc2FtcGxlRGF0YSA9
IHNhbXBsZUF0SW5kZXgoaW5kZXgpOworICAgIHJldHVybiBzYW1wbGVEYXRhID8gc2FtcGxlRGF0
YS0+aGFzQWxwaGEoKSA6IGZhbHNlOworfQorCit1bnNpZ25lZCBJbWFnZURlY29kZXJHU3RyZWFt
ZXI6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJz
YW1wbGluZ0xldmVsKSBjb25zdAoreworICAgIGlmICghZnJhbWVJc0NvbXBsZXRlQXRJbmRleChp
bmRleCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgSW50U2l6ZSBmcmFtZVNpemUgPSBmcmFt
ZVNpemVBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICByZXR1cm4gKGZyYW1l
U2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKTsKK30KKworTmF0aXZlSW1hZ2VQdHIgSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1
YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCit7CisgICAgTG9ja0hvbGRl
ciBob2xkZXIgeyBtX3NhbXBsZUdlbmVyYXRvckxvY2sgfTsKKworICAgIGF1dG8qIHNhbXBsZURh
dGEgPSBzYW1wbGVBdEluZGV4KGluZGV4KTsKKyAgICBpZiAoIXNhbXBsZURhdGEpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgaWYgKGF1dG8gaW1hZ2UgPSBzYW1wbGVEYXRhLT5pbWFn
ZSgpKQorICAgICAgICByZXR1cm4gaW1hZ2U7CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
dm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBi
b29sKQoreworICAgIHB1c2hFbmNvZGVkRGF0YShkYXRhKTsKK30KKwordm9pZCBJbWFnZURlY29k
ZXJHU3RyZWFtZXI6OmNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QgaW5kZXgpCit7CisgICAg
c2l6ZV90IGkgPSAwOworICAgIGZvciAoYXV0byYgc2FtcGxlUGFpciA6IG1fc2FtcGxlRGF0YS5w
cmVzZW50YXRpb25PcmRlcigpKSB7CisgICAgICAgIHRvU2FtcGxlKHNhbXBsZVBhaXIpLT5kcm9w
SW1hZ2UoKTsKKyAgICAgICAgaWYgKCsraSA+IGluZGV4KQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgfQorfQorCitjb25zdCBJbWFnZURlY29kZXJHU3RyZWFtZXJTYW1wbGUqIEltYWdlRGVjb2Rl
ckdTdHJlYW1lcjo6c2FtcGxlQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgaWYg
KGluZGV4ID49IG1fc2FtcGxlRGF0YS5wcmVzZW50YXRpb25PcmRlcigpLnNpemUoKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBGSVhNRTogc3RkOjptYXAgaXMgbm90IHJhbmRv
bS1hY2Nlc3NpYmxlOyB0aGlzIGNhbiBnZXQgZXhwZW5zaXZlIGlmIGNhbGxlcnMgcmVwZWF0ZWRs
eSBjYWxsCisgICAgLy8gd2l0aCBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaW5kZXhlcy4gSW52
ZXN0aWdhdGUgYWRkaW5nIGFuIE8oMSkgc2lkZSBzdHJ1Y3R1cmUgdG8gbWFrZSB0aGlzCisgICAg
Ly8gc3R5bGUgb2YgYWNjZXNzIGZhc3Rlci4KKyAgICBhdXRvIGl0ZXIgPSBtX3NhbXBsZURhdGEu
cHJlc2VudGF0aW9uT3JkZXIoKS5iZWdpbigpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9
IGluZGV4OyArK2kpCisgICAgICAgICsraXRlcjsKKworICAgIHJldHVybiB0b1NhbXBsZShpdGVy
KTsKK30KKwordm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6ZGVjb2Rl
YmluUGFkQWRkZWRDYWxsYmFjayhJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlciog
ZGVjb2RlciwgR3N0UGFkKiBwYWQpCit7CisgICAgZGVjb2Rlci0+Y29ubmVjdERlY29kZXJQYWQo
cGFkKTsKK30KKwordm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6Y29u
bmVjdERlY29kZXJQYWQoR3N0UGFkKiBwYWQpCit7CisgICAgYXV0byBwYWRDYXBzID0gYWRvcHRH
UmVmKGdzdF9wYWRfZ2V0X2N1cnJlbnRfY2FwcyhwYWQpKTsKKyAgICBHU1RfREVCVUdfT0JKRUNU
KG1fcGlwZWxpbmUuZ2V0KCksICJOZXcgZGVjb2RlYmluIHBhZCAlIiBHU1RfUFRSX0ZPUk1BVCAi
IGNhcHM6ICUiIEdTVF9QVFJfRk9STUFULCBwYWQsIHBhZENhcHMuZ2V0KCkpOworICAgIFJFTEVB
U0VfQVNTRVJUKGRvQ2Fwc0hhdmVUeXBlKHBhZENhcHMuZ2V0KCksICJ2aWRlbyIpKTsKKworICAg
IEdzdEVsZW1lbnQqIHNpbmsgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImFwcHNpbmsiLCBu
dWxscHRyKTsKKyAgICBzdGF0aWMgR3N0QXBwU2lua0NhbGxiYWNrcyBjYWxsYmFja3MgPSB7Cisg
ICAgICAgIG51bGxwdHIsCisgICAgICAgIFtdKEdzdEFwcFNpbmsqIHNpbmssIGdwb2ludGVyIHVz
ZXJEYXRhKSAtPiBHc3RGbG93UmV0dXJuIHsKKyAgICAgICAgICAgIGF1dG8gc2FtcGxlID0gYWRv
cHRHUmVmKGdzdF9hcHBfc2lua190cnlfcHVsbF9wcmVyb2xsKHNpbmssIDApKTsKKyAgICAgICAg
ICAgIHN0YXRpY19jYXN0PEltYWdlRGVjb2RlckdTdHJlYW1lcio+KHVzZXJEYXRhKS0+aGFuZGxl
U2FtcGxlKFdURk1vdmUoc2FtcGxlKSk7CisgICAgICAgICAgICByZXR1cm4gR1NUX0ZMT1dfT0s7
CisgICAgICAgIH0sCisgICAgICAgIFtdKEdzdEFwcFNpbmsqIHNpbmssIGdwb2ludGVyIHVzZXJE
YXRhKSAtPiBHc3RGbG93UmV0dXJuIHsKKyAgICAgICAgICAgIGF1dG8gc2FtcGxlID0gYWRvcHRH
UmVmKGdzdF9hcHBfc2lua190cnlfcHVsbF9zYW1wbGUoc2luaywgMCkpOworICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyKj4odXNlckRhdGEpLT5oYW5kbGVTYW1w
bGUoV1RGTW92ZShzYW1wbGUpKTsKKyAgICAgICAgICAgIHJldHVybiBHU1RfRkxPV19PSzsKKyAg
ICAgICAgfSwKKyAgICAgICAgeyBudWxscHRyIH0KKyAgICB9OworICAgIGdzdF9hcHBfc2lua19z
ZXRfY2FsbGJhY2tzKEdTVF9BUFBfU0lOSyhzaW5rKSwgJmNhbGxiYWNrcywgbV9kZWNvZGVyLCBu
dWxscHRyKTsKKworICAgIEdSZWZQdHI8R3N0Q2Fwcz4gY2FwcyA9IGFkb3B0R1JlZihnc3RfY2Fw
c19mcm9tX3N0cmluZygidmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVJHQkEiKSk7CisgICAg
Z19vYmplY3Rfc2V0KHNpbmssICJzeW5jIiwgZmFsc2UsICJjYXBzIiwgY2Fwcy5nZXQoKSwgbnVs
bHB0cik7CisKKyAgICBHc3RFbGVtZW50KiB2aWRlb2NvbnZlcnQgPSBnc3RfZWxlbWVudF9mYWN0
b3J5X21ha2UoInZpZGVvY29udmVydCIsIG51bGxwdHIpOworCisgICAgZ3N0X2Jpbl9hZGRfbWFu
eShHU1RfQklOX0NBU1QobV9waXBlbGluZS5nZXQoKSksIHZpZGVvY29udmVydCwgc2luaywgbnVs
bHB0cik7CisgICAgZ3N0X2VsZW1lbnRfbGluayh2aWRlb2NvbnZlcnQsIHNpbmspOworICAgIGF1
dG8gc2lua1BhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCh2aWRlb2Nv
bnZlcnQsICJzaW5rIikpOworICAgIGdzdF9wYWRfbGluayhwYWQsIHNpbmtQYWQuZ2V0KCkpOwor
ICAgIGdzdF9lbGVtZW50X3N5bmNfc3RhdGVfd2l0aF9wYXJlbnQodmlkZW9jb252ZXJ0KTsKKyAg
ICBnc3RfZWxlbWVudF9zeW5jX3N0YXRlX3dpdGhfcGFyZW50KHNpbmspOworfQorCit2b2lkIElt
YWdlRGVjb2RlckdTdHJlYW1lcjo6aGFuZGxlU2FtcGxlKEdSZWZQdHI8R3N0U2FtcGxlPiYmIHNh
bXBsZSkKK3sKKyAgICBhdXRvKiBjYXBzID0gZ3N0X3NhbXBsZV9nZXRfY2FwcyhzYW1wbGUuZ2V0
KCkpOworICAgIEdTVF9ERUJVRygiSGFuZGxpbmcgc2FtcGxlIHdpdGggY2FwcyAlIiBHU1RfUFRS
X0ZPUk1BVCwgY2Fwcyk7CisgICAgYXV0byBwcmVzZW50YXRpb25TaXplID0gZ2V0VmlkZW9SZXNv
bHV0aW9uRnJvbUNhcHMoY2Fwcyk7CisgICAgaWYgKHByZXNlbnRhdGlvblNpemUgJiYgIXByZXNl
bnRhdGlvblNpemUtPmlzRW1wdHkoKSAmJiAoIW1fc2l6ZSB8fCBtX3NpemUgIT0gcm91bmRlZElu
dFNpemUoKnByZXNlbnRhdGlvblNpemUpKSkKKyAgICAgICAgbV9zaXplID0gcm91bmRlZEludFNp
emUoKnByZXNlbnRhdGlvblNpemUpOworICAgIG1fc2FtcGxlRGF0YS5hZGRTYW1wbGUoSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyU2FtcGxlOjpjcmVhdGUoV1RGTW92ZShzYW1wbGUpLCAqbV9zaXplKSk7
Cit9CisKK3ZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmhhbmRsZU1l
c3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKK3sKKyAgICBBU1NFUlQoJm1fcnVuTG9vcCA9PSAm
UnVuTG9vcDo6Y3VycmVudCgpKTsKKworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsK
KyAgICBHVW5pcXVlT3V0UHRyPGdjaGFyPiBkZWJ1ZzsKKworICAgIHN3aXRjaCAoR1NUX01FU1NB
R0VfVFlQRShtZXNzYWdlKSkgeworICAgIGNhc2UgR1NUX01FU1NBR0VfRU9TOgorICAgICAgICBn
c3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGluZS5nZXQoKSwgR1NUX1NUQVRFX05VTEwpOwor
ICAgICAgICBtX3J1bkxvb3Auc3RvcCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9N
RVNTQUdFX1dBUk5JTkc6CisgICAgICAgIGdzdF9tZXNzYWdlX3BhcnNlX3dhcm5pbmcobWVzc2Fn
ZSwgJmVycm9yLm91dFB0cigpLCAmZGVidWcub3V0UHRyKCkpOworICAgICAgICBnX3dhcm5pbmco
Ildhcm5pbmc6ICVkLCAlcy4gRGVidWcgb3V0cHV0OiAlcyIsIGVycm9yLT5jb2RlLCBlcnJvci0+
bWVzc2FnZSwgZGVidWcuZ2V0KCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9NRVNT
QUdFX0VSUk9SOgorICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV9lcnJvcihtZXNzYWdlLCAmZXJy
b3Iub3V0UHRyKCksICZkZWJ1Zy5vdXRQdHIoKSk7CisgICAgICAgIGdfd2FybmluZygiRXJyb3I6
ICVkLCAlcy4gRGVidWcgb3V0cHV0OiAlcyIsIGVycm9yLT5jb2RlLCBlcnJvci0+bWVzc2FnZSwg
ZGVidWcuZ2V0KCkpOworICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGluZS5n
ZXQoKSwgR1NUX1NUQVRFX05VTEwpOworICAgICAgICBtX3J1bkxvb3Auc3RvcCgpOworICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQg
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OnByZXBhcmVQaXBlbGluZSgpCit7
CisgICAgc3RhdGljIEF0b21pYzx1aW50MzJfdD4gcGlwZWxpbmVJZDsKKyAgICBtX3BpcGVsaW5l
ID0gZ3N0X3BpcGVsaW5lX25ldyhtYWtlU3RyaW5nKCJpbWFnZS1kZWNvZGVyLSIsIHBpcGVsaW5l
SWQuZXhjaGFuZ2VBZGQoMSkpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgR1JlZlB0cjxHc3RCdXM+
IGJ1cyA9IGFkb3B0R1JlZihnc3RfcGlwZWxpbmVfZ2V0X2J1cyhHU1RfUElQRUxJTkUobV9waXBl
bGluZS5nZXQoKSkpKTsKKyAgICBBU1NFUlQoYnVzKTsKKworICAgIGdzdF9idXNfc2V0X3N5bmNf
aGFuZGxlcigKKyAgICAgICAgYnVzLmdldCgpLCBbXShHc3RCdXMqLCBHc3RNZXNzYWdlKiBtZXNz
YWdlLCBncG9pbnRlciB1c2VyRGF0YSkgeworICAgICAgICAgICAgYXV0byYgZGVjb2RlciA9ICpz
dGF0aWNfY2FzdDxJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcio+KHVzZXJEYXRh
KTsKKyAgICAgICAgICAgIGlmICgmZGVjb2Rlci5tX3J1bkxvb3AgPT0gJlJ1bkxvb3A6OmN1cnJl
bnQoKSkKKyAgICAgICAgICAgICAgICBkZWNvZGVyLmhhbmRsZU1lc3NhZ2UobWVzc2FnZSk7Cisg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBHUmVmUHRyPEdzdE1lc3NhZ2U+IHBy
b3RlY3RlZE1lc3NhZ2UobWVzc2FnZSk7CisgICAgICAgICAgICAgICAgYXV0byB3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKGRlY29kZXIpOworICAgICAgICAgICAgICAgIGRlY29kZXIubV9ydW5Mb29w
LmRpc3BhdGNoKFt3ZWFrVGhpcywgcHJvdGVjdGVkTWVzc2FnZV0geworICAgICAgICAgICAgICAg
ICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+aGFu
ZGxlTWVzc2FnZShwcm90ZWN0ZWRNZXNzYWdlLmdldCgpKTsKKyAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGdzdF9tZXNzYWdlX3VucmVmKG1lc3NhZ2UpOwor
ICAgICAgICAgICAgcmV0dXJuIEdTVF9CVVNfRFJPUDsKKyAgICAgICAgfSwKKyAgICAgICAgdGhp
cywgbnVsbHB0cik7CisKKyAgICBHc3RFbGVtZW50KiBzb3VyY2UgPSBnc3RfZWxlbWVudF9mYWN0
b3J5X21ha2UoImdpb3N0cmVhbXNyYyIsIG51bGxwdHIpOworICAgIGdfb2JqZWN0X3NldChzb3Vy
Y2UsICJzdHJlYW0iLCBtX21lbW9yeVN0cmVhbS5nZXQoKSwgbnVsbHB0cik7CisKKyAgICBHc3RF
bGVtZW50KiBkZWNvZGVyID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJkZWNvZGViaW4iLCBu
dWxscHRyKTsKKyAgICBhdXRvIGFsbG93ZWRDYXBzID0gYWRvcHRHUmVmKGdzdF9jYXBzX25ld19l
bXB0eV9zaW1wbGUoInZpZGVvL3gtcmF3IikpOworICAgIGdfb2JqZWN0X3NldChkZWNvZGVyLCAi
Y2FwcyIsIGFsbG93ZWRDYXBzLmdldCgpLCAiZXhwb3NlLWFsbC1zdHJlYW1zIiwgZmFsc2UsIG51
bGxwdHIpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChkZWNvZGVyLCAicGFkLWFkZGVk
IiwgR19DQUxMQkFDSyhkZWNvZGViaW5QYWRBZGRlZENhbGxiYWNrKSwgdGhpcyk7CisKKyAgICBn
c3RfYmluX2FkZF9tYW55KEdTVF9CSU5fQ0FTVChtX3BpcGVsaW5lLmdldCgpKSwgc291cmNlLCBk
ZWNvZGVyLCBudWxscHRyKTsKKyAgICBnc3RfZWxlbWVudF9saW5rKHNvdXJjZSwgZGVjb2Rlcik7
CisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9Q
TEFZSU5HKTsKK30KKwordm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6
cnVuKCkKK3sKKyAgICBtX3J1bkxvb3AuZGlzcGF0Y2goW3RoaXNdKCkgeworICAgICAgICBwcmVw
YXJlUGlwZWxpbmUoKTsKKyAgICB9KTsKKworICAgIG1fcnVuTG9vcC5ydW4oKTsKK30KKworRW5j
b2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmVuY29k
ZWREYXRhU3RhdHVzKCkgY29uc3QKK3sKKyAgICBHc3RTdGF0ZSBzdGF0ZTsKKyAgICBnc3RfZWxl
bWVudF9nZXRfc3RhdGUobV9waXBlbGluZS5nZXQoKSwgJnN0YXRlLCBudWxscHRyLCAwKTsKKyAg
ICBpZiAoc3RhdGUgPj0gR1NUX1NUQVRFX1JFQURZKQorICAgICAgICByZXR1cm4gRW5jb2RlZERh
dGFTdGF0dXM6OlR5cGVBdmFpbGFibGU7CisgICAgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpV
bmtub3duOworfQorCit2b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRh
KFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQoreworICAgIG1fZW9zID0gZmFsc2U7CisgICAgYXV0byB0
aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRh
dGEgPSBidWZmZXIuZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0geworICAgICAgICBtX2lu
bmVyRGVjb2RlciA9IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVhdGUo
dGhpcywgZGF0YSwgc2l6ZSk7CisgICAgICAgIG1faW5uZXJEZWNvZGVyLT5ydW4oKTsKKyAgICB9
KTsKKyAgICB0aHJlYWQtPndhaXRGb3JDb21wbGV0aW9uKCk7CisgICAgbV9lb3MgPSB0cnVlOwor
ICAgIG1faW5uZXJEZWNvZGVyID0gbnVsbHB0cjsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlz
XSB7CisgICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzQ2hhbmdlZENhbGxiYWNrKQorICAg
ICAgICAgICAgbV9lbmNvZGVkRGF0YVN0YXR1c0NoYW5nZWRDYWxsYmFjayhlbmNvZGVkRGF0YVN0
YXR1cygpKTsKKyAgICB9KTsKK30KKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGUwOWZlMjQ2ZDE5MjVlNDNlZmM4MDJkMGFjZTBlYTY3
OTI0YzAxNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaApAQCAtMCwwICsxLDEyNCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBV
U0UoR1NUUkVBTUVSKQorCisjaW5jbHVkZSAiR1JlZlB0ckdTdHJlYW1lci5oIgorI2luY2x1ZGUg
IkltYWdlRGVjb2Rlci5oIgorI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKyNpbmNsdWRl
ICJTYW1wbGVNYXAuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDb250ZW50VHlwZTsKK2NsYXNz
IEltYWdlRGVjb2RlckdTdHJlYW1lclNhbXBsZTsKKworY2xhc3MgSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyIGZpbmFsIDogcHVibGljIEltYWdlRGVjb2RlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFJl
ZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
OworICAgIEltYWdlRGVjb2RlckdTdHJlYW1lcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAg
IHZpcnR1YWwgfkltYWdlRGVjb2RlckdTdHJlYW1lcigpID0gZGVmYXVsdDsKKworICAgIHN0YXRp
YyBib29sIHN1cHBvcnRzTWVkaWFUeXBlKE1lZGlhVHlwZSB0eXBlKSB7IHJldHVybiB0eXBlID09
IE1lZGlhVHlwZTo6VmlkZW87IH0KKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0NvbnRhaW5lclR5
cGUoY29uc3QgU3RyaW5nJik7CisKKyAgICBzaXplX3QgYnl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQ
cm9wZXJ0aWVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAgIHN0YXRpYyBib29s
IGNhbkRlY29kZVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisKKyAgICB2b2lkIHNldEVu
Y29kZWREYXRhU3RhdHVzQ2hhbmdlQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkKEVuY29kZWRE
YXRhU3RhdHVzKT4mJiBjYWxsYmFjaykgZmluYWwgeyBtX2VuY29kZWREYXRhU3RhdHVzQ2hhbmdl
ZENhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7IH0KKyAgICBFbmNvZGVkRGF0YVN0YXR1cyBl
bmNvZGVkRGF0YVN0YXR1cygpIGNvbnN0IGZpbmFsOworICAgIEludFNpemUgc2l6ZSgpIGNvbnN0
IGZpbmFsOworICAgIHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9z
YW1wbGVEYXRhLnNpemUoKTsgfQorICAgIFJlcGV0aXRpb25Db3VudCByZXBldGl0aW9uQ291bnQo
KSBjb25zdCBmaW5hbDsKKyAgICBTdHJpbmcgdXRpKCkgY29uc3QgZmluYWw7CisgICAgU3RyaW5n
IGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTUlNRVR5cGVSZWdpc3Ry
eTo6Z2V0UHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUobV9taW1lVHlwZSk7IH0KKyAgICBP
cHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFdURjo6bnVs
bG9wdDsgfQorCisgICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxp
bmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHNpemUoKTsgfQorICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIHNhbXBsZUF0SW5kZXgoaW5kZXgpOyB9CisgICAgSW1hZ2VP
cmllbnRhdGlvbiBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0IGZpbmFsOwor
CisgICAgU2Vjb25kcyBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0IGZpbmFsOwor
ICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KSBjb25zdCBmaW5hbDsKKyAgICBi
b29sIGZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdCBmaW5h
bCB7IHJldHVybiBpbmRleCA8PSBtX3NhbXBsZURhdGEuc2l6ZSgpOyB9CisgICAgdW5zaWduZWQg
ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCkgY29uc3QgZmluYWw7CisKKyAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVG
cmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xl
dmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERl
Y29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKKworICAgIHZvaWQgc2V0RXhwZWN0ZWRD
b250ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsIHsgfQorICAgIHZvaWQgc2V0RGF0YShTaGFyZWRC
dWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgYm9vbCBpc0FsbERhdGFS
ZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZW9zOyB9CisgICAgdm9pZCBjbGVhckZy
YW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBjbGFzcyBJbm5l
ckRlY29kZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW5uZXJEZWNvZGVyPiwgcHVi
bGljIENhbk1ha2VXZWFrUHRyPElubmVyRGVjb2Rlcj4geworICAgICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5uZXJEZWNvZGVyKTsK
KworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFJlZlB0cjxJbm5lckRlY29kZXI+IGNyZWF0
ZShJbWFnZURlY29kZXJHU3RyZWFtZXIqIGRlY29kZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGdzc2l6
ZSBzaXplKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbm5l
ckRlY29kZXIoZGVjb2RlciwgZGF0YSwgc2l6ZSkpOworICAgICAgICB9CisKKyAgICAgICAgSW5u
ZXJEZWNvZGVyKEltYWdlRGVjb2RlckdTdHJlYW1lciogZGVjb2RlciwgY29uc3QgY2hhciogZGF0
YSwgZ3NzaXplIHNpemUpCisgICAgICAgICAgICA6IG1fZGVjb2RlcihkZWNvZGVyKQorICAgICAg
ICAgICAgLCBtX3J1bkxvb3AoUnVuTG9vcDo6Y3VycmVudCgpKQorICAgICAgICB7CisgICAgICAg
ICAgICBtX21lbW9yeVN0cmVhbSA9IGFkb3B0R1JlZihnX21lbW9yeV9pbnB1dF9zdHJlYW1fbmV3
X2Zyb21fZGF0YShkYXRhLCBzaXplLCBudWxscHRyKSk7CisgICAgICAgIH0KKworICAgICAgICB2
b2lkIHJ1bigpOworICAgICAgICBFbmNvZGVkRGF0YVN0YXR1cyBlbmNvZGVkRGF0YVN0YXR1cygp
IGNvbnN0OworCisgICAgcHJpdmF0ZSA6CisgICAgICAgIHN0YXRpYyB2b2lkIGRlY29kZWJpblBh
ZEFkZGVkQ2FsbGJhY2soSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXIqLCBHc3RQ
YWQqKTsKKyAgICAgICAgdm9pZCBoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqKTsKKyAgICAgICAg
dm9pZCBwcmVwYXJlUGlwZWxpbmUoKTsKKyAgICAgICAgdm9pZCBjb25uZWN0RGVjb2RlclBhZChH
c3RQYWQqKTsKKworICAgICAgICBJbWFnZURlY29kZXJHU3RyZWFtZXIqIG1fZGVjb2RlcjsKKyAg
ICAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX3BpcGVsaW5lOworICAgICAgICBHUmVmUHRyPEdJ
bnB1dFN0cmVhbT4gbV9tZW1vcnlTdHJlYW07CisgICAgICAgIFJ1bkxvb3AmIG1fcnVuTG9vcDsK
KyAgICB9OworCisgICAgdm9pZCBoYW5kbGVTYW1wbGUoR1JlZlB0cjxHc3RTYW1wbGU+JiYpOwor
ICAgIHZvaWQgcHVzaEVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYpOworCisgICAgY29uc3QgSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlKiBzYW1wbGVBdEluZGV4KHNpemVfdCkgY29uc3Q7CisK
KyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoRW5jb2RlZERhdGFTdGF0dXMpPiBtX2VuY29kZWREYXRh
U3RhdHVzQ2hhbmdlZENhbGxiYWNrOworICAgIFNhbXBsZU1hcCBtX3NhbXBsZURhdGE7CisgICAg
RGVjb2RlT3JkZXJTYW1wbGVNYXA6Oml0ZXJhdG9yIG1fY3Vyc29yOworICAgIExvY2sgbV9zYW1w
bGVHZW5lcmF0b3JMb2NrOworICAgIGJvb2wgbV9lb3MgeyBmYWxzZSB9OworICAgIE9wdGlvbmFs
PEludFNpemU+IG1fc2l6ZTsKKyAgICBTdHJpbmcgbV9taW1lVHlwZTsKKyAgICBSZWZQdHI8SW1h
Z2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI+IG1faW5uZXJEZWNvZGVyOworfTsKKwor
fQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5oCmluZGV4IGQwYWQ2OTg2ZWIzNDM2NTk4ZDg4
ZDgzODAwY2QzNmJmOGVhMWNiODcuLjlkMWU1NTQyNWQ0YjJlYjQzYjY2YzI4ZDliY2Y0NjFlZDZh
ZWY2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9JbWFnZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5oCkBAIC0xNyw4ICsxNyw3IEBACiAgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqLwogCi0jaWZuZGVmIEltYWdlR1N0cmVhbWVyX2gK
LSNkZWZpbmUgSW1hZ2VHU3RyZWFtZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoVklE
RU8pICYmIFVTRShHU1RSRUFNRVIpCiAKQEAgLTM3LDQyICszNiw0NCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBJbnRTaXplOwogCiBjbGFzcyBJbWFnZUdTdHJlYW1lciA6IHB1YmxpYyBS
ZWZDb3VudGVkPEltYWdlR1N0cmVhbWVyPiB7Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMg
UmVmUHRyPEltYWdlR1N0cmVhbWVyPiBjcmVhdGVJbWFnZShHc3RTYW1wbGUqIHNhbXBsZSkKLSAg
ICAgICAgewotICAgICAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0UmVmKG5ldyBJbWFnZUdTdHJl
YW1lcihzYW1wbGUpKTsKLSAgICAgICAgICAgIGlmICghaW1hZ2UtPm1faW1hZ2UpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxJbWFn
ZUdTdHJlYW1lcj4gY3JlYXRlSW1hZ2UoR3N0U2FtcGxlKiBzYW1wbGUpCisgICAgeworICAgICAg
ICBhdXRvIGltYWdlID0gYWRvcHRSZWYobmV3IEltYWdlR1N0cmVhbWVyKHNhbXBsZSkpOworICAg
ICAgICBpZiAoIWltYWdlLT5tX2ltYWdlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICAgICAgICAgIHJldHVybiBpbWFnZTsKLSAgICAgICAgfQotICAgICAgICB+SW1hZ2VHU3Ry
ZWFtZXIoKTsKKyAgICAgICAgcmV0dXJuIGltYWdlOworICAgIH0KKyAgICB+SW1hZ2VHU3RyZWFt
ZXIoKTsKIAotICAgICAgICBCaXRtYXBJbWFnZSYgaW1hZ2UoKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBBU1NFUlQobV9pbWFnZSk7Ci0gICAgICAgICAgICByZXR1cm4gKm1faW1hZ2UuZ2V0KCk7
Ci0gICAgICAgIH0KKyAgICBCaXRtYXBJbWFnZSYgaW1hZ2UoKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKG1faW1hZ2UpOworICAgICAgICByZXR1cm4gKm1faW1hZ2UuZ2V0KCk7CisgICAgfQogCi0g
ICAgICAgIHZvaWQgc2V0Q3JvcFJlY3QoRmxvYXRSZWN0IHJlY3QpIHsgbV9jcm9wUmVjdCA9IHJl
Y3Q7IH0KLSAgICAgICAgRmxvYXRSZWN0IHJlY3QoKQotICAgICAgICB7Ci0gICAgICAgICAgICBB
U1NFUlQobV9pbWFnZSk7Ci0gICAgICAgICAgICBpZiAoIW1fY3JvcFJlY3QuaXNFbXB0eSgpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBGbG9hdFJlY3QobV9jcm9wUmVjdCk7Ci0gICAgICAgICAg
ICByZXR1cm4gRmxvYXRSZWN0KDAsIDAsIG1faW1hZ2UtPnNpemUoKS53aWR0aCgpLCBtX2ltYWdl
LT5zaXplKCkuaGVpZ2h0KCkpOwotICAgICAgICB9CisgICAgdm9pZCBzZXRDcm9wUmVjdChGbG9h
dFJlY3QgcmVjdCkgeyBtX2Nyb3BSZWN0ID0gcmVjdDsgfQorICAgIEZsb2F0UmVjdCByZWN0KCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChtX2ltYWdlKTsKKyAgICAgICAgaWYgKCFtX2Nyb3BSZWN0
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBGbG9hdFJlY3QobV9jcm9wUmVjdCk7Cisg
ICAgICAgIHJldHVybiBGbG9hdFJlY3QoMCwgMCwgbV9pbWFnZS0+c2l6ZSgpLndpZHRoKCksIG1f
aW1hZ2UtPnNpemUoKS5oZWlnaHQoKSk7CisgICAgfQogCi0gICAgcHJpdmF0ZToKLSAgICAgICAg
SW1hZ2VHU3RyZWFtZXIoR3N0U2FtcGxlKik7Ci0gICAgICAgIFJlZlB0cjxCaXRtYXBJbWFnZT4g
bV9pbWFnZTsKLSAgICAgICAgRmxvYXRSZWN0IG1fY3JvcFJlY3Q7CisgICAgYm9vbCBoYXNBbHBo
YSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzQWxwaGE7IH0KKworcHJpdmF0ZToKKyAgICBJbWFnZUdT
dHJlYW1lcihHc3RTYW1wbGUqKTsKKyAgICBSZWZQdHI8Qml0bWFwSW1hZ2U+IG1faW1hZ2U7Cisg
ICAgRmxvYXRSZWN0IG1fY3JvcFJlY3Q7CiAjaWYgVVNFKENBSVJPKQotICAgICAgICBHc3RWaWRl
b0ZyYW1lIG1fdmlkZW9GcmFtZTsKLSAgICAgICAgYm9vbCBtX2ZyYW1lTWFwcGVkIHsgZmFsc2Ug
fTsKKyAgICBHc3RWaWRlb0ZyYW1lIG1fdmlkZW9GcmFtZTsKKyAgICBib29sIG1fZnJhbWVNYXBw
ZWQgeyBmYWxzZSB9OwogI2VuZGlmCi0gICAgfTsKLX0KKyAgICBib29sIG1faGFzQWxwaGEgeyBm
YWxzZSB9OworfTsKIAotI2VuZGlmIC8vIFVTRShHU1RSRUFNRVIpCi0jZW5kaWYKK30KKyNlbmRp
ZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJDYWlyby5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3Ry
ZWFtZXJDYWlyby5jcHAKaW5kZXggNjdkMGYwYmNhMjUyOTE1NjA0NTc5YmM0NmU3NTEzYjhhZjRj
MzExOS4uYmM4MDY2NDQ5NmYzOTllOTZlY2I2ZGEzYzAwZDMyOWIzZTRhM2E3OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVh
bWVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9JbWFnZUdTdHJlYW1lckNhaXJvLmNwcApAQCAtNDIsNiArNDIsOCBAQCBJbWFnZUdTdHJl
YW1lcjo6SW1hZ2VHU3RyZWFtZXIoR3N0U2FtcGxlKiBzYW1wbGUpCiAgICAgLy8gUmlnaHQgbm93
IHRoZSBUZXh0dXJlTWFwcGVyIG9ubHkgc3VwcG9ydHMgY2hyb21hcyB3aXRoIG9uZSBwbGFuZQog
ICAgIEFTU0VSVChHU1RfVklERU9fSU5GT19OX1BMQU5FUygmdmlkZW9JbmZvKSA9PSAxKTsKIAor
ICAgIG1faGFzQWxwaGEgPSBHU1RfVklERU9fSU5GT19IQVNfQUxQSEEoJnZpZGVvSW5mbyk7CisK
ICAgICBHc3RCdWZmZXIqIGJ1ZmZlciA9IGdzdF9zYW1wbGVfZ2V0X2J1ZmZlcihzYW1wbGUpOwog
ICAgIGlmIChVTkxJS0VMWSghR1NUX0lTX0JVRkZFUihidWZmZXIpKSkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhU2FtcGxlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaAppbmRleCBlZDMxNjZkM2EwY2M3ODEx
OWZkYWY5ZTViMWVkYjNhYmU5YjQwMmI1Li4xZGZiM2NkMDhkYzM1ZWU4MDY1YmJmYmU3NzlhYjNj
ZTk2MTE1ZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaApAQCAtMjksNyAr
MjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIE1lZGlhU2FtcGxlR1N0cmVh
bWVyIGZpbmFsIDogcHVibGljIE1lZGlhU2FtcGxlIHsKK2NsYXNzIE1lZGlhU2FtcGxlR1N0cmVh
bWVyIDogcHVibGljIE1lZGlhU2FtcGxlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1lZGlh
U2FtcGxlR1N0cmVhbWVyPiBjcmVhdGUoR1JlZlB0cjxHc3RTYW1wbGU+JiYgc2FtcGxlLCBjb25z
dCBGbG9hdFNpemUmIHByZXNlbnRhdGlvblNpemUsIGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSWQp
CiAgICAgewpAQCAtNTUsMTEgKzU1LDEzIEBAIHB1YmxpYzoKICAgICBQbGF0Zm9ybVNhbXBsZSBw
bGF0Zm9ybVNhbXBsZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNv
bnN0IG92ZXJyaWRlOwogCi1wcml2YXRlOgorcHJvdGVjdGVkOgogICAgIE1lZGlhU2FtcGxlR1N0
cmVhbWVyKEdSZWZQdHI8R3N0U2FtcGxlPiYmLCBjb25zdCBGbG9hdFNpemUmIHByZXNlbnRhdGlv
blNpemUsIGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSWQpOwotICAgIE1lZGlhU2FtcGxlR1N0cmVh
bWVyKGNvbnN0IEZsb2F0U2l6ZSYgcHJlc2VudGF0aW9uU2l6ZSwgY29uc3QgQXRvbVN0cmluZyYg
dHJhY2tJZCk7CiAgICAgdmlydHVhbCB+TWVkaWFTYW1wbGVHU3RyZWFtZXIoKSA9IGRlZmF1bHQ7
CiAKK3ByaXZhdGU6CisgICAgTWVkaWFTYW1wbGVHU3RyZWFtZXIoY29uc3QgRmxvYXRTaXplJiBw
cmVzZW50YXRpb25TaXplLCBjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lkKTsKKwogICAgIE1lZGlh
VGltZSBtX3B0czsKICAgICBNZWRpYVRpbWUgbV9kdHM7CiAgICAgTWVkaWFUaW1lIG1fZHVyYXRp
b247CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggZGQ5Y2NkOWFmNTNmM2JiZTgyYzVjM2RhNWIzYTMwYjFjZmYwMWNhZi4uNWE2
M2YyZDU2NmRjMTdhNzUxMmQ2YTk3Y2E2NTRhMGRhNDQ4NzAxMCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3
IEBACisyMDIwLTA1LTE3ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4K
KworICAgICAgICBbR1N0cmVhbWVyXSA8aW1nPiB0YWcgbmVlZHMgdG8gc3VwcG9ydCB2aWRlbyBm
b3JtYXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODAzNzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGUgVGVzdEV4cGVjdGF0aW9ucyBmb3IgdGVzdHMgdXNpbmcgdmlkZW9zIGZvciB0aGUgPGlt
Zz4gdGFnLgorICAgICAgICAKKyAgICAgICAgKiBodHRwL2NvbmYvZmxhdHBhay1odHRwZC5jb25m
OgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS93cGUvVGVz
dEV4cGVjdGF0aW9uczoKKwogMjAyMC0wNS0xNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2Fy
Y2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gTW92ZSB0byBuZXcgUGFzdGVib2FyZCBB
UEkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvY29uZi9mbGF0cGFrLWh0dHBkLmNvbmYg
Yi9MYXlvdXRUZXN0cy9odHRwL2NvbmYvZmxhdHBhay1odHRwZC5jb25mCmluZGV4IGNhOWM5YTg5
OGNiZjg0YjA4NDQzODE5OTI2ZmU1NzAzMTJiMjMwZjYuLmE3NGY1NmU2NmFmYmE3Zjk1OWY2MzFk
NjI1MWRjNDIyMmY1YjBmZDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvY29uZi9mbGF0
cGFrLWh0dHBkLmNvbmYKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC9jb25mL2ZsYXRwYWstaHR0cGQu
Y29uZgpAQCAtNTIsOCArNTIsNiBAQCBBY2Nlc3NGaWxlTmFtZSAuaHRhY2Nlc3MKIFVzZUNhbm9u
aWNhbE5hbWUgT24KIEhvc3RuYW1lTG9va3VwcyBPZmYKIAotVHlwZXNDb25maWcgL3Vzci9jb25m
L21pbWUudHlwZXMKLQogTG9nTGV2ZWwgd2FybgogTG9nRm9ybWF0ICIlaCAlbCAldSAldCBcIiVy
XCIgJT5zICViIFwiJXtSZWZlcmVyfWlcIiBcIiV7VXNlci1BZ2VudH1pXCIiIGNvbWJpbmVkCiBM
b2dGb3JtYXQgIiVoICVsICV1ICV0IFwiJXJcIiAlPnMgJWIiIGNvbW1vbgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGE1NWYyNjRmYWZiNTA2Y2E4NTc5
MGUxNmNjMWRmMWEzZTVkZDAyODcuLmZjMmU2NGNjMmE1ODMwZTQ1MDgyM2MwZjA5Y2RhNzZlMTk2
ODYwM2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0
aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTc0LDYgKzc0LDggQEAKICMgMi4gRVhQRUNURUQgRkFJTFVSRVMKICMvLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vCiAKK3dlYmtpdC5vcmcvYi8yMTE5OTUgZmFzdC9pbWFnZXMvYW5pbWF0
ZWQtaW1hZ2UtbXA0Lmh0bWwgWyBGYWlsdXJlIF0KKwogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8KICMgRW5kIG9mIEV4cGVjdGVkIEZhaWx1cmVzCiAjLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCA2ZDk1M2ZmZGVmZTc2NjkwZGVmZDBjMjFhZGEwMmM5MTg1ZjY4YTAwLi41Nzk4YWVlOWFm
NDQ3NjBjOWYzYzI3MWY5MzQzNzliMTcyYTBkNDBlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTA3MCwxMSArMTA3MCw2IEBAIHdlYmtpdC5vcmcvYi8x
NzU0MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9iYWNrZ3JvdW5kLWZldGNoL2lu
dGVyZmFjZXMtCiB3ZWJraXQub3JnL2IvMTc1NDE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvYmFja2dyb3VuZC1mZXRjaC9pbnRlcmZhY2VzLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtp
dC5vcmcvYi8xNzU0MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkv
YWJvcnQvc2VydmljZXdvcmtlci1pbnRlcmNlcHRlZC5odHRwcy5odG1sIFsgRmFpbHVyZSBQYXNz
IF0KIAotIyBMb2FkaW5nIE1QNCBhcyBhbiBpbWFnZSBpcyBub3Qgc3VwcG9ydGVkIGJ5IEdUSwot
d2Via2l0Lm9yZy9iLzE4MDM3MCBmYXN0L2ltYWdlcy9hbmltYXRlZC1pbWFnZS1tcDQuaHRtbCBb
IFNraXAgXQotd2Via2l0Lm9yZy9iLzE4MDM3MCBodHRwL3Rlc3RzL2ltYWdlcy9pbWFnZS1zdXBw
b3J0cy12aWRlby5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTgwMzcwIGZhc3QvaW1hZ2Vz
L2FuaW1hdGVkLWltYWdlLW1wNC1jcmFzaC5odG1sIFsgU2tpcCBdCi0KICMgR1RLIG91Z2h0IHRv
IHN1cHBvcnQgYXN5bmMgY2xpcGJvYXJkCiB3ZWJraXQub3JnL2IvMjExOTc5IGVkaXRpbmcvYXN5
bmMtY2xpcGJvYXJkL2NsaXBib2FyZC1jaGFuZ2UtZGF0YS13aGlsZS13cml0aW5nLmh0bWwgWyBG
YWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMTE5NzkgZWRpdGluZy9hc3luYy1jbGlwYm9hcmQvY2xp
cGJvYXJkLXJlYWQtdGV4dC1mcm9tLXBsYXRmb3JtLmh0bWwgWyBGYWlsdXJlIF0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dwZS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZjk2ZWY2MDljNjU3YjdkOTYx
NGVlYjc3ZTY0ZTEyM2U2NmQ2NTNmOC4uOGE5OTE5MmQ5YzQ2YTBjZGE4M2M0NTgxOGI3NjE4NjM2
NDcyNDY3ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3Rh
dGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTM2NywxMSArMzY3LDYgQEAgQnVnKFdQRSkgZmFzdC9yZXBsYWNlZC9wZGYtYXMtb2JqZWN0LWFu
ZC1lbWJlZC5odG1sIFsgU2tpcCBdCiAKIEJ1ZyhXUEUpIGZhc3QvaGlkcGkvcGRmLWltYWdlLXNj
YWxlZC5odG1sIFsgU2tpcCBdCiAKLSMgTG9hZGluZyBNUDQgYXMgYW4gaW1hZ2UgaXMgbm90IHN1
cHBvcnRlZAotd2Via2l0Lm9yZy9iLzE4MDM3MCBmYXN0L2ltYWdlcy9hbmltYXRlZC1pbWFnZS1t
cDQuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzE4MDM3MCBmYXN0L2ltYWdlcy9hbmltYXRl
ZC1pbWFnZS1tcDQtY3Jhc2guaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzE4MDM3MCBodHRw
L3Rlc3RzL2ltYWdlcy9pbWFnZS1zdXBwb3J0cy12aWRlby5odG1sIFsgU2tpcCBdCi0KICMgT25s
eSBNYWMgaGFzIGltcGxlbWVudGVkIERpY3Rpb25hcnlMb29rdXAKIGZhc3QvbGF5ZXJzL3ByZXZl
bnQtaGl0LXRlc3QtZHVyaW5nLWxheW91dC5odG1sIFsgU2tpcCBdCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399594</attachid>
            <date>2020-05-17 09:58:29 -0700</date>
            <delta_ts>2020-05-20 02:10:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180370-20200517175827.patch</filename>
            <type>text/plain</type>
            <size>33624</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDFlNWRlZmFiZmM3ZGRj
ZWQxMWIyNGNiYmJmZTJlOTMzMDA3YzdhZC4uZTc5Nzg5ZWNlMWMxM2M4OWIyZGRkMDM3NmI1Nzcy
NTg3M2EzZjAwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIwLTA1LTE3ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVy
XSA8aW1nPiB0YWcgbmVlZHMgdG8gc3VwcG9ydCB2aWRlbyBmb3JtYXRzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAzNzAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHU3RyZWFtZXIgaW1wbGVtZW50YXRp
b24gb2YgdGhlIEltYWdlRGVjb2Rlci4gSXQgY3VycmVudGx5IGRvZXNuJ3Qgc3VwcG9ydCB6ZXJv
LWNvcHkKKyAgICAgICAgcmVuZGVyaW5nIHRob3VnaCBkdWUgdG8gdGhlIHRoZSBOYXRpdmVJbWFn
ZVB0ciByZXF1aXJlbWVudC4KKworICAgICAgICAqIHBsYXRmb3JtL0dTdHJlYW1lci5jbWFrZToK
KyAgICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VWaWRlb09yU1ZHTUlNRVR5cGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXI6OnN1cHBvcnRzTWVkaWFUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjp0b1NhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFt
ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6Oklt
YWdlRGVjb2RlckdTdHJlYW1lcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3Ry
ZWFtZXI6OnN1cHBvcnRzQ29udGFpbmVyVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURl
Y29kZXJHU3RyZWFtZXI6OmNhbkRlY29kZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyOjplbmNvZGVkRGF0YVN0YXR1cyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpyZXBldGl0aW9uQ291bnQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjp1dGkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpmcmFtZU9yaWVudGF0aW9uQXRJbmRleCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OmZyYW1lRHVy
YXRpb25BdEluZGV4IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJl
YW1lcjo6ZnJhbWVIYXNBbHBoYUF0SW5kZXggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVyR1N0cmVhbWVyOjpmcmFtZUJ5dGVzQXRJbmRleCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6c2V0RGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNsZWFyRnJhbWVCdWZmZXJDYWNo
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OnNhbXBsZUF0SW5k
ZXggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5l
ckRlY29kZXI6OmRlY29kZWJpblBhZEFkZGVkQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmNvbm5lY3REZWNvZGVyUGFkKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6aGFuZGxlU2FtcGxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpo
YW5kbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6
SW5uZXJEZWNvZGVyOjpwcmVwYXJlUGlwZWxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OnJ1bik6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2Rl
ZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29k
ZXJHU3RyZWFtZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0ltYWdlR1N0cmVhbWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUdTdHJlYW1lcjo6
Y3JlYXRlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VHU3RyZWFtZXI6OmltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlR1N0cmVhbWVyOjpzZXRDcm9wUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUdTdHJlYW1lcjo6cmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUdTdHJlYW1lcjo6aGFzQWxwaGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlR1N0cmVhbWVyOjpJbWFnZUdTdHJlYW1lcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmg6CisKIDIwMjAtMDUtMTcgIFphbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtCRkNdIEludHJvZHVj
ZSBUYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9HU3RyZWFtZXIuY21ha2UKaW5kZXggODM0N2JiYzZhOTAwYWUyZWMyY2U1OTMxM2I5OGZkMWEx
N2FiMzVmMS4uMTYwOWU5MWJjMGQ0NWQyYjdjZDFmNjY2ZDQxYzAzOTE0ZWFjYWI0OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1lci5jbWFrZQpAQCAtMTMsNiArMTMsNyBAQCBpZiAo
RU5BQkxFX1ZJREVPIE9SIEVOQUJMRV9XRUJfQVVESU8pCiAgICAgICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9Hc3RBbGxvY2F0b3JGYXN0TWFsbG9jLmNwcAogICAgICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcAogICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9GcmFtZUhvbGRlci5j
cHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJl
YW1lci5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRU
cmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5R1N0cmVhbWVyLmNwcAogICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3Ry
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAppbmRl
eCAwOTVlNTBhZjNkZDY3MTMyMmY0NzZiYjRiNWQ0ZjdkZThhNTJhNWRhLi5iYjJlZjlhOTg1MDli
NTBhMzE4YjY5MWNlZWUwNjFjNTQzZDllOGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApAQCAtNTgsNiArNTgsMTAgQEAKICNpbmNsdWRlICJQcmV2
aWV3Q29udmVydGVyLmgiCiAjZW5kaWYKIAorI2lmIFVTRShHU1RSRUFNRVIpCisjaW5jbHVkZSAi
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgTUlNRVR5
cGVSZWdpc3RyeTo6c3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKQpAQCAtNDM2LDYgKzQ0MCwxMSBA
QCBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VWaWRlb09yU1ZHTUlNRVR5
cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgog
CisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICBpZiAoSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpzdXBw
b3J0c0NvbnRhaW5lclR5cGUobWltZVR5cGUpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRp
ZgorCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBjNTRiMzg4ODc0NGI0NTgwMThiN2M0
NmRjMWQ5NjMzMmZjM2U4NTNjLi5hNWMxMjZlYWE2NGYxN2IzMjgzZTJhODBiZDBlZWIxZDZiODY4
NGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURl
Y29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVj
b2Rlci5jcHAKQEAgLTM4LDYgKzM4LDEwIEBACiAjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyQVZGT2Jq
Qy5oIgogI2VuZGlmCiAKKyNpZiBVU0UoR1NUUkVBTUVSKQorI2luY2x1ZGUgIkltYWdlRGVjb2Rl
ckdTdHJlYW1lci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVmUHRyPElt
YWdlRGVjb2Rlcj4gSW1hZ2VEZWNvZGVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCkBAIC00OSw2ICs1Mywx
MSBAQCBSZWZQdHI8SW1hZ2VEZWNvZGVyPiBJbWFnZURlY29kZXI6OmNyZWF0ZShTaGFyZWRCdWZm
ZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZQogICAgICAgICByZXR1cm4gSW1hZ2VEZWNvZGVy
QVZGT2JqQzo6Y3JlYXRlKGRhdGEsIG1pbWVUeXBlLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pOwogI2VuZGlmCiAKKyNpZiBVU0UoR1NUUkVBTUVSKQorICAgIGlmIChJ
bWFnZURlY29kZXJHU3RyZWFtZXI6OmNhbkRlY29kZVR5cGUobWltZVR5cGUpKQorICAgICAgICBy
ZXR1cm4gSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGUoZGF0YSwgbWltZVR5cGUsIGFscGhh
T3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisjZW5kaWYKKwogI2lmIFVTRShD
RykKICAgICByZXR1cm4gSW1hZ2VEZWNvZGVyQ0c6OmNyZWF0ZShkYXRhLCBhbHBoYU9wdGlvbiwg
Z2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogI2VsaWYgVVNFKERJUkVDVDJEKQpAQCAtNzYs
NiArODUsMTEgQEAgYm9vbCBJbWFnZURlY29kZXI6OnN1cHBvcnRzTWVkaWFUeXBlKE1lZGlhVHlw
ZSB0eXBlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogCisjaWYgVVNFKEdTVFJFQU1F
UikKKyAgICBpZiAoSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpzdXBwb3J0c01lZGlhVHlwZSh0eXBl
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKwogICAgIHJldHVybiBmYWxzZTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZjY5
MTM3N2Q2OTdkOTYzZDRhN2FjZWU3N2Y0MDhkYmU3MjZlZDAzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdT
dHJlYW1lci5jcHAKQEAgLTAsMCArMSwzNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
SWdhbGlhIFMuTAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbWFnZURlY29kZXJHU3Ry
ZWFtZXIuaCIKKworI2lmIFVTRShHU1RSRUFNRVIpCisKKyNpbmNsdWRlICJGbG9hdFNpemUuaCIK
KyNpbmNsdWRlICJHU3RyZWFtZXJDb21tb24uaCIKKyNpbmNsdWRlICJHU3RyZWFtZXJSZWdpc3Ry
eVNjYW5uZXIuaCIKKyNpbmNsdWRlICJJbWFnZUdTdHJlYW1lci5oIgorI2luY2x1ZGUgIk1lZGlh
U2FtcGxlR1N0cmVhbWVyLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRl
IDxnc3QvYXBwL2dzdGFwcHNpbmsuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitHU1RfREVCVUdfQ0FURUdPUlkod2Via2l0X2ltYWdlX2RlY29k
ZXJfZGVidWcpOworI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgd2Via2l0X2ltYWdlX2RlY29kZXJf
ZGVidWcKKworY2xhc3MgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlIGZpbmFsIDogcHVibGlj
IE1lZGlhU2FtcGxlR1N0cmVhbWVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEltYWdlRGVj
b2RlckdTdHJlYW1lclNhbXBsZT4gY3JlYXRlKEdSZWZQdHI8R3N0U2FtcGxlPiYmIHNhbXBsZSwg
Y29uc3QgRmxvYXRTaXplJiBwcmVzZW50YXRpb25TaXplKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlKFdURk1vdmUoc2FtcGxl
KSwgcHJlc2VudGF0aW9uU2l6ZSkpOworICAgIH0KKworICAgIE5hdGl2ZUltYWdlUHRyIGltYWdl
KCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghbV9pbWFnZSkKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICByZXR1cm4gbV9pbWFnZS0+aW1hZ2UoKS5uYXRpdmVJbWFnZSgp
OworICAgIH0KKyAgICB2b2lkIGRyb3BJbWFnZSgpIHsgbV9pbWFnZSA9IG51bGxwdHI7IH0KKwor
ICAgIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJl
dHVybiAoU2FtcGxlRmxhZ3MpKE1lZGlhU2FtcGxlR1N0cmVhbWVyOjpmbGFncygpIHwgKG1faW1h
Z2UgJiYgbV9pbWFnZS0+aGFzQWxwaGEoKSA/IEhhc0FscGhhIDogMCkpOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBJbWFnZURlY29kZXJHU3RyZWFtZXJTYW1wbGUoR1JlZlB0cjxHc3RTYW1wbGU+
JiYgc2FtcGxlLCBjb25zdCBGbG9hdFNpemUmIHByZXNlbnRhdGlvblNpemUpCisgICAgICAgIDog
TWVkaWFTYW1wbGVHU3RyZWFtZXIoV1RGTW92ZShzYW1wbGUpLCBwcmVzZW50YXRpb25TaXplLCB7
IH0pCisgICAgeworICAgICAgICBtX2ltYWdlID0gSW1hZ2VHU3RyZWFtZXI6OmNyZWF0ZUltYWdl
KGdzdF9zYW1wbGVfcmVmKHBsYXRmb3JtU2FtcGxlKCkuc2FtcGxlLmdzdFNhbXBsZSkpOworICAg
IH0KKworICAgIFJlZlB0cjxJbWFnZUdTdHJlYW1lcj4gbV9pbWFnZTsKK307CisKK3N0YXRpYyBJ
bWFnZURlY29kZXJHU3RyZWFtZXJTYW1wbGUqIHRvU2FtcGxlKGNvbnN0IFByZXNlbnRhdGlvbk9y
ZGVyU2FtcGxlTWFwOjp2YWx1ZV90eXBlJiBwYWlyKQoreworICAgIHJldHVybiAoSW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyU2FtcGxlKilwYWlyLnNlY29uZC5nZXQoKTsKK30KKwordGVtcGxhdGUgPHR5
cGVuYW1lIEl0ZXJhdG9yPgorSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlKiB0b1NhbXBsZShJ
dGVyYXRvciBpdGVyKQoreworICAgIHJldHVybiAoSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxl
KilpdGVyLT5zZWNvbmQuZ2V0KCk7Cit9CisKK1JlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+
IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQoreworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEltYWdlRGVjb2RlckdTdHJlYW1lcihkYXRhLCBtaW1lVHlwZSwgYWxwaGFP
cHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7Cit9CisKK0ltYWdlRGVjb2RlckdT
dHJlYW1lcjo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KQorICAgIDogbV9taW1lVHlwZShtaW1lVHlwZSkKK3sKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2Zs
YWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAg
R1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQod2Via2l0X2ltYWdlX2RlY29kZXJfZGVidWcsICJ3ZWJr
aXRpbWFnZWRlY29kZXIiLCAwLCAiV2ViS2l0IGltYWdlIGRlY29kZXIiKTsKKyAgICB9KTsKKwor
ICAgIHB1c2hFbmNvZGVkRGF0YShkYXRhKTsKK30KKworYm9vbCBJbWFnZURlY29kZXJHU3RyZWFt
ZXI6OnN1cHBvcnRzQ29udGFpbmVyVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCit7CisgICAgcmV0
dXJuIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6c2luZ2xldG9uKCkuaXNDb250YWluZXJUeXBl
U3VwcG9ydGVkKHR5cGUpOworfQorCitib29sIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y2FuRGVj
b2RlVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIGlmIChtaW1lVHlwZS5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBHU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXI6OnNpbmdsZXRvbigpLmlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChtaW1lVHlw
ZSk7Cit9CisKK0VuY29kZWREYXRhU3RhdHVzIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6ZW5jb2Rl
ZERhdGFTdGF0dXMoKSBjb25zdAoreworICAgIGlmIChtX2VvcykKKyAgICAgICAgcmV0dXJuIEVu
Y29kZWREYXRhU3RhdHVzOjpDb21wbGV0ZTsKKyAgICBpZiAobV9zaXplKQorICAgICAgICByZXR1
cm4gRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFpbGFibGU7CisgICAgaWYgKG1faW5uZXJEZWNv
ZGVyKQorICAgICAgICByZXR1cm4gbV9pbm5lckRlY29kZXItPmVuY29kZWREYXRhU3RhdHVzKCk7
CisKKyAgICByZXR1cm4gRW5jb2RlZERhdGFTdGF0dXM6OlVua25vd247Cit9CisKK0ludFNpemUg
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpzaXplKCkgY29uc3QKK3sKKyAgICBpZiAobV9zaXplKQor
ICAgICAgICByZXR1cm4gbV9zaXplLnZhbHVlKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKworUmVw
ZXRpdGlvbkNvdW50IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6cmVwZXRpdGlvbkNvdW50KCkgY29u
c3QKK3sKKyAgICAvLyBJbiB0aGUgYWJzZW5jZSBvZiBpbnN0cnVjdGlvbnMgdG8gdGhlIGNvbnRy
YXJ5LCBhc3N1bWUgYWxsIG1lZGlhIGZvcm1hdHMgcmVwZWF0IGluZmluaXRlbHkuCisgICAgcmV0
dXJuIGZyYW1lQ291bnQoKSA+IDEgPyBSZXBldGl0aW9uQ291bnRJbmZpbml0ZSA6IFJlcGV0aXRp
b25Db3VudE5vbmU7Cit9CisKK1N0cmluZyBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnV0aSgpIGNv
bnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4geyB9OworfQorCitJbWFn
ZU9yaWVudGF0aW9uIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6ZnJhbWVPcmllbnRhdGlvbkF0SW5k
ZXgoc2l6ZV90KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIElt
YWdlT3JpZW50YXRpb246Ok5vbmU7Cit9CisKK1NlY29uZHMgSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
OjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgYXV0byog
c2FtcGxlRGF0YSA9IHNhbXBsZUF0SW5kZXgoaW5kZXgpOworICAgIGlmICghc2FtcGxlRGF0YSkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBTZWNvbmRzKHNhbXBsZURhdGEtPmR1
cmF0aW9uKCkudG9Eb3VibGUoKSk7Cit9CisKK2Jvb2wgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpm
cmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgYXV0byogc2Ft
cGxlRGF0YSA9IHNhbXBsZUF0SW5kZXgoaW5kZXgpOworICAgIHJldHVybiBzYW1wbGVEYXRhID8g
c2FtcGxlRGF0YS0+aGFzQWxwaGEoKSA6IGZhbHNlOworfQorCit1bnNpZ25lZCBJbWFnZURlY29k
ZXJHU3RyZWFtZXI6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdM
ZXZlbCBzdWJzYW1wbGluZ0xldmVsKSBjb25zdAoreworICAgIGlmICghZnJhbWVJc0NvbXBsZXRl
QXRJbmRleChpbmRleCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgSW50U2l6ZSBmcmFtZVNp
emUgPSBmcmFtZVNpemVBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICByZXR1
cm4gKGZyYW1lU2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKTsKK30KKworTmF0aXZlSW1hZ2VQ
dHIgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3Qg
aW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCit7CisgICAg
TG9ja0hvbGRlciBob2xkZXIgeyBtX3NhbXBsZUdlbmVyYXRvckxvY2sgfTsKKworICAgIGF1dG8q
IHNhbXBsZURhdGEgPSBzYW1wbGVBdEluZGV4KGluZGV4KTsKKyAgICBpZiAoIXNhbXBsZURhdGEp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKGF1dG8gaW1hZ2UgPSBzYW1wbGVE
YXRhLT5pbWFnZSgpKQorICAgICAgICByZXR1cm4gaW1hZ2U7CisKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKwordm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnNldERhdGEoU2hhcmVkQnVmZmVy
JiBkYXRhLCBib29sKQoreworICAgIHB1c2hFbmNvZGVkRGF0YShkYXRhKTsKK30KKwordm9pZCBJ
bWFnZURlY29kZXJHU3RyZWFtZXI6OmNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QgaW5kZXgp
Cit7CisgICAgc2l6ZV90IGkgPSAwOworICAgIGZvciAoYXV0byYgc2FtcGxlUGFpciA6IG1fc2Ft
cGxlRGF0YS5wcmVzZW50YXRpb25PcmRlcigpKSB7CisgICAgICAgIHRvU2FtcGxlKHNhbXBsZVBh
aXIpLT5kcm9wSW1hZ2UoKTsKKyAgICAgICAgaWYgKCsraSA+IGluZGV4KQorICAgICAgICAgICAg
YnJlYWs7CisgICAgfQorfQorCitjb25zdCBJbWFnZURlY29kZXJHU3RyZWFtZXJTYW1wbGUqIElt
YWdlRGVjb2RlckdTdHJlYW1lcjo6c2FtcGxlQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Cit7
CisgICAgaWYgKGluZGV4ID49IG1fc2FtcGxlRGF0YS5wcmVzZW50YXRpb25PcmRlcigpLnNpemUo
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBGSVhNRTogc3RkOjptYXAgaXMg
bm90IHJhbmRvbS1hY2Nlc3NpYmxlOyB0aGlzIGNhbiBnZXQgZXhwZW5zaXZlIGlmIGNhbGxlcnMg
cmVwZWF0ZWRseSBjYWxsCisgICAgLy8gd2l0aCBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaW5k
ZXhlcy4gSW52ZXN0aWdhdGUgYWRkaW5nIGFuIE8oMSkgc2lkZSBzdHJ1Y3R1cmUgdG8gbWFrZSB0
aGlzCisgICAgLy8gc3R5bGUgb2YgYWNjZXNzIGZhc3Rlci4KKyAgICBhdXRvIGl0ZXIgPSBtX3Nh
bXBsZURhdGEucHJlc2VudGF0aW9uT3JkZXIoKS5iZWdpbigpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpICE9IGluZGV4OyArK2kpCisgICAgICAgICsraXRlcjsKKworICAgIHJldHVybiB0b1Nh
bXBsZShpdGVyKTsKK30KKwordm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rl
cjo6ZGVjb2RlYmluUGFkQWRkZWRDYWxsYmFjayhJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVy
RGVjb2RlciogZGVjb2RlciwgR3N0UGFkKiBwYWQpCit7CisgICAgZGVjb2Rlci0+Y29ubmVjdERl
Y29kZXJQYWQocGFkKTsKK30KKwordm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVj
b2Rlcjo6Y29ubmVjdERlY29kZXJQYWQoR3N0UGFkKiBwYWQpCit7CisgICAgYXV0byBwYWRDYXBz
ID0gYWRvcHRHUmVmKGdzdF9wYWRfZ2V0X2N1cnJlbnRfY2FwcyhwYWQpKTsKKyAgICBHU1RfREVC
VUdfT0JKRUNUKG1fcGlwZWxpbmUuZ2V0KCksICJOZXcgZGVjb2RlYmluIHBhZCAlIiBHU1RfUFRS
X0ZPUk1BVCAiIGNhcHM6ICUiIEdTVF9QVFJfRk9STUFULCBwYWQsIHBhZENhcHMuZ2V0KCkpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKGRvQ2Fwc0hhdmVUeXBlKHBhZENhcHMuZ2V0KCksICJ2aWRlbyIp
KTsKKworICAgIEdzdEVsZW1lbnQqIHNpbmsgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImFw
cHNpbmsiLCBudWxscHRyKTsKKyAgICBzdGF0aWMgR3N0QXBwU2lua0NhbGxiYWNrcyBjYWxsYmFj
a3MgPSB7CisgICAgICAgIG51bGxwdHIsCisgICAgICAgIFtdKEdzdEFwcFNpbmsqIHNpbmssIGdw
b2ludGVyIHVzZXJEYXRhKSAtPiBHc3RGbG93UmV0dXJuIHsKKyAgICAgICAgICAgIGF1dG8gc2Ft
cGxlID0gYWRvcHRHUmVmKGdzdF9hcHBfc2lua190cnlfcHVsbF9wcmVyb2xsKHNpbmssIDApKTsK
KyAgICAgICAgICAgIHN0YXRpY19jYXN0PEltYWdlRGVjb2RlckdTdHJlYW1lcio+KHVzZXJEYXRh
KS0+aGFuZGxlU2FtcGxlKFdURk1vdmUoc2FtcGxlKSk7CisgICAgICAgICAgICByZXR1cm4gR1NU
X0ZMT1dfT0s7CisgICAgICAgIH0sCisgICAgICAgIFtdKEdzdEFwcFNpbmsqIHNpbmssIGdwb2lu
dGVyIHVzZXJEYXRhKSAtPiBHc3RGbG93UmV0dXJuIHsKKyAgICAgICAgICAgIGF1dG8gc2FtcGxl
ID0gYWRvcHRHUmVmKGdzdF9hcHBfc2lua190cnlfcHVsbF9zYW1wbGUoc2luaywgMCkpOworICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyKj4odXNlckRhdGEpLT5o
YW5kbGVTYW1wbGUoV1RGTW92ZShzYW1wbGUpKTsKKyAgICAgICAgICAgIHJldHVybiBHU1RfRkxP
V19PSzsKKyAgICAgICAgfSwKKyAgICAgICAgeyBudWxscHRyIH0KKyAgICB9OworICAgIGdzdF9h
cHBfc2lua19zZXRfY2FsbGJhY2tzKEdTVF9BUFBfU0lOSyhzaW5rKSwgJmNhbGxiYWNrcywgbV9k
ZWNvZGVyLCBudWxscHRyKTsKKworICAgIEdSZWZQdHI8R3N0Q2Fwcz4gY2FwcyA9IGFkb3B0R1Jl
Zihnc3RfY2Fwc19mcm9tX3N0cmluZygidmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVJHQkEi
KSk7CisgICAgZ19vYmplY3Rfc2V0KHNpbmssICJzeW5jIiwgZmFsc2UsICJjYXBzIiwgY2Fwcy5n
ZXQoKSwgbnVsbHB0cik7CisKKyAgICBHc3RFbGVtZW50KiB2aWRlb2NvbnZlcnQgPSBnc3RfZWxl
bWVudF9mYWN0b3J5X21ha2UoInZpZGVvY29udmVydCIsIG51bGxwdHIpOworCisgICAgZ3N0X2Jp
bl9hZGRfbWFueShHU1RfQklOX0NBU1QobV9waXBlbGluZS5nZXQoKSksIHZpZGVvY29udmVydCwg
c2luaywgbnVsbHB0cik7CisgICAgZ3N0X2VsZW1lbnRfbGluayh2aWRlb2NvbnZlcnQsIHNpbmsp
OworICAgIGF1dG8gc2lua1BhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRfc3RhdGljX3Bh
ZCh2aWRlb2NvbnZlcnQsICJzaW5rIikpOworICAgIGdzdF9wYWRfbGluayhwYWQsIHNpbmtQYWQu
Z2V0KCkpOworICAgIGdzdF9lbGVtZW50X3N5bmNfc3RhdGVfd2l0aF9wYXJlbnQodmlkZW9jb252
ZXJ0KTsKKyAgICBnc3RfZWxlbWVudF9zeW5jX3N0YXRlX3dpdGhfcGFyZW50KHNpbmspOworfQor
Cit2b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6aGFuZGxlU2FtcGxlKEdSZWZQdHI8R3N0U2Ft
cGxlPiYmIHNhbXBsZSkKK3sKKyAgICBhdXRvKiBjYXBzID0gZ3N0X3NhbXBsZV9nZXRfY2Fwcyhz
YW1wbGUuZ2V0KCkpOworICAgIEdTVF9ERUJVRygiSGFuZGxpbmcgc2FtcGxlIHdpdGggY2FwcyAl
IiBHU1RfUFRSX0ZPUk1BVCwgY2Fwcyk7CisgICAgYXV0byBwcmVzZW50YXRpb25TaXplID0gZ2V0
VmlkZW9SZXNvbHV0aW9uRnJvbUNhcHMoY2Fwcyk7CisgICAgaWYgKHByZXNlbnRhdGlvblNpemUg
JiYgIXByZXNlbnRhdGlvblNpemUtPmlzRW1wdHkoKSAmJiAoIW1fc2l6ZSB8fCBtX3NpemUgIT0g
cm91bmRlZEludFNpemUoKnByZXNlbnRhdGlvblNpemUpKSkKKyAgICAgICAgbV9zaXplID0gcm91
bmRlZEludFNpemUoKnByZXNlbnRhdGlvblNpemUpOworICAgIG1fc2FtcGxlRGF0YS5hZGRTYW1w
bGUoSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlOjpjcmVhdGUoV1RGTW92ZShzYW1wbGUpLCAq
bV9zaXplKSk7Cit9CisKK3ZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6
OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKK3sKKyAgICBBU1NFUlQoJm1fcnVu
TG9vcCA9PSAmUnVuTG9vcDo6Y3VycmVudCgpKTsKKworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9y
PiBlcnJvcjsKKyAgICBHVW5pcXVlT3V0UHRyPGdjaGFyPiBkZWJ1ZzsKKworICAgIHN3aXRjaCAo
R1NUX01FU1NBR0VfVFlQRShtZXNzYWdlKSkgeworICAgIGNhc2UgR1NUX01FU1NBR0VfRU9TOgor
ICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGluZS5nZXQoKSwgR1NUX1NUQVRF
X05VTEwpOworICAgICAgICBtX3J1bkxvb3Auc3RvcCgpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEdTVF9NRVNTQUdFX1dBUk5JTkc6CisgICAgICAgIGdzdF9tZXNzYWdlX3BhcnNlX3dhcm5p
bmcobWVzc2FnZSwgJmVycm9yLm91dFB0cigpLCAmZGVidWcub3V0UHRyKCkpOworICAgICAgICBn
X3dhcm5pbmcoIldhcm5pbmc6ICVkLCAlcy4gRGVidWcgb3V0cHV0OiAlcyIsIGVycm9yLT5jb2Rl
LCBlcnJvci0+bWVzc2FnZSwgZGVidWcuZ2V0KCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEdTVF9NRVNTQUdFX0VSUk9SOgorICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV9lcnJvcihtZXNz
YWdlLCAmZXJyb3Iub3V0UHRyKCksICZkZWJ1Zy5vdXRQdHIoKSk7CisgICAgICAgIGdfd2Fybmlu
ZygiRXJyb3I6ICVkLCAlcy4gRGVidWcgb3V0cHV0OiAlcyIsIGVycm9yLT5jb2RlLCBlcnJvci0+
bWVzc2FnZSwgZGVidWcuZ2V0KCkpOworICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9w
aXBlbGluZS5nZXQoKSwgR1NUX1NUQVRFX05VTEwpOworICAgICAgICBtX3J1bkxvb3Auc3RvcCgp
OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9Cit9
CisKK3ZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OnByZXBhcmVQaXBl
bGluZSgpCit7CisgICAgc3RhdGljIEF0b21pYzx1aW50MzJfdD4gcGlwZWxpbmVJZDsKKyAgICBt
X3BpcGVsaW5lID0gZ3N0X3BpcGVsaW5lX25ldyhtYWtlU3RyaW5nKCJpbWFnZS1kZWNvZGVyLSIs
IHBpcGVsaW5lSWQuZXhjaGFuZ2VBZGQoMSkpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgR1JlZlB0
cjxHc3RCdXM+IGJ1cyA9IGFkb3B0R1JlZihnc3RfcGlwZWxpbmVfZ2V0X2J1cyhHU1RfUElQRUxJ
TkUobV9waXBlbGluZS5nZXQoKSkpKTsKKyAgICBBU1NFUlQoYnVzKTsKKworICAgIGdzdF9idXNf
c2V0X3N5bmNfaGFuZGxlcigKKyAgICAgICAgYnVzLmdldCgpLCBbXShHc3RCdXMqLCBHc3RNZXNz
YWdlKiBtZXNzYWdlLCBncG9pbnRlciB1c2VyRGF0YSkgeworICAgICAgICAgICAgYXV0byYgZGVj
b2RlciA9ICpzdGF0aWNfY2FzdDxJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcio+
KHVzZXJEYXRhKTsKKyAgICAgICAgICAgIGlmICgmZGVjb2Rlci5tX3J1bkxvb3AgPT0gJlJ1bkxv
b3A6OmN1cnJlbnQoKSkKKyAgICAgICAgICAgICAgICBkZWNvZGVyLmhhbmRsZU1lc3NhZ2UobWVz
c2FnZSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBHUmVmUHRyPEdzdE1l
c3NhZ2U+IHByb3RlY3RlZE1lc3NhZ2UobWVzc2FnZSk7CisgICAgICAgICAgICAgICAgYXV0byB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKGRlY29kZXIpOworICAgICAgICAgICAgICAgIGRlY29kZXIu
bV9ydW5Mb29wLmRpc3BhdGNoKFt3ZWFrVGhpcywgcHJvdGVjdGVkTWVzc2FnZV0geworICAgICAg
ICAgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAgICAgICAgICB3ZWFr
VGhpcy0+aGFuZGxlTWVzc2FnZShwcm90ZWN0ZWRNZXNzYWdlLmdldCgpKTsKKyAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGdzdF9tZXNzYWdlX3VucmVmKG1l
c3NhZ2UpOworICAgICAgICAgICAgcmV0dXJuIEdTVF9CVVNfRFJPUDsKKyAgICAgICAgfSwKKyAg
ICAgICAgdGhpcywgbnVsbHB0cik7CisKKyAgICBHc3RFbGVtZW50KiBzb3VyY2UgPSBnc3RfZWxl
bWVudF9mYWN0b3J5X21ha2UoImdpb3N0cmVhbXNyYyIsIG51bGxwdHIpOworICAgIGdfb2JqZWN0
X3NldChzb3VyY2UsICJzdHJlYW0iLCBtX21lbW9yeVN0cmVhbS5nZXQoKSwgbnVsbHB0cik7CisK
KyAgICBHc3RFbGVtZW50KiBkZWNvZGVyID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJkZWNv
ZGViaW4iLCBudWxscHRyKTsKKyAgICBhdXRvIGFsbG93ZWRDYXBzID0gYWRvcHRHUmVmKGdzdF9j
YXBzX25ld19lbXB0eV9zaW1wbGUoInZpZGVvL3gtcmF3IikpOworICAgIGdfb2JqZWN0X3NldChk
ZWNvZGVyLCAiY2FwcyIsIGFsbG93ZWRDYXBzLmdldCgpLCAiZXhwb3NlLWFsbC1zdHJlYW1zIiwg
ZmFsc2UsIG51bGxwdHIpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChkZWNvZGVyLCAi
cGFkLWFkZGVkIiwgR19DQUxMQkFDSyhkZWNvZGViaW5QYWRBZGRlZENhbGxiYWNrKSwgdGhpcyk7
CisKKyAgICBnc3RfYmluX2FkZF9tYW55KEdTVF9CSU5fQ0FTVChtX3BpcGVsaW5lLmdldCgpKSwg
c291cmNlLCBkZWNvZGVyLCBudWxscHRyKTsKKyAgICBnc3RfZWxlbWVudF9saW5rKHNvdXJjZSwg
ZGVjb2Rlcik7CisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdT
VF9TVEFURV9QTEFZSU5HKTsKK30KKwordm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVy
RGVjb2Rlcjo6cnVuKCkKK3sKKyAgICBtX3J1bkxvb3AuZGlzcGF0Y2goW3RoaXNdKCkgeworICAg
ICAgICBwcmVwYXJlUGlwZWxpbmUoKTsKKyAgICB9KTsKKworICAgIG1fcnVuTG9vcC5ydW4oKTsK
K30KKworRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29k
ZXI6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKK3sKKyAgICBHc3RTdGF0ZSBzdGF0ZTsKKyAg
ICBnc3RfZWxlbWVudF9nZXRfc3RhdGUobV9waXBlbGluZS5nZXQoKSwgJnN0YXRlLCBudWxscHRy
LCAwKTsKKyAgICBpZiAoc3RhdGUgPj0gR1NUX1NUQVRFX1JFQURZKQorICAgICAgICByZXR1cm4g
RW5jb2RlZERhdGFTdGF0dXM6OlR5cGVBdmFpbGFibGU7CisgICAgcmV0dXJuIEVuY29kZWREYXRh
U3RhdHVzOjpVbmtub3duOworfQorCit2b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVu
Y29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQoreworICAgIG1fZW9zID0gZmFsc2U7Cisg
ICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwg
W3RoaXMsIGRhdGEgPSBidWZmZXIuZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0geworICAg
ICAgICBtX2lubmVyRGVjb2RlciA9IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVy
OjpjcmVhdGUodGhpcywgZGF0YSwgc2l6ZSk7CisgICAgICAgIG1faW5uZXJEZWNvZGVyLT5ydW4o
KTsKKyAgICB9KTsKKyAgICB0aHJlYWQtPndhaXRGb3JDb21wbGV0aW9uKCk7CisgICAgbV9lb3Mg
PSB0cnVlOworICAgIG1faW5uZXJEZWNvZGVyID0gbnVsbHB0cjsKKyAgICBjYWxsT25NYWluVGhy
ZWFkKFt0aGlzXSB7CisgICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzQ2hhbmdlZENhbGxi
YWNrKQorICAgICAgICAgICAgbV9lbmNvZGVkRGF0YVN0YXR1c0NoYW5nZWRDYWxsYmFjayhlbmNv
ZGVkRGF0YVN0YXR1cygpKTsKKyAgICB9KTsKK30KKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGUwOWZlMjQ2ZDE5MjVlNDNlZmM4MDJk
MGFjZTBlYTY3OTI0YzAxNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaApAQCAtMCwwICsx
LDEyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhaW50IHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBVU0UoR1NUUkVBTUVSKQorCisjaW5jbHVkZSAiR1JlZlB0ckdTdHJlYW1lci5oIgor
I2luY2x1ZGUgIkltYWdlRGVjb2Rlci5oIgorI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIK
KyNpbmNsdWRlICJTYW1wbGVNYXAuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDb250ZW50VHlw
ZTsKK2NsYXNzIEltYWdlRGVjb2RlckdTdHJlYW1lclNhbXBsZTsKKworY2xhc3MgSW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyIGZpbmFsIDogcHVibGljIEltYWdlRGVjb2RlciB7CitwdWJsaWM6CisgICAg
c3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pOworICAgIEltYWdlRGVjb2RlckdTdHJlYW1lcihTaGFyZWRCdWZmZXImLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pOworICAgIHZpcnR1YWwgfkltYWdlRGVjb2RlckdTdHJlYW1lcigpID0gZGVmYXVsdDsKKwor
ICAgIHN0YXRpYyBib29sIHN1cHBvcnRzTWVkaWFUeXBlKE1lZGlhVHlwZSB0eXBlKSB7IHJldHVy
biB0eXBlID09IE1lZGlhVHlwZTo6VmlkZW87IH0KKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Nv
bnRhaW5lclR5cGUoY29uc3QgU3RyaW5nJik7CisKKyAgICBzaXplX3QgYnl0ZXNEZWNvZGVkVG9E
ZXRlcm1pbmVQcm9wZXJ0aWVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAgIHN0
YXRpYyBib29sIGNhbkRlY29kZVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisKKyAgICB2
b2lkIHNldEVuY29kZWREYXRhU3RhdHVzQ2hhbmdlQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lk
KEVuY29kZWREYXRhU3RhdHVzKT4mJiBjYWxsYmFjaykgZmluYWwgeyBtX2VuY29kZWREYXRhU3Rh
dHVzQ2hhbmdlZENhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7IH0KKyAgICBFbmNvZGVkRGF0
YVN0YXR1cyBlbmNvZGVkRGF0YVN0YXR1cygpIGNvbnN0IGZpbmFsOworICAgIEludFNpemUgc2l6
ZSgpIGNvbnN0IGZpbmFsOworICAgIHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9zYW1wbGVEYXRhLnNpemUoKTsgfQorICAgIFJlcGV0aXRpb25Db3VudCByZXBldGl0
aW9uQ291bnQoKSBjb25zdCBmaW5hbDsKKyAgICBTdHJpbmcgdXRpKCkgY29uc3QgZmluYWw7Cisg
ICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTUlNRVR5
cGVSZWdpc3RyeTo6Z2V0UHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUobV9taW1lVHlwZSk7
IH0KKyAgICBPcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IFdURjo6bnVsbG9wdDsgfQorCisgICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwg
U3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIHNpemUoKTsgfQorICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXpl
X3QgaW5kZXgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHNhbXBsZUF0SW5kZXgoaW5kZXgpOyB9Cisg
ICAgSW1hZ2VPcmllbnRhdGlvbiBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0
IGZpbmFsOworCisgICAgU2Vjb25kcyBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0
IGZpbmFsOworICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KSBjb25zdCBmaW5h
bDsKKyAgICBib29sIGZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90IGluZGV4KSBj
b25zdCBmaW5hbCB7IHJldHVybiBpbmRleCA8PSBtX3NhbXBsZURhdGEuc2l6ZSgpOyB9CisgICAg
dW5zaWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vi
c2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3QgZmluYWw7CisKKyAgICBOYXRpdmVJbWFnZVB0
ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJz
YW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdP
cHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKKworICAgIHZvaWQgc2V0
RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsIHsgfQorICAgIHZvaWQgc2V0RGF0
YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgYm9vbCBp
c0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZW9zOyB9CisgICAgdm9p
ZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBj
bGFzcyBJbm5lckRlY29kZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW5uZXJEZWNv
ZGVyPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPElubmVyRGVjb2Rlcj4geworICAgICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5uZXJE
ZWNvZGVyKTsKKworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFJlZlB0cjxJbm5lckRlY29k
ZXI+IGNyZWF0ZShJbWFnZURlY29kZXJHU3RyZWFtZXIqIGRlY29kZXIsIGNvbnN0IGNoYXIqIGRh
dGEsIGdzc2l6ZSBzaXplKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBJbm5lckRlY29kZXIoZGVjb2RlciwgZGF0YSwgc2l6ZSkpOworICAgICAgICB9CisKKyAg
ICAgICAgSW5uZXJEZWNvZGVyKEltYWdlRGVjb2RlckdTdHJlYW1lciogZGVjb2RlciwgY29uc3Qg
Y2hhciogZGF0YSwgZ3NzaXplIHNpemUpCisgICAgICAgICAgICA6IG1fZGVjb2RlcihkZWNvZGVy
KQorICAgICAgICAgICAgLCBtX3J1bkxvb3AoUnVuTG9vcDo6Y3VycmVudCgpKQorICAgICAgICB7
CisgICAgICAgICAgICBtX21lbW9yeVN0cmVhbSA9IGFkb3B0R1JlZihnX21lbW9yeV9pbnB1dF9z
dHJlYW1fbmV3X2Zyb21fZGF0YShkYXRhLCBzaXplLCBudWxscHRyKSk7CisgICAgICAgIH0KKwor
ICAgICAgICB2b2lkIHJ1bigpOworICAgICAgICBFbmNvZGVkRGF0YVN0YXR1cyBlbmNvZGVkRGF0
YVN0YXR1cygpIGNvbnN0OworCisgICAgcHJpdmF0ZSA6CisgICAgICAgIHN0YXRpYyB2b2lkIGRl
Y29kZWJpblBhZEFkZGVkQ2FsbGJhY2soSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29k
ZXIqLCBHc3RQYWQqKTsKKyAgICAgICAgdm9pZCBoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqKTsK
KyAgICAgICAgdm9pZCBwcmVwYXJlUGlwZWxpbmUoKTsKKyAgICAgICAgdm9pZCBjb25uZWN0RGVj
b2RlclBhZChHc3RQYWQqKTsKKworICAgICAgICBJbWFnZURlY29kZXJHU3RyZWFtZXIqIG1fZGVj
b2RlcjsKKyAgICAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX3BpcGVsaW5lOworICAgICAgICBH
UmVmUHRyPEdJbnB1dFN0cmVhbT4gbV9tZW1vcnlTdHJlYW07CisgICAgICAgIFJ1bkxvb3AmIG1f
cnVuTG9vcDsKKyAgICB9OworCisgICAgdm9pZCBoYW5kbGVTYW1wbGUoR1JlZlB0cjxHc3RTYW1w
bGU+JiYpOworICAgIHZvaWQgcHVzaEVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYpOworCisgICAg
Y29uc3QgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlKiBzYW1wbGVBdEluZGV4KHNpemVfdCkg
Y29uc3Q7CisKKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoRW5jb2RlZERhdGFTdGF0dXMpPiBtX2Vu
Y29kZWREYXRhU3RhdHVzQ2hhbmdlZENhbGxiYWNrOworICAgIFNhbXBsZU1hcCBtX3NhbXBsZURh
dGE7CisgICAgRGVjb2RlT3JkZXJTYW1wbGVNYXA6Oml0ZXJhdG9yIG1fY3Vyc29yOworICAgIExv
Y2sgbV9zYW1wbGVHZW5lcmF0b3JMb2NrOworICAgIGJvb2wgbV9lb3MgeyBmYWxzZSB9OworICAg
IE9wdGlvbmFsPEludFNpemU+IG1fc2l6ZTsKKyAgICBTdHJpbmcgbV9taW1lVHlwZTsKKyAgICBS
ZWZQdHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI+IG1faW5uZXJEZWNvZGVy
OworfTsKKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5oCmluZGV4IGQwYWQ2OTg2ZWIz
NDM2NTk4ZDg4ZDgzODAwY2QzNmJmOGVhMWNiODcuLjlkMWU1NTQyNWQ0YjJlYjQzYjY2YzI4ZDli
Y2Y0NjFlZDZhZWY2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5oCkBAIC0xNyw4ICsxNyw3IEBA
CiAgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqLwogCi0jaWZuZGVmIEltYWdlR1N0
cmVhbWVyX2gKLSNkZWZpbmUgSW1hZ2VHU3RyZWFtZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBF
TkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCiAKQEAgLTM3LDQyICszNiw0NCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnRTaXplOwogCiBjbGFzcyBJbWFnZUdTdHJlYW1lciA6
IHB1YmxpYyBSZWZDb3VudGVkPEltYWdlR1N0cmVhbWVyPiB7Ci0gICAgcHVibGljOgotICAgICAg
ICBzdGF0aWMgUmVmUHRyPEltYWdlR1N0cmVhbWVyPiBjcmVhdGVJbWFnZShHc3RTYW1wbGUqIHNh
bXBsZSkKLSAgICAgICAgewotICAgICAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0UmVmKG5ldyBJ
bWFnZUdTdHJlYW1lcihzYW1wbGUpKTsKLSAgICAgICAgICAgIGlmICghaW1hZ2UtPm1faW1hZ2Up
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CitwdWJsaWM6CisgICAgc3RhdGljIFJl
ZlB0cjxJbWFnZUdTdHJlYW1lcj4gY3JlYXRlSW1hZ2UoR3N0U2FtcGxlKiBzYW1wbGUpCisgICAg
eworICAgICAgICBhdXRvIGltYWdlID0gYWRvcHRSZWYobmV3IEltYWdlR1N0cmVhbWVyKHNhbXBs
ZSkpOworICAgICAgICBpZiAoIWltYWdlLT5tX2ltYWdlKQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICAgICAgICAgIHJldHVybiBpbWFnZTsKLSAgICAgICAgfQotICAgICAgICB+
SW1hZ2VHU3RyZWFtZXIoKTsKKyAgICAgICAgcmV0dXJuIGltYWdlOworICAgIH0KKyAgICB+SW1h
Z2VHU3RyZWFtZXIoKTsKIAotICAgICAgICBCaXRtYXBJbWFnZSYgaW1hZ2UoKQotICAgICAgICB7
Ci0gICAgICAgICAgICBBU1NFUlQobV9pbWFnZSk7Ci0gICAgICAgICAgICByZXR1cm4gKm1faW1h
Z2UuZ2V0KCk7Ci0gICAgICAgIH0KKyAgICBCaXRtYXBJbWFnZSYgaW1hZ2UoKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG1faW1hZ2UpOworICAgICAgICByZXR1cm4gKm1faW1hZ2UuZ2V0KCk7Cisg
ICAgfQogCi0gICAgICAgIHZvaWQgc2V0Q3JvcFJlY3QoRmxvYXRSZWN0IHJlY3QpIHsgbV9jcm9w
UmVjdCA9IHJlY3Q7IH0KLSAgICAgICAgRmxvYXRSZWN0IHJlY3QoKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBBU1NFUlQobV9pbWFnZSk7Ci0gICAgICAgICAgICBpZiAoIW1fY3JvcFJlY3QuaXNF
bXB0eSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBGbG9hdFJlY3QobV9jcm9wUmVjdCk7Ci0g
ICAgICAgICAgICByZXR1cm4gRmxvYXRSZWN0KDAsIDAsIG1faW1hZ2UtPnNpemUoKS53aWR0aCgp
LCBtX2ltYWdlLT5zaXplKCkuaGVpZ2h0KCkpOwotICAgICAgICB9CisgICAgdm9pZCBzZXRDcm9w
UmVjdChGbG9hdFJlY3QgcmVjdCkgeyBtX2Nyb3BSZWN0ID0gcmVjdDsgfQorICAgIEZsb2F0UmVj
dCByZWN0KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2ltYWdlKTsKKyAgICAgICAgaWYgKCFt
X2Nyb3BSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBGbG9hdFJlY3QobV9jcm9w
UmVjdCk7CisgICAgICAgIHJldHVybiBGbG9hdFJlY3QoMCwgMCwgbV9pbWFnZS0+c2l6ZSgpLndp
ZHRoKCksIG1faW1hZ2UtPnNpemUoKS5oZWlnaHQoKSk7CisgICAgfQogCi0gICAgcHJpdmF0ZToK
LSAgICAgICAgSW1hZ2VHU3RyZWFtZXIoR3N0U2FtcGxlKik7Ci0gICAgICAgIFJlZlB0cjxCaXRt
YXBJbWFnZT4gbV9pbWFnZTsKLSAgICAgICAgRmxvYXRSZWN0IG1fY3JvcFJlY3Q7CisgICAgYm9v
bCBoYXNBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzQWxwaGE7IH0KKworcHJpdmF0ZToKKyAg
ICBJbWFnZUdTdHJlYW1lcihHc3RTYW1wbGUqKTsKKyAgICBSZWZQdHI8Qml0bWFwSW1hZ2U+IG1f
aW1hZ2U7CisgICAgRmxvYXRSZWN0IG1fY3JvcFJlY3Q7CiAjaWYgVVNFKENBSVJPKQotICAgICAg
ICBHc3RWaWRlb0ZyYW1lIG1fdmlkZW9GcmFtZTsKLSAgICAgICAgYm9vbCBtX2ZyYW1lTWFwcGVk
IHsgZmFsc2UgfTsKKyAgICBHc3RWaWRlb0ZyYW1lIG1fdmlkZW9GcmFtZTsKKyAgICBib29sIG1f
ZnJhbWVNYXBwZWQgeyBmYWxzZSB9OwogI2VuZGlmCi0gICAgfTsKLX0KKyAgICBib29sIG1faGFz
QWxwaGEgeyBmYWxzZSB9OworfTsKIAotI2VuZGlmIC8vIFVTRShHU1RSRUFNRVIpCi0jZW5kaWYK
K30KKyNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFt
ZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
SW1hZ2VHU3RyZWFtZXJDYWlyby5jcHAKaW5kZXggNjdkMGYwYmNhMjUyOTE1NjA0NTc5YmM0NmU3
NTEzYjhhZjRjMzExOS4uYmM4MDY2NDQ5NmYzOTllOTZlY2I2ZGEzYzAwZDMyOWIzZTRhM2E3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0lt
YWdlR1N0cmVhbWVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lckNhaXJvLmNwcApAQCAtNDIsNiArNDIsOCBAQCBJ
bWFnZUdTdHJlYW1lcjo6SW1hZ2VHU3RyZWFtZXIoR3N0U2FtcGxlKiBzYW1wbGUpCiAgICAgLy8g
UmlnaHQgbm93IHRoZSBUZXh0dXJlTWFwcGVyIG9ubHkgc3VwcG9ydHMgY2hyb21hcyB3aXRoIG9u
ZSBwbGFuZQogICAgIEFTU0VSVChHU1RfVklERU9fSU5GT19OX1BMQU5FUygmdmlkZW9JbmZvKSA9
PSAxKTsKIAorICAgIG1faGFzQWxwaGEgPSBHU1RfVklERU9fSU5GT19IQVNfQUxQSEEoJnZpZGVv
SW5mbyk7CisKICAgICBHc3RCdWZmZXIqIGJ1ZmZlciA9IGdzdF9zYW1wbGVfZ2V0X2J1ZmZlcihz
YW1wbGUpOwogICAgIGlmIChVTkxJS0VMWSghR1NUX0lTX0JVRkZFUihidWZmZXIpKSkKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaAppbmRleCBlZDMxNjZk
M2EwY2M3ODExOWZkYWY5ZTViMWVkYjNhYmU5YjQwMmI1Li4xZGZiM2NkMDhkYzM1ZWU4MDY1YmJm
YmU3NzlhYjNjZTk2MTE1ZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaApA
QCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIE1lZGlhU2Ft
cGxlR1N0cmVhbWVyIGZpbmFsIDogcHVibGljIE1lZGlhU2FtcGxlIHsKK2NsYXNzIE1lZGlhU2Ft
cGxlR1N0cmVhbWVyIDogcHVibGljIE1lZGlhU2FtcGxlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmPE1lZGlhU2FtcGxlR1N0cmVhbWVyPiBjcmVhdGUoR1JlZlB0cjxHc3RTYW1wbGU+JiYgc2Ft
cGxlLCBjb25zdCBGbG9hdFNpemUmIHByZXNlbnRhdGlvblNpemUsIGNvbnN0IEF0b21TdHJpbmcm
IHRyYWNrSWQpCiAgICAgewpAQCAtNTUsMTEgKzU1LDEzIEBAIHB1YmxpYzoKICAgICBQbGF0Zm9y
bVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZHVtcChQcmludFN0
cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwogCi1wcml2YXRlOgorcHJvdGVjdGVkOgogICAgIE1lZGlh
U2FtcGxlR1N0cmVhbWVyKEdSZWZQdHI8R3N0U2FtcGxlPiYmLCBjb25zdCBGbG9hdFNpemUmIHBy
ZXNlbnRhdGlvblNpemUsIGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSWQpOwotICAgIE1lZGlhU2Ft
cGxlR1N0cmVhbWVyKGNvbnN0IEZsb2F0U2l6ZSYgcHJlc2VudGF0aW9uU2l6ZSwgY29uc3QgQXRv
bVN0cmluZyYgdHJhY2tJZCk7CiAgICAgdmlydHVhbCB+TWVkaWFTYW1wbGVHU3RyZWFtZXIoKSA9
IGRlZmF1bHQ7CiAKK3ByaXZhdGU6CisgICAgTWVkaWFTYW1wbGVHU3RyZWFtZXIoY29uc3QgRmxv
YXRTaXplJiBwcmVzZW50YXRpb25TaXplLCBjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lkKTsKKwog
ICAgIE1lZGlhVGltZSBtX3B0czsKICAgICBNZWRpYVRpbWUgbV9kdHM7CiAgICAgTWVkaWFUaW1l
IG1fZHVyYXRpb247CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggZGQ5Y2NkOWFmNTNmM2JiZTgyYzVjM2RhNWIzYTMwYjFjZmYw
MWNhZi4uNWE2M2YyZDU2NmRjMTdhNzUxMmQ2YTk3Y2E2NTRhMGRhNDQ4NzAxMCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE3IEBACisyMDIwLTA1LTE3ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdh
bGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSA8aW1nPiB0YWcgbmVlZHMgdG8gc3VwcG9y
dCB2aWRlbyBmb3JtYXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODAzNzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVcGRhdGUgVGVzdEV4cGVjdGF0aW9ucyBmb3IgdGVzdHMgdXNpbmcgdmlkZW9zIGZv
ciB0aGUgPGltZz4gdGFnLgorICAgICAgICAKKyAgICAgICAgKiBodHRwL2NvbmYvZmxhdHBhay1o
dHRwZC5jb25mOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9uczoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9y
bS93cGUvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMC0wNS0xNyAgQ2FybG9zIEdhcmNpYSBDYW1w
b3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gTW92ZSB0byBuZXcgUGFz
dGVib2FyZCBBUEkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvY29uZi9mbGF0cGFrLWh0
dHBkLmNvbmYgYi9MYXlvdXRUZXN0cy9odHRwL2NvbmYvZmxhdHBhay1odHRwZC5jb25mCmluZGV4
IGNhOWM5YTg5OGNiZjg0YjA4NDQzODE5OTI2ZmU1NzAzMTJiMjMwZjYuLmE3NGY1NmU2NmFmYmE3
Zjk1OWY2MzFkNjI1MWRjNDIyMmY1YjBmZDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
Y29uZi9mbGF0cGFrLWh0dHBkLmNvbmYKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC9jb25mL2ZsYXRw
YWstaHR0cGQuY29uZgpAQCAtNTIsOCArNTIsNiBAQCBBY2Nlc3NGaWxlTmFtZSAuaHRhY2Nlc3MK
IFVzZUNhbm9uaWNhbE5hbWUgT24KIEhvc3RuYW1lTG9va3VwcyBPZmYKIAotVHlwZXNDb25maWcg
L3Vzci9jb25mL21pbWUudHlwZXMKLQogTG9nTGV2ZWwgd2FybgogTG9nRm9ybWF0ICIlaCAlbCAl
dSAldCBcIiVyXCIgJT5zICViIFwiJXtSZWZlcmVyfWlcIiBcIiV7VXNlci1BZ2VudH1pXCIiIGNv
bWJpbmVkCiBMb2dGb3JtYXQgIiVoICVsICV1ICV0IFwiJXJcIiAlPnMgJWIiIGNvbW1vbgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGE1NWYyNjRmYWZi
NTA2Y2E4NTc5MGUxNmNjMWRmMWEzZTVkZDAyODcuLmZjMmU2NGNjMmE1ODMwZTQ1MDgyM2MwZjA5
Y2RhNzZlMTk2ODYwM2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVz
dEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTc0LDYgKzc0LDggQEAKICMgMi4gRVhQRUNURUQgRkFJTFVSRVMKICMvLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKK3dlYmtpdC5vcmcvYi8yMTE5OTUgZmFzdC9pbWFn
ZXMvYW5pbWF0ZWQtaW1hZ2UtbXA0Lmh0bWwgWyBGYWlsdXJlIF0KKwogIy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8KICMgRW5kIG9mIEV4cGVjdGVkIEZhaWx1cmVzCiAjLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVj
dGF0aW9ucwppbmRleCA2ZDk1M2ZmZGVmZTc2NjkwZGVmZDBjMjFhZGEwMmM5MTg1ZjY4YTAwLi41
Nzk4YWVlOWFmNDQ3NjBjOWYzYzI3MWY5MzQzNzliMTcyYTBkNDBlIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTA3MCwxMSArMTA3MCw2IEBAIHdlYmtp
dC5vcmcvYi8xNzU0MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9iYWNrZ3JvdW5k
LWZldGNoL2ludGVyZmFjZXMtCiB3ZWJraXQub3JnL2IvMTc1NDE5IGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvYmFja2dyb3VuZC1mZXRjaC9pbnRlcmZhY2VzLmh0bWwgWyBGYWlsdXJl
IF0KIHdlYmtpdC5vcmcvYi8xNzU0MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9m
ZXRjaC9hcGkvYWJvcnQvc2VydmljZXdvcmtlci1pbnRlcmNlcHRlZC5odHRwcy5odG1sIFsgRmFp
bHVyZSBQYXNzIF0KIAotIyBMb2FkaW5nIE1QNCBhcyBhbiBpbWFnZSBpcyBub3Qgc3VwcG9ydGVk
IGJ5IEdUSwotd2Via2l0Lm9yZy9iLzE4MDM3MCBmYXN0L2ltYWdlcy9hbmltYXRlZC1pbWFnZS1t
cDQuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzE4MDM3MCBodHRwL3Rlc3RzL2ltYWdlcy9p
bWFnZS1zdXBwb3J0cy12aWRlby5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTgwMzcwIGZh
c3QvaW1hZ2VzL2FuaW1hdGVkLWltYWdlLW1wNC1jcmFzaC5odG1sIFsgU2tpcCBdCi0KICMgR1RL
IG91Z2h0IHRvIHN1cHBvcnQgYXN5bmMgY2xpcGJvYXJkCiB3ZWJraXQub3JnL2IvMjExOTc5IGVk
aXRpbmcvYXN5bmMtY2xpcGJvYXJkL2NsaXBib2FyZC1jaGFuZ2UtZGF0YS13aGlsZS13cml0aW5n
Lmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMTE5NzkgZWRpdGluZy9hc3luYy1jbGlw
Ym9hcmQvY2xpcGJvYXJkLXJlYWQtdGV4dC1mcm9tLXBsYXRmb3JtLmh0bWwgWyBGYWlsdXJlIF0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dwZS9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZjk2ZWY2MDlj
NjU3YjdkOTYxNGVlYjc3ZTY0ZTEyM2U2NmQ2NTNmOC4uOGE5OTE5MmQ5YzQ2YTBjZGE4M2M0NTgx
OGI3NjE4NjM2NDcyNDY3ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rl
c3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTM2NywxMSArMzY3LDYgQEAgQnVnKFdQRSkgZmFzdC9yZXBsYWNlZC9wZGYtYXMt
b2JqZWN0LWFuZC1lbWJlZC5odG1sIFsgU2tpcCBdCiAKIEJ1ZyhXUEUpIGZhc3QvaGlkcGkvcGRm
LWltYWdlLXNjYWxlZC5odG1sIFsgU2tpcCBdCiAKLSMgTG9hZGluZyBNUDQgYXMgYW4gaW1hZ2Ug
aXMgbm90IHN1cHBvcnRlZAotd2Via2l0Lm9yZy9iLzE4MDM3MCBmYXN0L2ltYWdlcy9hbmltYXRl
ZC1pbWFnZS1tcDQuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzE4MDM3MCBmYXN0L2ltYWdl
cy9hbmltYXRlZC1pbWFnZS1tcDQtY3Jhc2guaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzE4
MDM3MCBodHRwL3Rlc3RzL2ltYWdlcy9pbWFnZS1zdXBwb3J0cy12aWRlby5odG1sIFsgU2tpcCBd
Ci0KICMgT25seSBNYWMgaGFzIGltcGxlbWVudGVkIERpY3Rpb25hcnlMb29rdXAKIGZhc3QvbGF5
ZXJzL3ByZXZlbnQtaGl0LXRlc3QtZHVyaW5nLWxheW91dC5odG1sIFsgU2tpcCBdCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399822</attachid>
            <date>2020-05-20 02:10:20 -0700</date>
            <delta_ts>2020-05-20 08:52:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180370-20200520101018.patch</filename>
            <type>text/plain</type>
            <size>33695</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDFlNWRlZmFiZmM3ZGRj
ZWQxMWIyNGNiYmJmZTJlOTMzMDA3YzdhZC4uZTc5Nzg5ZWNlMWMxM2M4OWIyZGRkMDM3NmI1Nzcy
NTg3M2EzZjAwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIwLTA1LTE3ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVy
XSA8aW1nPiB0YWcgbmVlZHMgdG8gc3VwcG9ydCB2aWRlbyBmb3JtYXRzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAzNzAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHU3RyZWFtZXIgaW1wbGVtZW50YXRp
b24gb2YgdGhlIEltYWdlRGVjb2Rlci4gSXQgY3VycmVudGx5IGRvZXNuJ3Qgc3VwcG9ydCB6ZXJv
LWNvcHkKKyAgICAgICAgcmVuZGVyaW5nIHRob3VnaCBkdWUgdG8gdGhlIHRoZSBOYXRpdmVJbWFn
ZVB0ciByZXF1aXJlbWVudC4KKworICAgICAgICAqIHBsYXRmb3JtL0dTdHJlYW1lci5jbWFrZToK
KyAgICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VWaWRlb09yU1ZHTUlNRVR5cGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXI6OnN1cHBvcnRzTWVkaWFUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjp0b1NhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFt
ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6Oklt
YWdlRGVjb2RlckdTdHJlYW1lcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3Ry
ZWFtZXI6OnN1cHBvcnRzQ29udGFpbmVyVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURl
Y29kZXJHU3RyZWFtZXI6OmNhbkRlY29kZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyOjplbmNvZGVkRGF0YVN0YXR1cyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpyZXBldGl0aW9uQ291bnQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjp1dGkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpmcmFtZU9yaWVudGF0aW9uQXRJbmRleCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OmZyYW1lRHVy
YXRpb25BdEluZGV4IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJl
YW1lcjo6ZnJhbWVIYXNBbHBoYUF0SW5kZXggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVyR1N0cmVhbWVyOjpmcmFtZUJ5dGVzQXRJbmRleCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6c2V0RGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNsZWFyRnJhbWVCdWZmZXJDYWNo
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OnNhbXBsZUF0SW5k
ZXggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5l
ckRlY29kZXI6OmRlY29kZWJpblBhZEFkZGVkQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmNvbm5lY3REZWNvZGVyUGFkKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6aGFuZGxlU2FtcGxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpo
YW5kbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6
SW5uZXJEZWNvZGVyOjpwcmVwYXJlUGlwZWxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OnJ1bik6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2Rl
ZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29k
ZXJHU3RyZWFtZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0ltYWdlR1N0cmVhbWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUdTdHJlYW1lcjo6
Y3JlYXRlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VHU3RyZWFtZXI6OmltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlR1N0cmVhbWVyOjpzZXRDcm9wUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUdTdHJlYW1lcjo6cmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUdTdHJlYW1lcjo6aGFzQWxwaGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlR1N0cmVhbWVyOjpJbWFnZUdTdHJlYW1lcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmg6CisKIDIwMjAtMDUtMTcgIFphbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtCRkNdIEludHJvZHVj
ZSBUYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9HU3RyZWFtZXIuY21ha2UKaW5kZXggODM0N2JiYzZhOTAwYWUyZWMyY2U1OTMxM2I5OGZkMWEx
N2FiMzVmMS4uMTYwOWU5MWJjMGQ0NWQyYjdjZDFmNjY2ZDQxYzAzOTE0ZWFjYWI0OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0dTdHJlYW1lci5jbWFrZQpAQCAtMTMsNiArMTMsNyBAQCBpZiAo
RU5BQkxFX1ZJREVPIE9SIEVOQUJMRV9XRUJfQVVESU8pCiAgICAgICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9Hc3RBbGxvY2F0b3JGYXN0TWFsbG9jLmNwcAogICAgICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcAogICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9GcmFtZUhvbGRlci5j
cHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJl
YW1lci5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRU
cmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5R1N0cmVhbWVyLmNwcAogICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3Ry
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAppbmRl
eCAwOTVlNTBhZjNkZDY3MTMyMmY0NzZiYjRiNWQ0ZjdkZThhNTJhNWRhLi5iYjJlZjlhOTg1MDli
NTBhMzE4YjY5MWNlZWUwNjFjNTQzZDllOGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApAQCAtNTgsNiArNTgsMTAgQEAKICNpbmNsdWRlICJQcmV2
aWV3Q29udmVydGVyLmgiCiAjZW5kaWYKIAorI2lmIFVTRShHU1RSRUFNRVIpCisjaW5jbHVkZSAi
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgTUlNRVR5
cGVSZWdpc3RyeTo6c3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKQpAQCAtNDM2LDYgKzQ0MCwxMSBA
QCBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VWaWRlb09yU1ZHTUlNRVR5
cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgog
CisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICBpZiAoSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpzdXBw
b3J0c0NvbnRhaW5lclR5cGUobWltZVR5cGUpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRp
ZgorCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBjNTRiMzg4ODc0NGI0NTgwMThiN2M0
NmRjMWQ5NjMzMmZjM2U4NTNjLi5hNWMxMjZlYWE2NGYxN2IzMjgzZTJhODBiZDBlZWIxZDZiODY4
NGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURl
Y29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVj
b2Rlci5jcHAKQEAgLTM4LDYgKzM4LDEwIEBACiAjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyQVZGT2Jq
Qy5oIgogI2VuZGlmCiAKKyNpZiBVU0UoR1NUUkVBTUVSKQorI2luY2x1ZGUgIkltYWdlRGVjb2Rl
ckdTdHJlYW1lci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVmUHRyPElt
YWdlRGVjb2Rlcj4gSW1hZ2VEZWNvZGVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCkBAIC00OSw2ICs1Mywx
MSBAQCBSZWZQdHI8SW1hZ2VEZWNvZGVyPiBJbWFnZURlY29kZXI6OmNyZWF0ZShTaGFyZWRCdWZm
ZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZQogICAgICAgICByZXR1cm4gSW1hZ2VEZWNvZGVy
QVZGT2JqQzo6Y3JlYXRlKGRhdGEsIG1pbWVUeXBlLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pOwogI2VuZGlmCiAKKyNpZiBVU0UoR1NUUkVBTUVSKQorICAgIGlmIChJ
bWFnZURlY29kZXJHU3RyZWFtZXI6OmNhbkRlY29kZVR5cGUobWltZVR5cGUpKQorICAgICAgICBy
ZXR1cm4gSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGUoZGF0YSwgbWltZVR5cGUsIGFscGhh
T3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisjZW5kaWYKKwogI2lmIFVTRShD
RykKICAgICByZXR1cm4gSW1hZ2VEZWNvZGVyQ0c6OmNyZWF0ZShkYXRhLCBhbHBoYU9wdGlvbiwg
Z2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogI2VsaWYgVVNFKERJUkVDVDJEKQpAQCAtNzYs
NiArODUsMTEgQEAgYm9vbCBJbWFnZURlY29kZXI6OnN1cHBvcnRzTWVkaWFUeXBlKE1lZGlhVHlw
ZSB0eXBlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogCisjaWYgVVNFKEdTVFJFQU1F
UikKKyAgICBpZiAoSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpzdXBwb3J0c01lZGlhVHlwZSh0eXBl
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKwogICAgIHJldHVybiBmYWxzZTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YzU4
NGYzNGNlYmFmMWYxNGU0YWU3YTFlZTUwZDMzMWM3YmEyMTY2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdT
dHJlYW1lci5jcHAKQEAgLTAsMCArMSwzNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
SWdhbGlhIFMuTAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbWFnZURlY29kZXJHU3Ry
ZWFtZXIuaCIKKworI2lmIFVTRShHU1RSRUFNRVIpCisKKyNpbmNsdWRlICJGbG9hdFNpemUuaCIK
KyNpbmNsdWRlICJHU3RyZWFtZXJDb21tb24uaCIKKyNpbmNsdWRlICJHU3RyZWFtZXJSZWdpc3Ry
eVNjYW5uZXIuaCIKKyNpbmNsdWRlICJJbWFnZUdTdHJlYW1lci5oIgorI2luY2x1ZGUgIk1lZGlh
U2FtcGxlR1N0cmVhbWVyLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRl
IDxnc3QvYXBwL2dzdGFwcHNpbmsuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitHU1RfREVCVUdfQ0FURUdPUlkod2Via2l0X2ltYWdlX2RlY29k
ZXJfZGVidWcpOworI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgd2Via2l0X2ltYWdlX2RlY29kZXJf
ZGVidWcKKworY2xhc3MgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlIGZpbmFsIDogcHVibGlj
IE1lZGlhU2FtcGxlR1N0cmVhbWVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEltYWdlRGVj
b2RlckdTdHJlYW1lclNhbXBsZT4gY3JlYXRlKEdSZWZQdHI8R3N0U2FtcGxlPiYmIHNhbXBsZSwg
Y29uc3QgRmxvYXRTaXplJiBwcmVzZW50YXRpb25TaXplKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlKFdURk1vdmUoc2FtcGxl
KSwgcHJlc2VudGF0aW9uU2l6ZSkpOworICAgIH0KKworICAgIE5hdGl2ZUltYWdlUHRyIGltYWdl
KCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghbV9pbWFnZSkKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICByZXR1cm4gbV9pbWFnZS0+aW1hZ2UoKS5uYXRpdmVJbWFnZSgp
OworICAgIH0KKyAgICB2b2lkIGRyb3BJbWFnZSgpIHsgbV9pbWFnZSA9IG51bGxwdHI7IH0KKwor
ICAgIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJl
dHVybiAoU2FtcGxlRmxhZ3MpKE1lZGlhU2FtcGxlR1N0cmVhbWVyOjpmbGFncygpIHwgKG1faW1h
Z2UgJiYgbV9pbWFnZS0+aGFzQWxwaGEoKSA/IEhhc0FscGhhIDogMCkpOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBJbWFnZURlY29kZXJHU3RyZWFtZXJTYW1wbGUoR1JlZlB0cjxHc3RTYW1wbGU+
JiYgc2FtcGxlLCBjb25zdCBGbG9hdFNpemUmIHByZXNlbnRhdGlvblNpemUpCisgICAgICAgIDog
TWVkaWFTYW1wbGVHU3RyZWFtZXIoV1RGTW92ZShzYW1wbGUpLCBwcmVzZW50YXRpb25TaXplLCB7
IH0pCisgICAgeworICAgICAgICBtX2ltYWdlID0gSW1hZ2VHU3RyZWFtZXI6OmNyZWF0ZUltYWdl
KHBsYXRmb3JtU2FtcGxlKCkuc2FtcGxlLmdzdFNhbXBsZSk7CisgICAgfQorCisgICAgUmVmUHRy
PEltYWdlR1N0cmVhbWVyPiBtX2ltYWdlOworfTsKKworc3RhdGljIEltYWdlRGVjb2RlckdTdHJl
YW1lclNhbXBsZSogdG9TYW1wbGUoY29uc3QgUHJlc2VudGF0aW9uT3JkZXJTYW1wbGVNYXA6OnZh
bHVlX3R5cGUmIHBhaXIpCit7CisgICAgcmV0dXJuIChJbWFnZURlY29kZXJHU3RyZWFtZXJTYW1w
bGUqKXBhaXIuc2Vjb25kLmdldCgpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcmF0b3I+
CitJbWFnZURlY29kZXJHU3RyZWFtZXJTYW1wbGUqIHRvU2FtcGxlKEl0ZXJhdG9yIGl0ZXIpCit7
CisgICAgcmV0dXJuIChJbWFnZURlY29kZXJHU3RyZWFtZXJTYW1wbGUqKWl0ZXItPnNlY29uZC5n
ZXQoKTsKK30KKworUmVmUHRyPEltYWdlRGVjb2RlckdTdHJlYW1lcj4gSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyKGRhdGEsIG1pbWVUeXBlLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pKTsKK30KKworSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbWFnZURl
Y29kZXJHU3RyZWFtZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisgICAgOiBtX21pbWVU
eXBlKG1pbWVUeXBlKQoreworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAg
ICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBHU1RfREVCVUdfQ0FURUdP
UllfSU5JVCh3ZWJraXRfaW1hZ2VfZGVjb2Rlcl9kZWJ1ZywgIndlYmtpdGltYWdlZGVjb2RlciIs
IDAsICJXZWJLaXQgaW1hZ2UgZGVjb2RlciIpOworICAgIH0pOworCisgICAgcHVzaEVuY29kZWRE
YXRhKGRhdGEpOworfQorCitib29sIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6c3VwcG9ydHNDb250
YWluZXJUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKK3sKKyAgICByZXR1cm4gR1N0cmVhbWVyUmVn
aXN0cnlTY2FubmVyOjpzaW5nbGV0b24oKS5pc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQodHlwZSk7
Cit9CisKK2Jvb2wgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjYW5EZWNvZGVUeXBlKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpCit7CisgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6c2lu
Z2xldG9uKCkuaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKG1pbWVUeXBlKTsKK30KKworRW5jb2Rl
ZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjplbmNvZGVkRGF0YVN0YXR1cygpIGNv
bnN0Cit7CisgICAgaWYgKG1fZW9zKQorICAgICAgICByZXR1cm4gRW5jb2RlZERhdGFTdGF0dXM6
OkNvbXBsZXRlOworICAgIGlmIChtX3NpemUpCisgICAgICAgIHJldHVybiBFbmNvZGVkRGF0YVN0
YXR1czo6U2l6ZUF2YWlsYWJsZTsKKyAgICBpZiAobV9pbm5lckRlY29kZXIpCisgICAgICAgIHJl
dHVybiBtX2lubmVyRGVjb2Rlci0+ZW5jb2RlZERhdGFTdGF0dXMoKTsKKyAgICByZXR1cm4gRW5j
b2RlZERhdGFTdGF0dXM6OlVua25vd247Cit9CisKK0ludFNpemUgSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyOjpzaXplKCkgY29uc3QKK3sKKyAgICBpZiAobV9zaXplKQorICAgICAgICByZXR1cm4gbV9z
aXplLnZhbHVlKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKworUmVwZXRpdGlvbkNvdW50IEltYWdl
RGVjb2RlckdTdHJlYW1lcjo6cmVwZXRpdGlvbkNvdW50KCkgY29uc3QKK3sKKyAgICAvLyBJbiB0
aGUgYWJzZW5jZSBvZiBpbnN0cnVjdGlvbnMgdG8gdGhlIGNvbnRyYXJ5LCBhc3N1bWUgYWxsIG1l
ZGlhIGZvcm1hdHMgcmVwZWF0IGluZmluaXRlbHkuCisgICAgcmV0dXJuIGZyYW1lQ291bnQoKSA+
IDEgPyBSZXBldGl0aW9uQ291bnRJbmZpbml0ZSA6IFJlcGV0aXRpb25Db3VudE5vbmU7Cit9CisK
K1N0cmluZyBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnV0aSgpIGNvbnN0Cit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4geyB9OworfQorCitJbWFnZU9yaWVudGF0aW9uIEltYWdl
RGVjb2RlckdTdHJlYW1lcjo6ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdAor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb246Ok5v
bmU7Cit9CisKK1NlY29uZHMgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpmcmFtZUR1cmF0aW9uQXRJ
bmRleChzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgYXV0byogc2FtcGxlRGF0YSA9IHNhbXBs
ZUF0SW5kZXgoaW5kZXgpOworICAgIGlmICghc2FtcGxlRGF0YSkKKyAgICAgICAgcmV0dXJuIHsg
fTsKKworICAgIHJldHVybiBTZWNvbmRzKHNhbXBsZURhdGEtPmR1cmF0aW9uKCkudG9Eb3VibGUo
KSk7Cit9CisKK2Jvb2wgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpmcmFtZUhhc0FscGhhQXRJbmRl
eChzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgYXV0byogc2FtcGxlRGF0YSA9IHNhbXBsZUF0
SW5kZXgoaW5kZXgpOworICAgIHJldHVybiBzYW1wbGVEYXRhID8gc2FtcGxlRGF0YS0+aGFzQWxw
aGEoKSA6IGZhbHNlOworfQorCit1bnNpZ25lZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmZyYW1l
Qnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xl
dmVsKSBjb25zdAoreworICAgIGlmICghZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCkpCisg
ICAgICAgIHJldHVybiAwOworCisgICAgSW50U2l6ZSBmcmFtZVNpemUgPSBmcmFtZVNpemVBdElu
ZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKKyAgICByZXR1cm4gKGZyYW1lU2l6ZS5hcmVh
KCkgKiA0KS51bnNhZmVHZXQoKTsKK30KKworTmF0aXZlSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5n
TGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCit7CisgICAgTG9ja0hvbGRlciBob2xkZXIg
eyBtX3NhbXBsZUdlbmVyYXRvckxvY2sgfTsKKworICAgIGF1dG8qIHNhbXBsZURhdGEgPSBzYW1w
bGVBdEluZGV4KGluZGV4KTsKKyAgICBpZiAoIXNhbXBsZURhdGEpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgaWYgKGF1dG8gaW1hZ2UgPSBzYW1wbGVEYXRhLT5pbWFnZSgpKQorICAg
ICAgICByZXR1cm4gaW1hZ2U7CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBJbWFn
ZURlY29kZXJHU3RyZWFtZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sKQorewor
ICAgIHB1c2hFbmNvZGVkRGF0YShkYXRhKTsKK30KKwordm9pZCBJbWFnZURlY29kZXJHU3RyZWFt
ZXI6OmNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QgaW5kZXgpCit7CisgICAgc2l6ZV90IGkg
PSAwOworICAgIGZvciAoYXV0byYgc2FtcGxlUGFpciA6IG1fc2FtcGxlRGF0YS5wcmVzZW50YXRp
b25PcmRlcigpKSB7CisgICAgICAgIHRvU2FtcGxlKHNhbXBsZVBhaXIpLT5kcm9wSW1hZ2UoKTsK
KyAgICAgICAgaWYgKCsraSA+IGluZGV4KQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQor
Citjb25zdCBJbWFnZURlY29kZXJHU3RyZWFtZXJTYW1wbGUqIEltYWdlRGVjb2RlckdTdHJlYW1l
cjo6c2FtcGxlQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Cit7CisgICAgaWYgKGluZGV4ID49
IG1fc2FtcGxlRGF0YS5wcmVzZW50YXRpb25PcmRlcigpLnNpemUoKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICAvLyBGSVhNRTogc3RkOjptYXAgaXMgbm90IHJhbmRvbS1hY2Nlc3Np
YmxlOyB0aGlzIGNhbiBnZXQgZXhwZW5zaXZlIGlmIGNhbGxlcnMgcmVwZWF0ZWRseSBjYWxsCisg
ICAgLy8gd2l0aCBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaW5kZXhlcy4gSW52ZXN0aWdhdGUg
YWRkaW5nIGFuIE8oMSkgc2lkZSBzdHJ1Y3R1cmUgdG8gbWFrZSB0aGlzCisgICAgLy8gc3R5bGUg
b2YgYWNjZXNzIGZhc3Rlci4KKyAgICBhdXRvIGl0ZXIgPSBtX3NhbXBsZURhdGEucHJlc2VudGF0
aW9uT3JkZXIoKS5iZWdpbigpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IGluZGV4OyAr
K2kpCisgICAgICAgICsraXRlcjsKKworICAgIHJldHVybiB0b1NhbXBsZShpdGVyKTsKK30KKwor
dm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6ZGVjb2RlYmluUGFkQWRk
ZWRDYWxsYmFjayhJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2RlciogZGVjb2Rlciwg
R3N0UGFkKiBwYWQpCit7CisgICAgZGVjb2Rlci0+Y29ubmVjdERlY29kZXJQYWQocGFkKTsKK30K
Kwordm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6Y29ubmVjdERlY29k
ZXJQYWQoR3N0UGFkKiBwYWQpCit7CisgICAgYXV0byBwYWRDYXBzID0gYWRvcHRHUmVmKGdzdF9w
YWRfZ2V0X2N1cnJlbnRfY2FwcyhwYWQpKTsKKyAgICBHU1RfREVCVUdfT0JKRUNUKG1fcGlwZWxp
bmUuZ2V0KCksICJOZXcgZGVjb2RlYmluIHBhZCAlIiBHU1RfUFRSX0ZPUk1BVCAiIGNhcHM6ICUi
IEdTVF9QVFJfRk9STUFULCBwYWQsIHBhZENhcHMuZ2V0KCkpOworICAgIFJFTEVBU0VfQVNTRVJU
KGRvQ2Fwc0hhdmVUeXBlKHBhZENhcHMuZ2V0KCksICJ2aWRlbyIpKTsKKworICAgIEdzdEVsZW1l
bnQqIHNpbmsgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImFwcHNpbmsiLCBudWxscHRyKTsK
KyAgICBzdGF0aWMgR3N0QXBwU2lua0NhbGxiYWNrcyBjYWxsYmFja3MgPSB7CisgICAgICAgIG51
bGxwdHIsCisgICAgICAgIFtdKEdzdEFwcFNpbmsqIHNpbmssIGdwb2ludGVyIHVzZXJEYXRhKSAt
PiBHc3RGbG93UmV0dXJuIHsKKyAgICAgICAgICAgIGF1dG8gc2FtcGxlID0gYWRvcHRHUmVmKGdz
dF9hcHBfc2lua190cnlfcHVsbF9wcmVyb2xsKHNpbmssIDApKTsKKyAgICAgICAgICAgIHN0YXRp
Y19jYXN0PEltYWdlRGVjb2RlckdTdHJlYW1lcio+KHVzZXJEYXRhKS0+aGFuZGxlU2FtcGxlKFdU
Rk1vdmUoc2FtcGxlKSk7CisgICAgICAgICAgICByZXR1cm4gR1NUX0ZMT1dfT0s7CisgICAgICAg
IH0sCisgICAgICAgIFtdKEdzdEFwcFNpbmsqIHNpbmssIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBH
c3RGbG93UmV0dXJuIHsKKyAgICAgICAgICAgIGF1dG8gc2FtcGxlID0gYWRvcHRHUmVmKGdzdF9h
cHBfc2lua190cnlfcHVsbF9zYW1wbGUoc2luaywgMCkpOworICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyKj4odXNlckRhdGEpLT5oYW5kbGVTYW1wbGUoV1RGTW92
ZShzYW1wbGUpKTsKKyAgICAgICAgICAgIHJldHVybiBHU1RfRkxPV19PSzsKKyAgICAgICAgfSwK
KyAgICAgICAgeyBudWxscHRyIH0KKyAgICB9OworICAgIGdzdF9hcHBfc2lua19zZXRfY2FsbGJh
Y2tzKEdTVF9BUFBfU0lOSyhzaW5rKSwgJmNhbGxiYWNrcywgbV9kZWNvZGVyLmdldCgpLCBudWxs
cHRyKTsKKworICAgIEdSZWZQdHI8R3N0Q2Fwcz4gY2FwcyA9IGFkb3B0R1JlZihnc3RfY2Fwc19m
cm9tX3N0cmluZygidmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVJHQkEiKSk7CisgICAgZ19v
YmplY3Rfc2V0KHNpbmssICJzeW5jIiwgZmFsc2UsICJjYXBzIiwgY2Fwcy5nZXQoKSwgbnVsbHB0
cik7CisKKyAgICBHc3RFbGVtZW50KiB2aWRlb2NvbnZlcnQgPSBnc3RfZWxlbWVudF9mYWN0b3J5
X21ha2UoInZpZGVvY29udmVydCIsIG51bGxwdHIpOworCisgICAgZ3N0X2Jpbl9hZGRfbWFueShH
U1RfQklOX0NBU1QobV9waXBlbGluZS5nZXQoKSksIHZpZGVvY29udmVydCwgc2luaywgbnVsbHB0
cik7CisgICAgZ3N0X2VsZW1lbnRfbGluayh2aWRlb2NvbnZlcnQsIHNpbmspOworICAgIGF1dG8g
c2lua1BhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCh2aWRlb2NvbnZl
cnQsICJzaW5rIikpOworICAgIGdzdF9wYWRfbGluayhwYWQsIHNpbmtQYWQuZ2V0KCkpOworICAg
IGdzdF9lbGVtZW50X3N5bmNfc3RhdGVfd2l0aF9wYXJlbnQodmlkZW9jb252ZXJ0KTsKKyAgICBn
c3RfZWxlbWVudF9zeW5jX3N0YXRlX3dpdGhfcGFyZW50KHNpbmspOworfQorCit2b2lkIEltYWdl
RGVjb2RlckdTdHJlYW1lcjo6aGFuZGxlU2FtcGxlKEdSZWZQdHI8R3N0U2FtcGxlPiYmIHNhbXBs
ZSkKK3sKKyAgICBhdXRvKiBjYXBzID0gZ3N0X3NhbXBsZV9nZXRfY2FwcyhzYW1wbGUuZ2V0KCkp
OworICAgIEdTVF9ERUJVRygiSGFuZGxpbmcgc2FtcGxlIHdpdGggY2FwcyAlIiBHU1RfUFRSX0ZP
Uk1BVCwgY2Fwcyk7CisgICAgYXV0byBwcmVzZW50YXRpb25TaXplID0gZ2V0VmlkZW9SZXNvbHV0
aW9uRnJvbUNhcHMoY2Fwcyk7CisgICAgaWYgKHByZXNlbnRhdGlvblNpemUgJiYgIXByZXNlbnRh
dGlvblNpemUtPmlzRW1wdHkoKSAmJiAoIW1fc2l6ZSB8fCBtX3NpemUgIT0gcm91bmRlZEludFNp
emUoKnByZXNlbnRhdGlvblNpemUpKSkKKyAgICAgICAgbV9zaXplID0gcm91bmRlZEludFNpemUo
KnByZXNlbnRhdGlvblNpemUpOworICAgIG1fc2FtcGxlRGF0YS5hZGRTYW1wbGUoSW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyU2FtcGxlOjpjcmVhdGUoV1RGTW92ZShzYW1wbGUpLCAqbV9zaXplKSk7Cit9
CisKK3ZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmhhbmRsZU1lc3Nh
Z2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKK3sKKyAgICBBU1NFUlQoJm1fcnVuTG9vcCA9PSAmUnVu
TG9vcDo6Y3VycmVudCgpKTsKKworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAg
ICBHVW5pcXVlT3V0UHRyPGdjaGFyPiBkZWJ1ZzsKKworICAgIHN3aXRjaCAoR1NUX01FU1NBR0Vf
VFlQRShtZXNzYWdlKSkgeworICAgIGNhc2UgR1NUX01FU1NBR0VfRU9TOgorICAgICAgICBnc3Rf
ZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGluZS5nZXQoKSwgR1NUX1NUQVRFX05VTEwpOworICAg
ICAgICBtX3J1bkxvb3Auc3RvcCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9NRVNT
QUdFX1dBUk5JTkc6CisgICAgICAgIGdzdF9tZXNzYWdlX3BhcnNlX3dhcm5pbmcobWVzc2FnZSwg
JmVycm9yLm91dFB0cigpLCAmZGVidWcub3V0UHRyKCkpOworICAgICAgICBnX3dhcm5pbmcoIldh
cm5pbmc6ICVkLCAlcy4gRGVidWcgb3V0cHV0OiAlcyIsIGVycm9yLT5jb2RlLCBlcnJvci0+bWVz
c2FnZSwgZGVidWcuZ2V0KCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9NRVNTQUdF
X0VSUk9SOgorICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV9lcnJvcihtZXNzYWdlLCAmZXJyb3Iu
b3V0UHRyKCksICZkZWJ1Zy5vdXRQdHIoKSk7CisgICAgICAgIGdfd2FybmluZygiRXJyb3I6ICVk
LCAlcy4gRGVidWcgb3V0cHV0OiAlcyIsIGVycm9yLT5jb2RlLCBlcnJvci0+bWVzc2FnZSwgZGVi
dWcuZ2V0KCkpOworICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGluZS5nZXQo
KSwgR1NUX1NUQVRFX05VTEwpOworICAgICAgICBtX3J1bkxvb3Auc3RvcCgpOworICAgICAgICBi
cmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OnByZXBhcmVQaXBlbGluZSgpCit7Cisg
ICAgc3RhdGljIEF0b21pYzx1aW50MzJfdD4gcGlwZWxpbmVJZDsKKyAgICBtX3BpcGVsaW5lID0g
Z3N0X3BpcGVsaW5lX25ldyhtYWtlU3RyaW5nKCJpbWFnZS1kZWNvZGVyLSIsIHBpcGVsaW5lSWQu
ZXhjaGFuZ2VBZGQoMSkpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgR1JlZlB0cjxHc3RCdXM+IGJ1
cyA9IGFkb3B0R1JlZihnc3RfcGlwZWxpbmVfZ2V0X2J1cyhHU1RfUElQRUxJTkUobV9waXBlbGlu
ZS5nZXQoKSkpKTsKKyAgICBBU1NFUlQoYnVzKTsKKworICAgIGdzdF9idXNfc2V0X3N5bmNfaGFu
ZGxlcihidXMuZ2V0KCksIFtdKEdzdEJ1cyosIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIGdwb2ludGVy
IHVzZXJEYXRhKSB7CisgICAgICAgIGF1dG8mIGRlY29kZXIgPSAqc3RhdGljX2Nhc3Q8SW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXIqPih1c2VyRGF0YSk7CisgICAgICAgIGlmICgm
ZGVjb2Rlci5tX3J1bkxvb3AgPT0gJlJ1bkxvb3A6OmN1cnJlbnQoKSkKKyAgICAgICAgICAgIGRl
Y29kZXIuaGFuZGxlTWVzc2FnZShtZXNzYWdlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBHUmVmUHRyPEdzdE1lc3NhZ2U+IHByb3RlY3RlZE1lc3NhZ2UobWVzc2FnZSk7CisgICAgICAg
ICAgICBhdXRvIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoZGVjb2Rlcik7CisgICAgICAgICAgICBk
ZWNvZGVyLm1fcnVuTG9vcC5kaXNwYXRjaChbd2Vha1RoaXMsIHByb3RlY3RlZE1lc3NhZ2VdIHsK
KyAgICAgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAgICAgIHdlYWtU
aGlzLT5oYW5kbGVNZXNzYWdlKHByb3RlY3RlZE1lc3NhZ2UuZ2V0KCkpOworICAgICAgICAgICAg
fSk7CisgICAgICAgIH0KKyAgICAgICAgZ3N0X21lc3NhZ2VfdW5yZWYobWVzc2FnZSk7CisgICAg
ICAgIHJldHVybiBHU1RfQlVTX0RST1A7CisgICAgfSwgdGhpcywgbnVsbHB0cik7CisKKyAgICBH
c3RFbGVtZW50KiBzb3VyY2UgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImdpb3N0cmVhbXNy
YyIsIG51bGxwdHIpOworICAgIGdfb2JqZWN0X3NldChzb3VyY2UsICJzdHJlYW0iLCBtX21lbW9y
eVN0cmVhbS5nZXQoKSwgbnVsbHB0cik7CisKKyAgICBHc3RFbGVtZW50KiBkZWNvZGVyID0gZ3N0
X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJkZWNvZGViaW4iLCBudWxscHRyKTsKKyAgICBhdXRvIGFs
bG93ZWRDYXBzID0gYWRvcHRHUmVmKGdzdF9jYXBzX25ld19lbXB0eV9zaW1wbGUoInZpZGVvL3gt
cmF3IikpOworICAgIGdfb2JqZWN0X3NldChkZWNvZGVyLCAiY2FwcyIsIGFsbG93ZWRDYXBzLmdl
dCgpLCAiZXhwb3NlLWFsbC1zdHJlYW1zIiwgZmFsc2UsIG51bGxwdHIpOworICAgIGdfc2lnbmFs
X2Nvbm5lY3Rfc3dhcHBlZChkZWNvZGVyLCAicGFkLWFkZGVkIiwgR19DQUxMQkFDSyhkZWNvZGVi
aW5QYWRBZGRlZENhbGxiYWNrKSwgdGhpcyk7CisKKyAgICBnc3RfYmluX2FkZF9tYW55KEdTVF9C
SU5fQ0FTVChtX3BpcGVsaW5lLmdldCgpKSwgc291cmNlLCBkZWNvZGVyLCBudWxscHRyKTsKKyAg
ICBnc3RfZWxlbWVudF9saW5rKHNvdXJjZSwgZGVjb2Rlcik7CisgICAgZ3N0X2VsZW1lbnRfc2V0
X3N0YXRlKG1fcGlwZWxpbmUuZ2V0KCksIEdTVF9TVEFURV9QTEFZSU5HKTsKK30KKwordm9pZCBJ
bWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6cnVuKCkKK3sKKyAgICBtX3J1bkxv
b3AuZGlzcGF0Y2goW3RoaXNdKCkgeworICAgICAgICBwcmVwYXJlUGlwZWxpbmUoKTsKKyAgICB9
KTsKKworICAgIG1fcnVuTG9vcC5ydW4oKTsKK30KKworRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QK
K3sKKyAgICBHc3RTdGF0ZSBzdGF0ZTsKKyAgICBnc3RfZWxlbWVudF9nZXRfc3RhdGUobV9waXBl
bGluZS5nZXQoKSwgJnN0YXRlLCBudWxscHRyLCAwKTsKKyAgICBpZiAoc3RhdGUgPj0gR1NUX1NU
QVRFX1JFQURZKQorICAgICAgICByZXR1cm4gRW5jb2RlZERhdGFTdGF0dXM6OlR5cGVBdmFpbGFi
bGU7CisgICAgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpVbmtub3duOworfQorCit2b2lkIElt
YWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQoreworICAgIG1fZW9zID0gZmFsc2U7CisgICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6
OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBidWZmZXIuZGF0
YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0geworICAgICAgICBtX2lubmVyRGVjb2RlciA9IElt
YWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVhdGUoKnRoaXMsIGRhdGEsIHNp
emUpOworICAgICAgICBtX2lubmVyRGVjb2Rlci0+cnVuKCk7CisgICAgfSk7CisgICAgdGhyZWFk
LT53YWl0Rm9yQ29tcGxldGlvbigpOworICAgIG1fZW9zID0gdHJ1ZTsKKyAgICBtX2lubmVyRGVj
b2RlciA9IG51bGxwdHI7CisgICAgY2FsbE9uTWFpblRocmVhZChbdGhpc10geworICAgICAgICBp
ZiAobV9lbmNvZGVkRGF0YVN0YXR1c0NoYW5nZWRDYWxsYmFjaykKKyAgICAgICAgICAgIG1fZW5j
b2RlZERhdGFTdGF0dXNDaGFuZ2VkQ2FsbGJhY2soZW5jb2RlZERhdGFTdGF0dXMoKSk7CisgICAg
fSk7Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmVlYmFiODRmMjM4OThkNzU4OTg4NWNlMDY5NzBkMTVmZTk3ZjZmMDEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKQEAgLTAsMCArMSwxMjUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgSWdhbGlhIFMuTAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKEdTVFJFQU1FUikK
KworI2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIuaCIKKyNpbmNsdWRlICJJbWFnZURlY29kZXIu
aCIKKyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiU2FtcGxlTWFwLmgi
CisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29udGVudFR5cGU7CitjbGFzcyBJbWFnZURlY29kZXJH
U3RyZWFtZXJTYW1wbGU7CisKK2NsYXNzIEltYWdlRGVjb2RlckdTdHJlYW1lciBmaW5hbCA6IHB1
YmxpYyBJbWFnZURlY29kZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbWFnZURlY29kZXJHU3Ry
ZWFtZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShJbWFnZURlY29kZXJHU3RyZWFtZXIpOworcHVibGljOgorICAgIHN0YXRpYyBSZWZQ
dHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsK
KyAgICBJbWFnZURlY29kZXJHU3RyZWFtZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICB2
aXJ0dWFsIH5JbWFnZURlY29kZXJHU3RyZWFtZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBzdGF0aWMg
Ym9vbCBzdXBwb3J0c01lZGlhVHlwZShNZWRpYVR5cGUgdHlwZSkgeyByZXR1cm4gdHlwZSA9PSBN
ZWRpYVR5cGU6OlZpZGVvOyB9CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNDb250YWluZXJUeXBl
KGNvbnN0IFN0cmluZyYpOworCisgICAgc2l6ZV90IGJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJv
cGVydGllcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICBzdGF0aWMgYm9vbCBj
YW5EZWNvZGVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworCisgICAgdm9pZCBzZXRFbmNv
ZGVkRGF0YVN0YXR1c0NoYW5nZUNhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZChFbmNvZGVkRGF0
YVN0YXR1cyk+JiYgY2FsbGJhY2spIGZpbmFsIHsgbV9lbmNvZGVkRGF0YVN0YXR1c0NoYW5nZWRD
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOyB9CisgICAgRW5jb2RlZERhdGFTdGF0dXMgZW5j
b2RlZERhdGFTdGF0dXMoKSBjb25zdCBmaW5hbDsKKyAgICBJbnRTaXplIHNpemUoKSBjb25zdCBm
aW5hbDsKKyAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Ft
cGxlRGF0YS5zaXplKCk7IH0KKyAgICBSZXBldGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCkg
Y29uc3QgZmluYWw7CisgICAgU3RyaW5nIHV0aSgpIGNvbnN0IGZpbmFsOworICAgIFN0cmluZyBm
aWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6
OmdldFByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKG1fbWltZVR5cGUpOyB9CisgICAgT3B0
aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiBXVEY6Om51bGxv
cHQ7IH0KKworICAgIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5n
TGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdCBmaW5hbCB7IHJldHVybiBz
aXplKCk7IH0KKyAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KSBj
b25zdCBmaW5hbCB7IHJldHVybiBzYW1wbGVBdEluZGV4KGluZGV4KTsgfQorICAgIEltYWdlT3Jp
ZW50YXRpb24gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdCBmaW5hbDsKKwor
ICAgIFNlY29uZHMgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdCBmaW5hbDsKKyAg
ICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCkgY29uc3QgZmluYWw7CisgICAgYm9v
bCBmcmFtZUFsbG93U3Vic2FtcGxpbmdBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QgZmluYWwg
eyByZXR1cm4gaW5kZXggPD0gbV9zYW1wbGVEYXRhLnNpemUoKTsgfQorICAgIHVuc2lnbmVkIGZy
YW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2
ZWw6OkRlZmF1bHQpIGNvbnN0IGZpbmFsOworCisgICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZl
bDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNv
ZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CisKKyAgICB2b2lkIHNldEV4cGVjdGVkQ29u
dGVudFNpemUobG9uZyBsb25nKSBmaW5hbCB7IH0KKyAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVm
ZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIGJvb2wgaXNBbGxEYXRhUmVj
ZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2VvczsgfQorICAgIHZvaWQgY2xlYXJGcmFt
ZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgY2xhc3MgSW5uZXJE
ZWNvZGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPElubmVyRGVjb2Rlcj4sIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxJbm5lckRlY29kZXI+IHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKElubmVyRGVjb2Rlcik7Cisg
ICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUmVmUHRyPElubmVyRGVjb2Rlcj4gY3JlYXRlKElt
YWdlRGVjb2RlckdTdHJlYW1lciYgZGVjb2RlciwgY29uc3QgY2hhciogZGF0YSwgZ3NzaXplIHNp
emUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElubmVyRGVj
b2RlcihkZWNvZGVyLCBkYXRhLCBzaXplKSk7CisgICAgICAgIH0KKworICAgICAgICBJbm5lckRl
Y29kZXIoSW1hZ2VEZWNvZGVyR1N0cmVhbWVyJiBkZWNvZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBn
c3NpemUgc2l6ZSkKKyAgICAgICAgICAgIDogbV9kZWNvZGVyKG1ha2VXZWFrUHRyKGRlY29kZXIp
KQorICAgICAgICAgICAgLCBtX3J1bkxvb3AoUnVuTG9vcDo6Y3VycmVudCgpKQorICAgICAgICB7
CisgICAgICAgICAgICBtX21lbW9yeVN0cmVhbSA9IGFkb3B0R1JlZihnX21lbW9yeV9pbnB1dF9z
dHJlYW1fbmV3X2Zyb21fZGF0YShkYXRhLCBzaXplLCBudWxscHRyKSk7CisgICAgICAgIH0KKwor
ICAgICAgICB2b2lkIHJ1bigpOworICAgICAgICBFbmNvZGVkRGF0YVN0YXR1cyBlbmNvZGVkRGF0
YVN0YXR1cygpIGNvbnN0OworCisgICAgcHJpdmF0ZSA6CisgICAgICAgIHN0YXRpYyB2b2lkIGRl
Y29kZWJpblBhZEFkZGVkQ2FsbGJhY2soSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29k
ZXIqLCBHc3RQYWQqKTsKKyAgICAgICAgdm9pZCBoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqKTsK
KyAgICAgICAgdm9pZCBwcmVwYXJlUGlwZWxpbmUoKTsKKyAgICAgICAgdm9pZCBjb25uZWN0RGVj
b2RlclBhZChHc3RQYWQqKTsKKworICAgICAgICBXZWFrUHRyPEltYWdlRGVjb2RlckdTdHJlYW1l
cj4gbV9kZWNvZGVyOworICAgICAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fcGlwZWxpbmU7Cisg
ICAgICAgIEdSZWZQdHI8R0lucHV0U3RyZWFtPiBtX21lbW9yeVN0cmVhbTsKKyAgICAgICAgUnVu
TG9vcCYgbV9ydW5Mb29wOworICAgIH07CisKKyAgICB2b2lkIGhhbmRsZVNhbXBsZShHUmVmUHRy
PEdzdFNhbXBsZT4mJik7CisgICAgdm9pZCBwdXNoRW5jb2RlZERhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJik7CisKKyAgICBjb25zdCBJbWFnZURlY29kZXJHU3RyZWFtZXJTYW1wbGUqIHNhbXBsZUF0
SW5kZXgoc2l6ZV90KSBjb25zdDsKKworICAgIFdURjo6RnVuY3Rpb248dm9pZChFbmNvZGVkRGF0
YVN0YXR1cyk+IG1fZW5jb2RlZERhdGFTdGF0dXNDaGFuZ2VkQ2FsbGJhY2s7CisgICAgU2FtcGxl
TWFwIG1fc2FtcGxlRGF0YTsKKyAgICBEZWNvZGVPcmRlclNhbXBsZU1hcDo6aXRlcmF0b3IgbV9j
dXJzb3I7CisgICAgTG9jayBtX3NhbXBsZUdlbmVyYXRvckxvY2s7CisgICAgYm9vbCBtX2VvcyB7
IGZhbHNlIH07CisgICAgT3B0aW9uYWw8SW50U2l6ZT4gbV9zaXplOworICAgIFN0cmluZyBtX21p
bWVUeXBlOworICAgIFJlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcj4g
bV9pbm5lckRlY29kZXI7Cit9OworCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyLmgKaW5k
ZXggZDBhZDY5ODZlYjM0MzY1OThkODhkODM4MDBjZDM2YmY4ZWExY2I4Ny4uOWQxZTU1NDI1ZDRi
MmViNDNiNjZjMjhkOWJjZjQ2MWVkNmFlZjZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyLmgKQEAg
LTE3LDggKzE3LDcgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCiAKLSNp
Zm5kZWYgSW1hZ2VHU3RyZWFtZXJfaAotI2RlZmluZSBJbWFnZUdTdHJlYW1lcl9oCisjcHJhZ21h
IG9uY2UKIAogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikKIApAQCAtMzcsNDIg
KzM2LDQ0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEludFNpemU7CiAKIGNsYXNzIElt
YWdlR1N0cmVhbWVyIDogcHVibGljIFJlZkNvdW50ZWQ8SW1hZ2VHU3RyZWFtZXI+IHsKLSAgICBw
dWJsaWM6Ci0gICAgICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VHU3RyZWFtZXI+IGNyZWF0ZUltYWdl
KEdzdFNhbXBsZSogc2FtcGxlKQotICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIGltYWdlID0g
YWRvcHRSZWYobmV3IEltYWdlR1N0cmVhbWVyKHNhbXBsZSkpOwotICAgICAgICAgICAgaWYgKCFp
bWFnZS0+bV9pbWFnZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmUHRyPEltYWdlR1N0cmVhbWVyPiBjcmVhdGVJbWFnZShHc3RTYW1wbGUq
IHNhbXBsZSkKKyAgICB7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdFJlZihuZXcgSW1hZ2VH
U3RyZWFtZXIoc2FtcGxlKSk7CisgICAgICAgIGlmICghaW1hZ2UtPm1faW1hZ2UpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICAgICAgcmV0dXJuIGltYWdlOwotICAgICAg
ICB9Ci0gICAgICAgIH5JbWFnZUdTdHJlYW1lcigpOworICAgICAgICByZXR1cm4gaW1hZ2U7Cisg
ICAgfQorICAgIH5JbWFnZUdTdHJlYW1lcigpOwogCi0gICAgICAgIEJpdG1hcEltYWdlJiBpbWFn
ZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2ltYWdlKTsKLSAgICAgICAgICAg
IHJldHVybiAqbV9pbWFnZS5nZXQoKTsKLSAgICAgICAgfQorICAgIEJpdG1hcEltYWdlJiBpbWFn
ZSgpCisgICAgeworICAgICAgICBBU1NFUlQobV9pbWFnZSk7CisgICAgICAgIHJldHVybiAqbV9p
bWFnZS5nZXQoKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBzZXRDcm9wUmVjdChGbG9hdFJlY3Qg
cmVjdCkgeyBtX2Nyb3BSZWN0ID0gcmVjdDsgfQotICAgICAgICBGbG9hdFJlY3QgcmVjdCgpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2ltYWdlKTsKLSAgICAgICAgICAgIGlmICgh
bV9jcm9wUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCht
X2Nyb3BSZWN0KTsKLSAgICAgICAgICAgIHJldHVybiBGbG9hdFJlY3QoMCwgMCwgbV9pbWFnZS0+
c2l6ZSgpLndpZHRoKCksIG1faW1hZ2UtPnNpemUoKS5oZWlnaHQoKSk7Ci0gICAgICAgIH0KKyAg
ICB2b2lkIHNldENyb3BSZWN0KEZsb2F0UmVjdCByZWN0KSB7IG1fY3JvcFJlY3QgPSByZWN0OyB9
CisgICAgRmxvYXRSZWN0IHJlY3QoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1faW1hZ2UpOwor
ICAgICAgICBpZiAoIW1fY3JvcFJlY3QuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIEZs
b2F0UmVjdChtX2Nyb3BSZWN0KTsKKyAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCgwLCAwLCBtX2lt
YWdlLT5zaXplKCkud2lkdGgoKSwgbV9pbWFnZS0+c2l6ZSgpLmhlaWdodCgpKTsKKyAgICB9CiAK
LSAgICBwcml2YXRlOgotICAgICAgICBJbWFnZUdTdHJlYW1lcihHc3RTYW1wbGUqKTsKLSAgICAg
ICAgUmVmUHRyPEJpdG1hcEltYWdlPiBtX2ltYWdlOwotICAgICAgICBGbG9hdFJlY3QgbV9jcm9w
UmVjdDsKKyAgICBib29sIGhhc0FscGhhKCkgY29uc3QgeyByZXR1cm4gbV9oYXNBbHBoYTsgfQor
Citwcml2YXRlOgorICAgIEltYWdlR1N0cmVhbWVyKEdzdFNhbXBsZSopOworICAgIFJlZlB0cjxC
aXRtYXBJbWFnZT4gbV9pbWFnZTsKKyAgICBGbG9hdFJlY3QgbV9jcm9wUmVjdDsKICNpZiBVU0Uo
Q0FJUk8pCi0gICAgICAgIEdzdFZpZGVvRnJhbWUgbV92aWRlb0ZyYW1lOwotICAgICAgICBib29s
IG1fZnJhbWVNYXBwZWQgeyBmYWxzZSB9OworICAgIEdzdFZpZGVvRnJhbWUgbV92aWRlb0ZyYW1l
OworICAgIGJvb2wgbV9mcmFtZU1hcHBlZCB7IGZhbHNlIH07CiAjZW5kaWYKLSAgICB9OwotfQor
ICAgIGJvb2wgbV9oYXNBbHBoYSB7IGZhbHNlIH07Cit9OwogCi0jZW5kaWYgLy8gVVNFKEdTVFJF
QU1FUikKLSNlbmRpZgorfQorI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1F
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9JbWFnZUdTdHJlYW1lckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lckNhaXJvLmNwcAppbmRleCA2N2QwZjBiY2EyNTI5
MTU2MDQ1NzliYzQ2ZTc1MTNiOGFmNGMzMTE5Li5iYzgwNjY0NDk2ZjM5OWU5NmVjYjZkYTNjMDBk
MzI5YjNlNGEzYTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlR1N0cmVhbWVyQ2Fpcm8uY3BwCkBAIC00
Miw2ICs0Miw4IEBAIEltYWdlR1N0cmVhbWVyOjpJbWFnZUdTdHJlYW1lcihHc3RTYW1wbGUqIHNh
bXBsZSkKICAgICAvLyBSaWdodCBub3cgdGhlIFRleHR1cmVNYXBwZXIgb25seSBzdXBwb3J0cyBj
aHJvbWFzIHdpdGggb25lIHBsYW5lCiAgICAgQVNTRVJUKEdTVF9WSURFT19JTkZPX05fUExBTkVT
KCZ2aWRlb0luZm8pID09IDEpOwogCisgICAgbV9oYXNBbHBoYSA9IEdTVF9WSURFT19JTkZPX0hB
U19BTFBIQSgmdmlkZW9JbmZvKTsKKwogICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0X3NhbXBs
ZV9nZXRfYnVmZmVyKHNhbXBsZSk7CiAgICAgaWYgKFVOTElLRUxZKCFHU1RfSVNfQlVGRkVSKGJ1
ZmZlcikpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5o
CmluZGV4IGVkMzE2NmQzYTBjYzc4MTE5ZmRhZjllNWIxZWRiM2FiZTliNDAyYjUuLjFkZmIzY2Qw
OGRjMzVlZTgwNjViYmZiZTc3OWFiM2NlOTYxMTVkOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBs
ZUdTdHJlYW1lci5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgTWVkaWFTYW1wbGVHU3RyZWFtZXIgZmluYWwgOiBwdWJsaWMgTWVkaWFTYW1wbGUgewor
Y2xhc3MgTWVkaWFTYW1wbGVHU3RyZWFtZXIgOiBwdWJsaWMgTWVkaWFTYW1wbGUgewogcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8TWVkaWFTYW1wbGVHU3RyZWFtZXI+IGNyZWF0ZShHUmVmUHRyPEdz
dFNhbXBsZT4mJiBzYW1wbGUsIGNvbnN0IEZsb2F0U2l6ZSYgcHJlc2VudGF0aW9uU2l6ZSwgY29u
c3QgQXRvbVN0cmluZyYgdHJhY2tJZCkKICAgICB7CkBAIC01NSwxMSArNTUsMTMgQEAgcHVibGlj
OgogICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CiAKLXByaXZhdGU6Citwcm90ZWN0
ZWQ6CiAgICAgTWVkaWFTYW1wbGVHU3RyZWFtZXIoR1JlZlB0cjxHc3RTYW1wbGU+JiYsIGNvbnN0
IEZsb2F0U2l6ZSYgcHJlc2VudGF0aW9uU2l6ZSwgY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJZCk7
Ci0gICAgTWVkaWFTYW1wbGVHU3RyZWFtZXIoY29uc3QgRmxvYXRTaXplJiBwcmVzZW50YXRpb25T
aXplLCBjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lkKTsKICAgICB2aXJ0dWFsIH5NZWRpYVNhbXBs
ZUdTdHJlYW1lcigpID0gZGVmYXVsdDsKIAorcHJpdmF0ZToKKyAgICBNZWRpYVNhbXBsZUdTdHJl
YW1lcihjb25zdCBGbG9hdFNpemUmIHByZXNlbnRhdGlvblNpemUsIGNvbnN0IEF0b21TdHJpbmcm
IHRyYWNrSWQpOworCiAgICAgTWVkaWFUaW1lIG1fcHRzOwogICAgIE1lZGlhVGltZSBtX2R0czsK
ICAgICBNZWRpYVRpbWUgbV9kdXJhdGlvbjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkZDljY2Q5YWY1M2YzYmJlODJjNWMz
ZGE1YjNhMzBiMWNmZjAxY2FmLi41YTYzZjJkNTY2ZGMxN2E3NTEyZDZhOTdjYTY1NGEwZGE0NDg3
MDEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDUtMTcgIFBoaWxpcHBlIE5vcm1hbmQg
IDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIDxpbWc+IHRhZyBu
ZWVkcyB0byBzdXBwb3J0IHZpZGVvIGZvcm1hdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDM3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBUZXN0RXhwZWN0YXRpb25zIGZvciB0ZXN0cyB1
c2luZyB2aWRlb3MgZm9yIHRoZSA8aW1nPiB0YWcuCisgICAgICAgIAorICAgICAgICAqIGh0dHAv
Y29uZi9mbGF0cGFrLWh0dHBkLmNvbmY6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9UZXN0RXhw
ZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zOgorICAg
ICAgICAqIHBsYXRmb3JtL3dwZS9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIwLTA1LTE3ICBDYXJs
b3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBN
b3ZlIHRvIG5ldyBQYXN0ZWJvYXJkIEFQSQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC9j
b25mL2ZsYXRwYWstaHR0cGQuY29uZiBiL0xheW91dFRlc3RzL2h0dHAvY29uZi9mbGF0cGFrLWh0
dHBkLmNvbmYKaW5kZXggY2E5YzlhODk4Y2JmODRiMDg0NDM4MTk5MjZmZTU3MDMxMmIyMzBmNi4u
YTc0ZjU2ZTY2YWZiYTdmOTU5ZjYzMWQ2MjUxZGM0MjIyZjViMGZkNiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC9jb25mL2ZsYXRwYWstaHR0cGQuY29uZgorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL2NvbmYvZmxhdHBhay1odHRwZC5jb25mCkBAIC01Miw4ICs1Miw2IEBAIEFjY2Vzc0ZpbGVO
YW1lIC5odGFjY2VzcwogVXNlQ2Fub25pY2FsTmFtZSBPbgogSG9zdG5hbWVMb29rdXBzIE9mZgog
Ci1UeXBlc0NvbmZpZyAvdXNyL2NvbmYvbWltZS50eXBlcwotCiBMb2dMZXZlbCB3YXJuCiBMb2dG
b3JtYXQgIiVoICVsICV1ICV0IFwiJXJcIiAlPnMgJWIgXCIle1JlZmVyZXJ9aVwiIFwiJXtVc2Vy
LUFnZW50fWlcIiIgY29tYmluZWQKIExvZ0Zvcm1hdCAiJWggJWwgJXUgJXQgXCIlclwiICU+cyAl
YiIgY29tbW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBl
Y3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggYTU1ZjI2NGZhZmI1MDZjYTg1NzkwZTE2Y2MxZGYxYTNlNWRkMDI4Ny4uZmMyZTY0Y2MyYTU4
MzBlNDUwODIzYzBmMDljZGE3NmUxOTY4NjAzYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2ds
aWIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNzQsNiArNzQsOCBAQAogIyAyLiBFWFBFQ1RFRCBGQUlM
VVJFUwogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAord2Via2l0Lm9yZy9iLzIx
MTk5NSBmYXN0L2ltYWdlcy9hbmltYXRlZC1pbWFnZS1tcDQuaHRtbCBbIEZhaWx1cmUgXQorCiAj
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIyBFbmQgb2YgRXhwZWN0ZWQgRmFpbHVy
ZXMKICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDZkOTUzZmZkZWZlNzY2OTBkZWZkMGMyMWFkYTAy
YzkxODVmNjhhMDAuLjU3OThhZWU5YWY0NDc2MGM5ZjNjMjcxZjkzNDM3OWIxNzJhMGQ0MGUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC0xMDcwLDExICsx
MDcwLDYgQEAgd2Via2l0Lm9yZy9iLzE3NTQxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2JhY2tncm91bmQtZmV0Y2gvaW50ZXJmYWNlcy0KIHdlYmtpdC5vcmcvYi8xNzU0MTkgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9iYWNrZ3JvdW5kLWZldGNoL2ludGVyZmFjZXMu
aHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE3NTQxOSBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9hYm9ydC9zZXJ2aWNld29ya2VyLWludGVyY2VwdGVkLmh0
dHBzLmh0bWwgWyBGYWlsdXJlIFBhc3MgXQogCi0jIExvYWRpbmcgTVA0IGFzIGFuIGltYWdlIGlz
IG5vdCBzdXBwb3J0ZWQgYnkgR1RLCi13ZWJraXQub3JnL2IvMTgwMzcwIGZhc3QvaW1hZ2VzL2Fu
aW1hdGVkLWltYWdlLW1wNC5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTgwMzcwIGh0dHAv
dGVzdHMvaW1hZ2VzL2ltYWdlLXN1cHBvcnRzLXZpZGVvLmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5v
cmcvYi8xODAzNzAgZmFzdC9pbWFnZXMvYW5pbWF0ZWQtaW1hZ2UtbXA0LWNyYXNoLmh0bWwgWyBT
a2lwIF0KLQogIyBHVEsgb3VnaHQgdG8gc3VwcG9ydCBhc3luYyBjbGlwYm9hcmQKIHdlYmtpdC5v
cmcvYi8yMTE5NzkgZWRpdGluZy9hc3luYy1jbGlwYm9hcmQvY2xpcGJvYXJkLWNoYW5nZS1kYXRh
LXdoaWxlLXdyaXRpbmcuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIxMTk3OSBlZGl0
aW5nL2FzeW5jLWNsaXBib2FyZC9jbGlwYm9hcmQtcmVhZC10ZXh0LWZyb20tcGxhdGZvcm0uaHRt
bCBbIEZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL1Rlc3RF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCBmOTZlZjYwOWM2NTdiN2Q5NjE0ZWViNzdlNjRlMTIzZTY2ZDY1M2Y4Li44YTk5MTkyZDlj
NDZhMGNkYTgzYzQ1ODE4Yjc2MTg2MzY0NzI0NjdlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS93cGUvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
cGUvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzY3LDExICszNjcsNiBAQCBCdWcoV1BFKSBmYXN0L3Jl
cGxhY2VkL3BkZi1hcy1vYmplY3QtYW5kLWVtYmVkLmh0bWwgWyBTa2lwIF0KIAogQnVnKFdQRSkg
ZmFzdC9oaWRwaS9wZGYtaW1hZ2Utc2NhbGVkLmh0bWwgWyBTa2lwIF0KIAotIyBMb2FkaW5nIE1Q
NCBhcyBhbiBpbWFnZSBpcyBub3Qgc3VwcG9ydGVkCi13ZWJraXQub3JnL2IvMTgwMzcwIGZhc3Qv
aW1hZ2VzL2FuaW1hdGVkLWltYWdlLW1wNC5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTgw
MzcwIGZhc3QvaW1hZ2VzL2FuaW1hdGVkLWltYWdlLW1wNC1jcmFzaC5odG1sIFsgU2tpcCBdCi13
ZWJraXQub3JnL2IvMTgwMzcwIGh0dHAvdGVzdHMvaW1hZ2VzL2ltYWdlLXN1cHBvcnRzLXZpZGVv
Lmh0bWwgWyBTa2lwIF0KLQogIyBPbmx5IE1hYyBoYXMgaW1wbGVtZW50ZWQgRGljdGlvbmFyeUxv
b2t1cAogZmFzdC9sYXllcnMvcHJldmVudC1oaXQtdGVzdC1kdXJpbmctbGF5b3V0Lmh0bWwgWyBT
a2lwIF0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>