<?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>230613</bug_id>
          
          <creation_ts>2021-09-22 05:32:51 -0700</creation_ts>
          <short_desc>MediaStream canvas.captureStream() fails for WebGL</short_desc>
          <delta_ts>2022-03-29 11:17:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=230618</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=230619</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=230621</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=230625</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=231061</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=231022</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=230624</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=235600</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>230338</dependson>
          <blocked>230620</blocked>
    
    <blocked>230623</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>913007768zyw</cc>
    
    <cc>alex</cc>
    
    <cc>ashley</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kbr</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>ldttmt</cc>
    
    <cc>mitch</cc>
    
    <cc>philipj</cc>
    
    <cc>rychouwei</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1796022</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-09-22 05:32:51 -0700</bug_when>
    <thetext>MediaStream canvas.captureStream() fails for WebGL
Produces black or red images</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796023</commentid>
    <comment_count>1</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-09-22 05:34:46 -0700</bug_when>
    <thetext>&lt;rdar://82307293&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796030</commentid>
    <comment_count>2</comment_count>
      <attachid>438942</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-09-22 06:07:00 -0700</bug_when>
    <thetext>Created attachment 438942
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796269</commentid>
    <comment_count>3</comment_count>
      <attachid>438942</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-09-22 16:34:55 -0700</bug_when>
    <thetext>Comment on attachment 438942
Patch

Nice work Kimmo figuring out how to make this work without the preserveDrawingBuffer hack. Let&apos;s see how it looks when the tests are green.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796813</commentid>
    <comment_count>4</comment_count>
      <attachid>439134</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-09-24 00:53:32 -0700</bug_when>
    <thetext>Created attachment 439134
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796867</commentid>
    <comment_count>5</comment_count>
      <attachid>439141</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-09-24 06:53:32 -0700</bug_when>
    <thetext>Created attachment 439141
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796869</commentid>
    <comment_count>6</comment_count>
      <attachid>439142</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-09-24 07:04:01 -0700</bug_when>
    <thetext>Created attachment 439142
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798233</commentid>
    <comment_count>7</comment_count>
      <attachid>439142</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-09-29 02:42:49 -0700</bug_when>
    <thetext>Comment on attachment 439142
Patch

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

&gt; Source/WebCore/ChangeLog:33
&gt; +        flakyness lets rendering happen)

Is there not a way to make a basic test that would:
- check that frames are generated.
- check that frames are not uninitialized (either through video painting in canvas or through internals API, see observeMediaStreamTrack/grabNextMediaStreamTrackFrame).

&gt; Source/WebCore/ChangeLog:37
&gt; +        captureStream() and playback implementation is so flaky.

Some tests need rebasing of their expected.txt files

&gt; Source/WebCore/platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm:898
&gt; +    return MediaSampleAVFObjC::createImageSample(WTFMove(*pixelBuffer), MediaSampleAVFObjC::VideoRotation::UpsideDown, true);

Why do we get it upside down and mirrored?
Upside down should be correctly handled everywhere, not so sure about mirrored since I am not sure we have sources with mirrored frames.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798263</commentid>
    <comment_count>8</comment_count>
      <attachid>439597</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-09-29 05:19:00 -0700</bug_when>
    <thetext>Created attachment 439597
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798469</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-29 11:22:06 -0700</bug_when>
    <thetext>Committed r283238 (242280@main): &lt;https://commits.webkit.org/242280@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 439597.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827828</commentid>
    <comment_count>10</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2022-01-03 14:49:49 -0800</bug_when>
    <thetext>*** Bug 229611 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827870</commentid>
    <comment_count>11</comment_count>
    <who name="Yuwei Zhang">913007768zyw</who>
    <bug_when>2022-01-04 00:29:10 -0800</bug_when>
    <thetext>(In reply to Jon Lee from comment #10)
&gt; *** Bug 229611 has been marked as a duplicate of this bug. ***

After testing at Monterey, I found that the bug was not fixed and I was wondering if anyone was following up？</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834403</commentid>
    <comment_count>12</comment_count>
    <who name="Alexander Khovansky">alex</who>
    <bug_when>2022-01-26 20:50:39 -0800</bug_when>
    <thetext>From my checks the bug was fixed but only for a moment, before this got broken again.
You can see the canvas to video demo is producing blank square https://webrtc.github.io/samples/src/content/capture/canvas-video/.

Caveat: the demo could work once, I think after a device restart. However if you reload the page, it would no longer work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834435</commentid>
    <comment_count>13</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-01-27 00:29:07 -0800</bug_when>
    <thetext>(In reply to Alexander Khovansky from comment #12)
&gt; From my checks the bug was fixed but only for a moment, before this got
&gt; broken again.
&gt; You can see the canvas to video demo is producing blank square
&gt; https://webrtc.github.io/samples/src/content/capture/canvas-video/.
&gt; 
&gt; Caveat: the demo could work once, I think after a device restart. However if
&gt; you reload the page, it would no longer work.

The flaky behaviour is due to bug 230623. It will be fixed once that fix ships, unfortunately it is not yet in public releases.
To workaround the flaky behaviour you could try to assign to the srcObject after the video element is created, for example asynchronously in a setTimeout callback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854992</commentid>
    <comment_count>14</comment_count>
    <who name="Trung Le">ldttmt</who>
    <bug_when>2022-03-24 19:25:02 -0700</bug_when>
    <thetext>I still have this issue in Safari 15.3 as well as Technology Preview versions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855910</commentid>
    <comment_count>15</comment_count>
    <who name="">rychouwei</who>
    <bug_when>2022-03-28 22:29:58 -0700</bug_when>
    <thetext>This issue still not fixed.

1. generate a canvas and a 2d context.
2. fill random number to canvas by context.fillText();
3. canvas.captureStream() and use video tag to play canvas mediaStream

can be reproduced on Mac Safari 15.4

https://sdk-web-1252463788.cos.ap-hongkong.myqcloud.com/trtc/webrtc/test/rychou-test/canvas-safari/index.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856099</commentid>
    <comment_count>16</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-03-29 11:17:09 -0700</bug_when>
    <thetext>(In reply to rychouwei from comment #15)
&gt; This issue still not fixed.
&gt; 
&gt; 1. generate a canvas and a 2d context.
&gt; 2. fill random number to canvas by context.fillText();
&gt; 3. canvas.captureStream() and use video tag to play canvas mediaStream
&gt; 
&gt; can be reproduced on Mac Safari 15.4
&gt; 
&gt; https://sdk-web-1252463788.cos.ap-hongkong.myqcloud.com/trtc/webrtc/test/
&gt; rychou-test/canvas-safari/index.html

Thanks for the report. This context2d issue is being tracked in bug 230621.
I&apos;ll add your bug there.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438942</attachid>
            <date>2021-09-22 06:07:00 -0700</date>
            <delta_ts>2021-09-24 00:53:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230613-20210922160658.patch</filename>
            <type>text/plain</type>
            <size>32586</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGUyYjhkZTA1ODdkM2Fi
MWM2Mzc2M2MyMTA4N2M3ZDEzZGMwOTgxNS4uMzZhNzc3YTE5MGVlNGU0NzAwZDc4YmRkYmY3Njlj
YTFlMWE0MDQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIxLTA5LTIyICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0g
Y2FudmFzLmNhcHR1cmVTdHJlYW0oKSBmYWlscyBmb3IgV2ViR0wKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDYxMworICAgICAgICA8cmRhcjovLzgy
MzA3MjkzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlbW92ZSBwcmV2aW91cyBpbmNvcnJlY3QgYmVoYXZpb3Igb2YgdHVybmluZyBvbiAicHJlc2Vy
dmVzRHJhd2luZ0J1ZmZlciIKKyAgICAgICAgYW5kIHNhbXBsaW5nIHRoZSBkcmF3aW5nIGJ1ZmZl
ci4gVGhlIGRyYXdpbmcgYnVmZmVyIGlzIG5vdCB3aGF0IHNob3VsZCAKKyAgICAgICAgZXZlciBi
ZSB0b3VjaGVkLCByYXRoZXIgaXQncyB0aGUgZGlzcGxheSBidWZmZXIgdGhhdCBzaG91bGQgYmUg
YXZhaWxhYmxlLgorICAgICAgICAKKyAgICAgICAgSW1wbGVtZW50IHNhbXBsaW5nIG9mIFdlYkdM
IGRpc3BsYXkgYnVmZmVyIGZvciAKKyAgICAgICAgbWVkaWEgc3RyZWFtIGNhcHR1cmUuIFRoZSB1
cG9uIHNhbXBsaW5nLCBvYnRhaW4gYSBzaGFyZWQgCisgICAgICAgIHJlZmVyZW5jZSB0byB0aGUg
CisgICAgICAgIGRpc3BsYXkgYnVmZmVyLCBwYXNzZXMgaXQgdG8gbWVkaWEgc2FtcGxlIGNvbnN1
bWluZyBwcm9jZXNzIGFuZCBtYXJrCisgICAgICAgIHRoZSBXZWJHTCBjb250ZXh0IGRpc3BsYXkg
YnVmZmVyIG5vbi1lbGlnaWJsZSBmb3IgcmVjeWNsaW5nIGFzIAorICAgICAgICBuZXcgZHJhd2lu
ZyBidWZmZXIuCisgICAgICAgIAorICAgICAgICBDdXJyZW50bHkgdGhlIGltcGxlbWVudGF0aW9u
IGlzIGRpc3BsYXllZCBjb3JyZWN0bHkgZm9yCisgICAgICAgIFdlYkdMIGNvbnRlbnRzIHRoYXQg
aXMgcHJlbXVsdGlwbGllZC4gVW5wcmVtdWx0aXBsaWVkCisgICAgICAgIGNvbnRlbnQgaXMgZml4
ZWQgaW4gdGhlIGFzc29jaWF0ZWQgYnVncy4KKworICAgICAgICBOb3RlOiB0aGVyZSBhcmUgYnVn
cyBwcmV2ZW50aW5nIHJvYnVzdCB1c2Ugb2YgdGhlIEFQSSwgCisgICAgICAgIGxpc3RlZCBpbiB0
aGUgYXNzb2NpYXRlZCBidWdzLiBBcyBzdWNoLCB0ZXN0aW5nIGlzIG5vdCBleHBhbmRlZAorICAg
ICAgICBpbiB0aGlzIGJ1Zy4KKworICAgICAgICBUZXN0ZWQgYnkgCisgICAgICAgIE1hbnVhbFRl
c3RzL21lZGlhc3RyZWFtL21lZGlhc3RyZWFtLWNhbnZhcy10by12aWRlby5odG1sIChhZGRlZCkK
KyAgICAgICAgCisgICAgICAgIGh0dHBzOi8vd2VicnRjLmdpdGh1Yi5pby9zYW1wbGVzL3NyYy9j
b250ZW50L2NhcHR1cmUvY2FudmFzLXZpZGVvLyAKKyAgICAgICAgKFJlZnJlc2ggdGhlIHBhZ2Ug
b3IgaGlkZSB0aGUgd2luZG93IHVudGlsIE1lZGlhUGxheWVyIGluaXRpYWxpemF0aW9uCisgICAg
ICAgIGZsYWt5bmVzcyBsZXRzIHJlbmRlcmluZyBoYXBwZW4pCisgICAgICAgIAorICAgICAgICBU
aGUgdGVzdCBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2NhcHR1cmVTdHJlYW0vY2FudmFz
M2QuaHRtbCAKKyAgICAgICAgY2Fubm90IHlldCBiZSB1c2VkIHRvIHRlc3QgdGhlIGltcGxlbWVu
dGF0aW9uIGFzIHRoZSByZXN0IG9mIHRoZQorICAgICAgICBjYXB0dXJlU3RyZWFtKCkgYW5kIHBs
YXliYWNrIGltcGxlbWVudGF0aW9uIGlzIHNvIGZsYWt5LgorICAgICAgICAKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6OmNh
bnZhc0NoYW5nZWQpOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnRvTWVkaWFTYW1wbGUpOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0
c1RvTWVkaWFTYW1wbGUpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmlzUHJlc2VydmluZ0RyYXdpbmdCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRp
YVNhbXBsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW06CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZUltYWdlU2FtcGxlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbjo6cHJlc2VudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01l
ZGlhU2FtcGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlh
U2FtcGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaDoKKwogMjAyMS0w
OS0xNiAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFk
ZCB1dGlsaXR5IHRvIGNyZWF0ZSBDVlBpeGVsQnVmZmVycyBmcm9tIElPU3VyZmFjZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1l
ZGlhU3RyZWFtVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9D
YW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAKaW5kZXggMDg4MDkzMzRhODIwYmQ4ZjYy
NWM5MzMwMzQyYWZiODlhOTZhZjI5ZS4uNGI1NmQ5YzFmOTFmZWRjZmIyNmNkYzRiMmYwYzdmZWEy
NmIzNWM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9D
YW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAKQEAgLTE1
MywxOSArMTUzLDYgQEAgdm9pZCBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNl
OjpjYW52YXNDaGFuZ2VkKENhbnZhc0Jhc2UmIGNhbnZhcywgY28KIHsKICAgICBBU1NFUlRfVU5V
U0VEKGNhbnZhcywgbV9jYW52YXMgPT0gJmNhbnZhcyk7CiAKLSNpZiBFTkFCTEUoV0VCR0wpCi0g
ICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gcHJlc2VydmUgZHJhd2luZyBidWZmZXIgYXMgd2UgYXJl
IGN1cnJlbnRseSBncmFiYmluZyBmcmFtZXMgYXN5bmNocm9ub3VzbHkuCi0gICAgLy8gV2Ugc2hv
dWxkIGluc3RlYWQgYWRkIGFuIGFuY2hvciBwb2ludCBmb3IgYm90aCAyZCBhbmQgM2QgY29udGV4
dHMgd2hlcmUgY2FudmFzIHdpbGwgYWN0dWFsbHkgcGFpbnQuCi0gICAgLy8gQW5kIGNhbGwgY2Fu
dmFzIG9ic2VydmVycyBmcm9tIHRoYXQgcG9pbnQuCi0gICAgaWYgKGlzPFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U+KGNhbnZhcy5yZW5kZXJpbmdDb250ZXh0KCkpKSB7Ci0gICAgICAgIGF1dG8m
IGNvbnRleHQgPSBkb3duY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPigqY2FudmFzLnJl
bmRlcmluZ0NvbnRleHQoKSk7Ci0gICAgICAgIGlmICghY29udGV4dC5pc1ByZXNlcnZpbmdEcmF3
aW5nQnVmZmVyKCkpIHsKLSAgICAgICAgICAgIGNhbnZhcy5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6Oldh
cm5pbmcsICJUdXJuaW5nIGRyYXdpbmcgYnVmZmVyIHByZXNlcnZhdGlvbiBmb3IgdGhlIFdlYkdM
IGNhbnZhcyBiZWluZyBjYXB0dXJlZCJfcyk7Ci0gICAgICAgICAgICBjb250ZXh0LmVuYWJsZVBy
ZXNlcnZlRHJhd2luZ0J1ZmZlcigpOwotICAgICAgICB9Ci0gICAgfQotI2VuZGlmCi0KICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIHRyeSB0byBnZW5lcmF0ZSB0aGUgZnJhbWUgYXQgdGhlIHRpbWUg
dGhlIHNjcmVlbiBpcyBiZWluZyB1cGRhdGVkLgogICAgIGlmIChtX2NhcHR1cmVDYW52YXNUaW1l
ci5pc0FjdGl2ZSgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENh
bnZhc0VsZW1lbnQuY3BwCmluZGV4IGYyODIxODkxODY4ZmUyOTgxNDFjMzk1OTdiMzA5ZTkzODNm
NGM2YjguLmM1ZTA1YTc5Yzc4ODQ1M2MxNDVjNzAwZDBmYzAyNTFiMGM0MjQ2ODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC03NTgsNiArNzU4LDEzIEBA
IFJlZlB0cjxJbWFnZURhdGE+IEhUTUxDYW52YXNFbGVtZW50OjpnZXRJbWFnZURhdGEoKQogUmVm
UHRyPE1lZGlhU2FtcGxlPiBIVE1MQ2FudmFzRWxlbWVudDo6dG9NZWRpYVNhbXBsZSgpCiB7CiAj
aWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShHU1RSRUFNRVIpCisjaWYgRU5BQkxFKFdFQkdMKQor
ICAgIGlmIChpczxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPihtX2NvbnRleHQuZ2V0KCkpKSB7
CisgICAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndl
YkFQSVN0YXRpc3RpY3NFbmFibGVkKCkpCisgICAgICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6c2hhcmVkKCkubG9nQ2FudmFzUmVhZChkb2N1bWVudCgpKTsKKyAgICAgICAgcmV0dXJuIGRv
d25jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+KCptX2NvbnRleHQpLnBhaW50Q29tcG9z
aXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCk7CisgICAgfQorI2VuZGlmCiAgICAgYXV0byogaW1h
Z2VCdWZmZXIgPSBidWZmZXIoKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggY2ZlYzhlNDU3MGFjYzY4ZGU2MGIzNjQ5
MjFjNzY0Y2FjNjQ5YzExZS4uYjc2YmRkZWU1NWMyMTQ4MDdmMjE3MTNlNWI5MjM4MThhNjE1NGUx
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTEzNCw2ICsxMzQsMTAgQEAKICNpbmNsdWRlICJPZmZz
Y3JlZW5DYW52YXMuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNs
dWRlICJNZWRpYVNhbXBsZS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UpOwpAQCAt
MTM3NCw2ICsxMzc4LDEzIEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvUGl4CiAgICAgY2xlYXJJZkNv
bXBvc2l0ZWQoQ2xlYXJDYWxsZXJPdGhlcik7CiAgICAgcmV0dXJuIG1fY29udGV4dC0+cGFpbnRS
ZW5kZXJpbmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcigpOwogfQorUmVmUHRyPE1lZGlhU2FtcGxlPiBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNh
bXBsZSgpCit7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fY29udGV4dC0+cGFpbnRDb21wb3NpdGVkUmVzdWx0
c1RvTWVkaWFTYW1wbGUoKTsKK30KKwogCiBXZWJHTFRleHR1cmU6OlRleHR1cmVFeHRlbnNpb25G
bGFnIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleHR1cmVFeHRlbnNpb25GbGFncygpIGNv
bnN0CiB7CkBAIC0zOTUwLDE0ICszOTYxLDYgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpleHRlbnNpb25Jc0VuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjplbmFibGVQcmVzZXJ2
ZURyYXdpbmdCdWZmZXIoKQotewotICAgIEFTU0VSVCghbV9hdHRyaWJ1dGVzLnByZXNlcnZlRHJh
d2luZ0J1ZmZlcik7Ci0gICAgbV9hdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlciA9IHRy
dWU7Ci0gICAgLy8gTXVzdCBzZW5kIHRoaXMgbm90aWZpY2F0aW9uIGRvd24gdG8gdGhlIEdyYXBo
aWNzQ29udGV4dEdMIGFzIHdlbGwuCi0gICAgbV9jb250ZXh0LT5lbmFibGVQcmVzZXJ2ZURyYXdp
bmdCdWZmZXIoKTsKLX0KLQogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpoaW50KEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gbW9kZSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9y
UGVuZGluZygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IDFiYjdmMWZmZGEyZGJhN2VhZDVmYTdiMjQzMjBh
Yzg2MTI0Nzg5NGUuLmZkYmM4ODRkNTYzYjBmYjkzNDkzMDJkOTkzODY2YTg1NWNiZTRhOTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmgKQEAgLTEyOCw2ICsxMjgsMTAgQEAgdXNpbmcgV2ViR0xDYW52YXMgPSBXVEY6
OlZhcmlhbnQ8UmVmUHRyPEhUTUxDYW52YXNFbGVtZW50PiwgUmVmUHRyPE9mZnNjcmVlbkNhbnYK
IHVzaW5nIFdlYkdMQ2FudmFzID0gV1RGOjpWYXJpYW50PFJlZlB0cjxIVE1MQ2FudmFzRWxlbWVu
dD4+OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorY2xhc3MgTWVkaWFTYW1w
bGU7CisjZW5kaWYKKwogY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSA6IHB1YmxpYyBH
cmFwaGljc0NvbnRleHRHTDo6Q2xpZW50LCBwdWJsaWMgR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdD
b250ZXh0LCBwcml2YXRlIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlciB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKTsKIHB1YmxpYzoKQEAg
LTIzMywxMCArMjM3LDYgQEAgcHVibGljOgogICAgIGJvb2wgZXh0ZW5zaW9uSXNFbmFibGVkKGNv
bnN0IFN0cmluZyYpOwogCiAgICAgYm9vbCBpc1ByZXNlcnZpbmdEcmF3aW5nQnVmZmVyKCkgY29u
c3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcjsgfQotICAgIC8v
IENvbmNlc3Npb24gdG8gY2FudmFzIGNhcHR1cmUgQVBJLCB3aGljaCBtdXN0IGR5bmFtaWNhbGx5
IGVuYWJsZQotICAgIC8vIHByZXNlcnZlRHJhd2luZ0J1ZmZlci4gVGhpcyBjYW4gb25seSBiZSBj
YWxsZWQgb25jZSwgd2hlbgotICAgIC8vIGlzUHJlc2VydmluZ0RyYXdpbmdCdWZmZXIoKSByZXR1
cm5zIGZhbHNlLgotICAgIHZvaWQgZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCk7CiAKICAg
ICBib29sIHByZXZlbnRCdWZmZXJDbGVhckZvckluc3BlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1f
cHJldmVudEJ1ZmZlckNsZWFyRm9ySW5zcGVjdG9yOyB9CiAgICAgdm9pZCBzZXRQcmV2ZW50QnVm
ZmVyQ2xlYXJGb3JJbnNwZWN0b3IoYm9vbCB2YWx1ZSkgeyBtX3ByZXZlbnRCdWZmZXJDbGVhckZv
ckluc3BlY3RvciA9IHZhbHVlOyB9CkBAIC0zOTIsNiArMzkyLDkgQEAgcHVibGljOgogICAgIHZv
aWQgcHJlcGFyZUZvckRpc3BsYXlXaXRoUGFpbnQoKSBmaW5hbDsKICAgICB2b2lkIHBhaW50UmVu
ZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1
ZmZlcj4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcigpOworI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBwYWludENvbXBvc2l0ZWRSZXN1
bHRzVG9NZWRpYVNhbXBsZSgpOworI2VuZGlmCiAKICAgICB2b2lkIHJlbW92ZVNoYXJlZE9iamVj
dChXZWJHTFNoYXJlZE9iamVjdCYpOwogICAgIHZvaWQgcmVtb3ZlQ29udGV4dE9iamVjdChXZWJH
TENvbnRleHRPYmplY3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCAzNmUzNDMxZjU2ZjA4Y2JhMjhkNjAw
ZWZlYTEzNTEyZGM4Mjk0Yjk4Li40NmMyNmFlYmZhMDg2NTEyMjNlZGY5YjViYzI3YTg2Mjk2Zjhk
ZmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0R0wuY3BwCkBAIC0zNjIsMTIgKzM2Miw2IEBAIEdyYXBoaWNzQ29udGV4dEdM
OjpHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMsIEdy
YXBoaWNzCiB7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0w6OmVuYWJsZVByZXNlcnZlRHJh
d2luZ0J1ZmZlcigpCi17Ci0gICAgLy8gQ2FudmFzIGNhcHR1cmUgc2hvdWxkIG5vdCBjYWxsIHRo
aXMgdW5sZXNzIG5lY2Vzc2FyeS4KLSAgICBBU1NFUlQoIW1fYXR0cnMucHJlc2VydmVEcmF3aW5n
QnVmZmVyKTsKLSAgICBtX2F0dHJzLnByZXNlcnZlRHJhd2luZ0J1ZmZlciA9IHRydWU7Ci19CiAK
IGJvb2wgR3JhcGhpY3NDb250ZXh0R0w6OmNvbXB1dGVGb3JtYXRBbmRUeXBlUGFyYW1ldGVycyhH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIHVuc2lnbmVkKiBjb21wb25lbnRzUGVyUGl4
ZWwsIHVuc2lnbmVkKiBieXRlc1BlckNvbXBvbmVudCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IDg1NGQ4MGE1
ODIzNmFlMmZmNjY0ZTFiMjhlYzc3OGViNjRhYjEwYWIuLmE2ZTNlNDRjODE5OWM1Y2RmNzRhOTNh
YzZmNjE0ZmQzMDY1ODU3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtNTksNyArNTksOSBAQCBjbGFzcyBQaXhl
bEJ1ZmZlcjsKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCiBjbGFzcyBH
cmFwaGljc0NvbnRleHRHTENWOwogI2VuZGlmCi0KKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
Y2xhc3MgTWVkaWFTYW1wbGU7CisjZW5kaWYKIAogLy8gQmFzZSBjbGFzcyBmb3IgZ3JhcGhpY3Mg
Y29udGV4dCBmb3IgaW1wbGVtZW50aW5nIFdlYkdMIHJlbmRlcmluZyBtb2RlbC4KIGNsYXNzIEdy
YXBoaWNzQ29udGV4dEdMIDogcHVibGljIFJlZkNvdW50ZWQ8R3JhcGhpY3NDb250ZXh0R0w+IHsK
QEAgLTEyNDQsMTMgKzEyNDYsNiBAQCBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzIGNvbnRleHRBdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyczsgfQogICAg
IHZvaWQgc2V0Q29udGV4dEF0dHJpYnV0ZXMoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzJiBhdHRycykgeyBtX2F0dHJzID0gYXR0cnM7IH0KIAotICAgIC8vIEZJWE1FOiBUaGUgY2Fs
bGluZyBzaXRlIHNob3VsZCBiZSBmaXhlZCwgdGhpcyBicmVha3MgdGhlIFdlYkdMIHNwZWMKLSAg
ICAvLyB3cnQgcHJlc2VydmVEcmF3aW5nQnVmZmVyID09IGZhbHNlIGJlaGF2aW9yLgotICAgIC8v
IENvbmNlc3Npb24gdG8gQ2FudmFzIGNhcHR1cmVTdHJlYW0sIHdoaWNoIG5lZWRzIHRvIGR5bmFt
aWNhbGx5IHNldAotICAgIC8vIHByZXNlcnZlRHJhd2luZ0J1ZmZlciB0byB0cnVlIGluIG9yZGVy
IHRvIGF2b2lkIGltcGxpY2l0IGNsZWFycy4KLSAgICAvLyBJbXBsZW1lbnRhdGlvbnMgZ2VuZXJh
bGx5IGRvIG5vdCBzdXBwb3J0IHRvZ2dsaW5nIHRoaXMgYml0IGFyYml0cmFyaWx5LgotICAgIHZp
cnR1YWwgdm9pZCBlbmFibGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKTsKLQogICAgIC8vIFN1cHBv
cnQgZm9yIGV4dGVuc2lvbnMuIFJldHVybnMgYSBub24tbnVsbCBvYmplY3QsIHRob3VnaCBub3QK
ICAgICAvLyBhbGwgbWV0aG9kcyBpdCBjb250YWlucyBtYXkgbmVjZXNzYXJpbHkgYmUgc3VwcG9y
dGVkIG9uIHRoZQogICAgIC8vIGN1cnJlbnQgaGFyZHdhcmUuIE11c3QgY2FsbCBFeHRlbnNpb25z
R0w6OnN1cHBvcnRzKCkgdG8KQEAgLTEyOTQsNiArMTI4OSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXImKSA9IDA7
CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBwYWludFJlbmRlcmluZ1Jl
c3VsdHNUb1BpeGVsQnVmZmVyKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwYWludENvbXBvc2l0
ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXImKSA9IDA7CisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKyAgICB2aXJ0dWFsIFJlZlB0cjxNZWRpYVNhbXBsZT4gcGFpbnRDb21wb3NpdGVkUmVz
dWx0c1RvTWVkaWFTYW1wbGUoKSA9IDA7CisjZW5kaWYKIAogICAgIC8vIEZJWE1FOiB0aGlzIHNo
b3VsZCBiZSByZW1vdmVkLiBUaGUgbGF5ZXIgc2hvdWxkIGJlIG1hcmtlZCBjb21wb3NpdGVkIGJ5
CiAgICAgLy8gcHJlcGFyaW5nIGZvciBkaXNwbGF5LCBzbyB0aGF0IGNhbnZhcyBpbWFnZSBidWZm
ZXIgYW5kIHRoZSBsYXllciBhZ3JlZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2UuY3BwCmluZGV4IDc1ZWNiMWU5ODY2NTM5MWE3ODBlMzA1YmQ4Y2U5YTVjNzMxODNhMWMuLjdh
ZWUzOGYzOWYzYjNkYWQ2MjQwODJkYmJiOTA4NDQ2M2JjMzJhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKQEAgLTk3LDEzICs5Nyw2IEBAIEdDR0xiaXRmaWVs
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0QnVmZmVyc1RvQXV0b0NsZWFy
KCkgY29uc3QKICAgICByZXR1cm4gbV9idWZmZXJzVG9BdXRvQ2xlYXI7CiB9CiAKLXZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZl
cigpCi17Ci0gICAgLy8gUmVkZWNsYXJlZCBmb3IgZXhwb3J0IHJlYXNvbnMuCi0gICAgLy8gRklY
TUU6IFRoZSB3aG9sZSBmdW5jdGlvbiBzaG91bGQgYmUgcmVtb3ZlZC4KLSAgICBHcmFwaGljc0Nv
bnRleHRHTDo6ZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCk7Ci19Ci0KIGJvb2wgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnN1cHBvcnRzKGNvbnN0IFN0cmluZyYgbmFtZSkK
IHsKICAgICB3YWl0VW50aWxJbml0aWFsaXplZCgpOwpAQCAtMTU2LDUgKzE0OSwxMiBAQCB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpnZXRuVW5pZm9ybWl2RVhUKEdDR0x1
aW50LCBHQ0dMaW50LCBHQ0dMcwogewogfQogI2VuZGlmCisKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKSAmJiAhUExBVEZPUk0oQ09DT0EpCitSZWZQdHI8TWVkaWFTYW1wbGU+IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBs
ZSgpCit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisjZW5kaWYKIH0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKaW5kZXggYmRkYTc4NWY2MGU1Zjc1Yjg0NmNm
MGI2Y2ZhMjRhYTczZWU1ZDllYS4uZTllY2I4N2M3MGE1NDMwMDgyZjc0NmQ2MjZhMDUxZWJkYzY3
MjUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCkBAIC02Nyw3ICs2
Nyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEJ1ZmZlcnNUb0F1dG9DbGVhcihHQ0dMYml0Zmll
bGQpIGZpbmFsOwogICAgIEdDR0xiaXRmaWVsZCBnZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25z
dCBmaW5hbDsKICAgICB2b2lkIG1hcmtMYXllckNvbXBvc2l0ZWQoKSBmaW5hbDsKLSAgICB2b2lk
IGVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpIGZpbmFsOwogCiAjaWYgRU5BQkxFKFZJREVP
KSAmJiBVU0UoQVZGT1VOREFUSU9OKQogICAgIEdyYXBoaWNzQ29udGV4dEdMQ1YqIGFzQ1YoKSBm
aW5hbDsKQEAgLTgzLDYgKzgyLDkgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0blVuaWZvcm1mdkVY
VChHQ0dMdWludCwgR0NHTGludCwgR0NHTHNpemVpLCBHQ0dMZmxvYXQqKSBmaW5hbDsKICAgICB2
b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQsIEdDR0xpbnQsIEdDR0xzaXplaSwgR0NHTGlu
dCopIGZpbmFsOwogI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBSZWZQdHI8
TWVkaWFTYW1wbGU+IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkgZmluYWw7
CisjZW5kaWYKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBTdHJpbmcm
IGF2YWlsYWJsZUV4dGVuc2lvbnMsIGNvbnN0IFN0cmluZyYgcmVxdWVzdGFibGVFeHRlbnNpb25z
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKaW5kZXggNTQ1
ZjBiZTFjNTBjYmZlNDE3MDE4MDM1NmY4OGNlM2M1NTJjODZmNy4uN2RkY2Y0OWJkMWRmYzM0N2E0
NTQ5YmExZjhjNWZmZTBmOTZiY2VmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFT
YW1wbGVBVkZPYmpDLmgKQEAgLTQwLDYgKzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8
TWVkaWFTYW1wbGVBVkZPYmpDPiBjcmVhdGUoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlLCBBdG9t
U3RyaW5nIHRyYWNrSUQpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFTYW1wbGVBVkZPYmpD
KHNhbXBsZSwgdHJhY2tJRCkpOyB9CiAgICAgc3RhdGljIFJlZjxNZWRpYVNhbXBsZUFWRk9iakM+
IGNyZWF0ZShDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGUsIFZpZGVvUm90YXRpb24gcm90YXRpb24g
PSBWaWRlb1JvdGF0aW9uOjpOb25lLCBib29sIG1pcnJvcmVkID0gZmFsc2UpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgTWVkaWFTYW1wbGVBVkZPYmpDKHNhbXBsZSwgcm90YXRpb24sIG1pcnJvcmVk
KSk7IH0KICAgICBzdGF0aWMgUmVmUHRyPE1lZGlhU2FtcGxlQVZGT2JqQz4gY3JlYXRlSW1hZ2VT
YW1wbGUoUGl4ZWxCdWZmZXImJik7CisgICAgc3RhdGljIFJlZlB0cjxNZWRpYVNhbXBsZUFWRk9i
akM+IGNyZWF0ZUltYWdlU2FtcGxlKFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiYmLCBWaWRl
b1JvdGF0aW9uLCBib29sIG1pcnJvcmVkKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2
b2lkIHNldEFzRGlzcGxheUltbWVkaWF0ZWx5KE1lZGlhU2FtcGxlJik7CiAgICAgc3RhdGljIFJl
dGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gY2xvbmVTYW1wbGVCdWZmZXJBbmRTZXRBc0Rpc3Bs
YXlJbW1lZGlhdGVseShDTVNhbXBsZUJ1ZmZlclJlZik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9i
akMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVNhbXBsZUFWRk9iakMubW0KaW5kZXggY2YzYzM0MTBhMzhhZGVjNDk1N2M5NzE0MmIz
MjQyMjRkNWFmZDgxMi4uNjQ5NjMzNGZmMWNiZWY3ZTRiOTg5YmVlYmIxN2EwYmRlZjU0MWJhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbQpAQCAtOTUs
MjQgKzk1LDMzIEBAIFJlZlB0cjxNZWRpYVNhbXBsZUFWRk9iakM+IE1lZGlhU2FtcGxlQVZGT2Jq
Qzo6Y3JlYXRlSW1hZ2VTYW1wbGUoUGl4ZWxCdWZmZXImJiBwCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KICAgICBBU1NFUlRfVU5VU0VEKHN0YXR1cywgIXN0YXR1cyk7CisgICAgcmV0
dXJuIGNyZWF0ZUltYWdlU2FtcGxlKFdURk1vdmUoY3ZQaXhlbEJ1ZmZlciksIFZpZGVvUm90YXRp
b246Ok5vbmUsIGZhbHNlKTsKK30KIAorUmVmUHRyPE1lZGlhU2FtcGxlQVZGT2JqQz4gTWVkaWFT
YW1wbGVBVkZPYmpDOjpjcmVhdGVJbWFnZVNhbXBsZShSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJl
Zj4mJiBwaXhlbEJ1ZmZlciwgVmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwgYm9vbCBtaXJyb3JlZCkK
K3sKICAgICBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb25SYXcg
PSBudWxscHRyOwotICAgIHN0YXR1cyA9IFBBTDo6Q01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uQ3Jl
YXRlRm9ySW1hZ2VCdWZmZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY3ZQaXhlbEJ1ZmZlci5nZXQo
KSwgJmZvcm1hdERlc2NyaXB0aW9uUmF3KTsKLSAgICBBU1NFUlQoIXN0YXR1cyk7CisgICAgYXV0
byBzdGF0dXMgPSBQQUw6OkNNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZUZvckltYWdlQnVm
ZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBpeGVsQnVmZmVyLmdldCgpLCAmZm9ybWF0RGVzY3Jp
cHRpb25SYXcpOworICAgIGlmIChzdGF0dXMgfHwgIWZvcm1hdERlc2NyaXB0aW9uUmF3KSB7Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CiAgICAgYXV0byBmb3JtYXREZXNjcmlwdGlvbiA9IGFkb3B0Q0YoZm9ybWF0RGVzY3JpcHRp
b25SYXcpOwogCiAgICAgQ01TYW1wbGVUaW1pbmdJbmZvIHNhbXBsZVRpbWluZ0luZm9ybWF0aW9u
ID0geyBQQUw6OmtDTVRpbWVJbnZhbGlkLCBQQUw6OmtDTVRpbWVJbnZhbGlkLCBQQUw6OmtDTVRp
bWVJbnZhbGlkIH07CiAgICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyUmF3ID0gbnVs
bHB0cjsKLSAgICBzdGF0dXMgPSBQQUw6OkNNU2FtcGxlQnVmZmVyQ3JlYXRlUmVhZHlXaXRoSW1h
Z2VCdWZmZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY3ZQaXhlbEJ1ZmZlci5nZXQoKSwgZm9ybWF0
RGVzY3JpcHRpb24uZ2V0KCksICZzYW1wbGVUaW1pbmdJbmZvcm1hdGlvbiwgJnNhbXBsZUJ1ZmZl
clJhdyk7Ci0gICAgQVNTRVJUKCFzdGF0dXMpOworICAgIHN0YXR1cyA9IFBBTDo6Q01TYW1wbGVC
dWZmZXJDcmVhdGVSZWFkeVdpdGhJbWFnZUJ1ZmZlcihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwaXhl
bEJ1ZmZlci5nZXQoKSwgZm9ybWF0RGVzY3JpcHRpb24uZ2V0KCksICZzYW1wbGVUaW1pbmdJbmZv
cm1hdGlvbiwgJnNhbXBsZUJ1ZmZlclJhdyk7CisgICAgaWYgKHN0YXR1cyB8fCAhc2FtcGxlQnVm
ZmVyUmF3KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CiAgICAgYXV0byBzYW1wbGVCdWZmZXIgPSBhZG9wdENGKHNhbXBsZUJ1
ZmZlclJhdyk7Ci0KICAgICBDRkFycmF5UmVmIGF0dGFjaG1lbnRzQXJyYXkgPSBQQUw6OkNNU2Ft
cGxlQnVmZmVyR2V0U2FtcGxlQXR0YWNobWVudHNBcnJheShzYW1wbGVCdWZmZXIuZ2V0KCksIHRy
dWUpOwogICAgIGZvciAoQ0ZJbmRleCBpID0gMCwgY291bnQgPSBDRkFycmF5R2V0Q291bnQoYXR0
YWNobWVudHNBcnJheSk7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIENGTXV0YWJsZURpY3Rp
b25hcnlSZWYgYXR0YWNobWVudHMgPSBjaGVja2VkX2NmX2Nhc3Q8Q0ZNdXRhYmxlRGljdGlvbmFy
eVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChhdHRhY2htZW50c0FycmF5LCBpKSk7CiAgICAg
ICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGF0dGFjaG1lbnRzLCBQQUw6OmtDTVNhbXBsZUF0dGFj
aG1lbnRLZXlfRGlzcGxheUltbWVkaWF0ZWx5LCBrQ0ZCb29sZWFuVHJ1ZSk7CiAgICAgfQotICAg
IHJldHVybiBjcmVhdGUoc2FtcGxlQnVmZmVyLmdldCgpKTsKKyAgICByZXR1cm4gY3JlYXRlKHNh
bXBsZUJ1ZmZlci5nZXQoKSwgcm90YXRpb24sIG1pcnJvcmVkKTsKIH0KIAogTWVkaWFUaW1lIE1l
ZGlhU2FtcGxlQVZGT2JqQzo6cHJlc2VudGF0aW9uVGltZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YXBDaGFpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAKaW5kZXggOWM0MDI3
MjFkYjVmZDY0Nzg2YTJlNmEyYmE0ZmU0MjA0ZjY1MGJmNi4uYjZiZjliODE3ZTI4NWJjMmI4NTA2
NWU5YWMzZWQ3ZWVmYmE3NjA4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcApAQCAtMzcsNiArMzcsMTEgQEAgY29uc3QgR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW46OkJ1ZmZlciYgR3JhcGhpY3NDb250ZXh0R0xJ
T1N1cmZhY2VTd2EKICAgICByZXR1cm4gbV9kaXNwbGF5QnVmZmVyOwogfQogCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjptYXJrRGlzcGxheUJ1ZmZlckluVXNlKCkK
K3sKKyAgICBtX2Rpc3BsYXlCdWZmZXJJblVzZSA9IHRydWU7IAorfQorCiBHcmFwaGljc0NvbnRl
eHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6QnVmZmVyIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluOjpyZWN5Y2xlQnVmZmVyKCkKIHsKICAgICBpZiAobV9zcGFyZUJ1ZmZlci5zdXJm
YWNlKSB7CkBAIC01Niw2ICs2MSwxMCBAQCB2b2lkKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbjo6ZGV0YWNoQ2xpZW50KCkKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZh
Y2VTd2FwQ2hhaW46OnByZXNlbnQoQnVmZmVyJiYgYnVmZmVyKQogewogICAgIG1fc3BhcmVCdWZm
ZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fZGlzcGxheUJ1ZmZlciwgV1RGTW92ZShidWZmZXIpKTsKKyAg
ICBpZiAobV9kaXNwbGF5QnVmZmVySW5Vc2UpIHsKKyAgICAgICAgbV9kaXNwbGF5QnVmZmVySW5V
c2UgPSBmYWxzZTsKKyAgICAgICAgbV9zcGFyZUJ1ZmZlci5zdXJmYWNlLnJlc2V0KCk7CisgICAg
fQogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4uaAppbmRleCBlNDM3ZDdkZjBlZTg0MTM5ZWFmZTNlMmZkNzI3MTk4YjhmNjFhMDYxLi5i
NGFiYzg3ZDNmMTM2NDJkNDk1YTViYmFkY2YyMDkxNjFmOGM1NjE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3Vy
ZmFjZVN3YXBDaGFpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgKQEAgLTY3LDYgKzY3LDkg
QEAgcHVibGljOgogICAgIC8vIG5leHQgcHJlc2VudCwgcmVjeWNsZUJ1ZmZlciBvciBkZXRhY2hD
bGllbnQgY2FsbC4KICAgICB2aXJ0dWFsIGNvbnN0IEJ1ZmZlciYgZGlzcGxheUJ1ZmZlcigpIGNv
bnN0OwogCisgICAgLy8gTWFya3MgdGhlIGN1cnJlbnQgZGlzcGxheSBidWZmZXIgdG8gYmUgaW4g
dXNlIGFuZCBub3QgZWxpZ2JsZSB0byByZWN5Y2xpbmcuCisgICAgdm9pZCBtYXJrRGlzcGxheUJ1
ZmZlckluVXNlKCk7CisgICAgCiAgICAgLy8gRGV0YWNoZXMgdGhlIGNsaWVudCBhbmQgcmV0dXJu
cyB0aGUgY3VycmVudCBjb250ZW50cyBidWZmZXIgbWV0YWRhdGEgaGFuZGxlLgogICAgIC8vIFRo
ZSBpZiBtdWx0aXBsZSBidWZmZXJzIGhhdmUgYmVlbiBzdWJtaXR0ZWQsIHJlY3ljbGVCdWZmZXIg
bXVzdCBoYXZlIGJlZW4gY2FsbGVkIGJlZm9yZSBjYWxsaW5nCiAgICAgLy8gdGhpcy4KQEAgLTc1
LDYgKzc4LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEJ1ZmZlciBtX2Rpc3BsYXlCdWZm
ZXI7CiAgICAgQnVmZmVyIG1fc3BhcmVCdWZmZXI7CisgICAgYm9vbCBtX2Rpc3BsYXlCdWZmZXJJ
blVzZSA9IGZhbHNlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Q29jb2EubW0KaW5kZXggNzU1Y2Q0NTg3YTRkZDVjYjMxMDU4ZWU2ODk0OTQ0YmVlYzQ4NGU1Yi4u
ZTY3MTA0YTdjN2NiMTM5MWU1NzdhZWFjY2ZiODdmMDFjYWRlYzNlYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5B
QkxFKFdFQkdMKQogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKIAorI2ltcG9y
dCAiQ1ZVdGlsaXRpZXMuaCIKICNpbXBvcnQgIkV4dGVuc2lvbnNHTEFOR0xFLmgiCiAjaW1wb3J0
ICJHcmFwaGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJHcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIgpAQCAtNTAsNiArNTEsMTAgQEAKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHRHTENWLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCisjaW5jbHVkZSAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCisjZW5kaWYKKwogV1RGX1dFQUtf
TElOS19GT1JDRV9JTVBPUlQoRUdMX0luaXRpYWxpemUpOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC04NzgsNiArODgzLDIxIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbGVh
c2VBbGxSZXNvdXJjZXNJZlVudXNlZCgpCiAgICAgU2NvcGVkRUdMRGVmYXVsdERpc3BsYXk6OnJl
bGVhc2VBbGxSZXNvdXJjZXNJZlVudXNlZCgpOwogfQogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKK1JlZlB0cjxNZWRpYVNhbXBsZT4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50Q29t
cG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkKK3sKKyAgICBhdXRvICZkaXNwbGF5QnVmZmVy
ID0gbV9zd2FwQ2hhaW4tPmRpc3BsYXlCdWZmZXIoKTsKKyAgICBpZiAoIWRpc3BsYXlCdWZmZXIu
c3VyZmFjZSB8fCAhZGlzcGxheUJ1ZmZlci5oYW5kbGUpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIGlmIChkaXNwbGF5QnVmZmVyLnN1cmZhY2UtPnNpemUoKSAhPSBnZXRJbnRlcm5hbEZy
YW1lYnVmZmVyU2l6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBtX3N3YXBDaGFp
bi0+bWFya0Rpc3BsYXlCdWZmZXJJblVzZSgpOworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBjcmVh
dGVDVlBpeGVsQnVmZmVyKGRpc3BsYXlCdWZmZXIuc3VyZmFjZS0+c3VyZmFjZSgpKTsKKyAgICBp
ZiAoIXBpeGVsQnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gTWVk
aWFTYW1wbGVBVkZPYmpDOjpjcmVhdGVJbWFnZVNhbXBsZShXVEZNb3ZlKCpwaXhlbEJ1ZmZlciks
IE1lZGlhU2FtcGxlQVZGT2JqQzo6VmlkZW9Sb3RhdGlvbjo6VXBzaWRlRG93biwgdHJ1ZSk7Cit9
CisjZW5kaWYKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tCmluZGV4IDBjNDE0MDE1
YjdiMGYzNGJiMjhiZTM0NTUwOWM3NDI5ZTMxZGFhM2MuLjE5MzRlZjVlZjMzNjlhMjM2OTk2YjJl
NmRlMGQ3NjM4YjE5MTlmYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbQpAQCAtMzIsNiArMzIsMTEgQEAKICNpbXBvcnQgIldl
YkdMTGF5ZXIuaCIKICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorI2ltcG9ydCAiQ1ZVdGlsaXRpZXMuaCIKKyNpbXBvcnQgIk1l
ZGlhU2FtcGxlQVZGT2JqQy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkK
QEAgLTYzLDUgKzY4LDIwIEBAIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1TCiAgICAgcmV0dXJuIFtt
X3dlYkdMTGF5ZXIgc3dhcENoYWluXTsKIH0KIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCitS
ZWZQdHI8TWVkaWFTYW1wbGU+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwYWlu
dENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpCit7CisgICAgYXV0byYgc2MgPSBwbGF0
Zm9ybVN3YXBDaGFpbigpOworICAgIGF1dG8mIGRpc3BsYXlCdWZmZXIgPSBzYy5kaXNwbGF5QnVm
ZmVyKCk7CisgICAgaWYgKCFkaXNwbGF5QnVmZmVyLnN1cmZhY2UpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHNjLm1hcmtEaXNwbGF5QnVmZmVySW5Vc2UoKTsKKyAgICBhdXRvIHBpeGVs
QnVmZmVyID0gY3JlYXRlQ1ZQaXhlbEJ1ZmZlcihkaXNwbGF5QnVmZmVyLnN1cmZhY2UtPnN1cmZh
Y2UoKSk7CisgICAgaWYgKCFwaXhlbEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgcmV0dXJuIE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlSW1hZ2VTYW1wbGUoV1RGTW92ZSgq
cGl4ZWxCdWZmZXIpLCBNZWRpYVNhbXBsZUFWRk9iakM6OlZpZGVvUm90YXRpb246OlVwc2lkZURv
d24sIHRydWUpOworfQorI2VuZGlmCisKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5jcHAKaW5kZXggZTYwM2MyYmY1ZmZiYTdhZjJiMzQyZTgwZDc2ODRhMDk3MTQx
MGZlYi4uMTEyYTZmZDFjOThiZmRiNDEyNTI2N2JjOGM1M2YzZWQzYWEwYWFmYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCkBAIC03MiwxNCArNzIsNiBAQCBHQ0dMYml0
ZmllbGQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNv
bnN0CiAgICAgcmV0dXJuIG1fYnVmZmVyc1RvQXV0b0NsZWFyOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjplbmFibGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKQotewotICAgIEdy
YXBoaWNzQ29udGV4dEdMOjplbmFibGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKTsKLSAgICAvLyBB
ZnRlciBkeW5hbWljYWxseSB0cmFuc2l0aW9uaW5nIHRvIHByZXNlcnZlRHJhd2luZ0J1ZmZlcjp0
cnVlCi0gICAgLy8gZm9yIGNhbnZhcyBjYXB0dXJlLCBjbGVhciBvdXQgYW55IGJ1ZmZlciBhdXRv
LWNsZWFyaW5nIHN0YXRlLgotICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFyID0gMDsKLX0KLQogI2lm
ICFVU0UoQU5HTEUpCiBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEUmVz
b3VyY2VTYWZlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3Jk
ZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludCB1bnBhY2tBbGlnbm1l
bnQpCiB7CkBAIC0xNzAsNiArMTYyLDEzIEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb1BpeGVsCiAgICAg
cmV0dXJuIHJlc3VsdHM7CiB9CiAKKyNpZiAhUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCitSZWZQdHI8TWVkaWFTYW1wbGU+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpw
YWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpCit7CisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisjZW5kaWYKKwogc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnJlYWRSZW5kZXJpbmdSZXN1bHRzRm9yUGFpbnRpbmcoKQogewogICAgIGlm
ICghbWFrZUNvbnRleHRDdXJyZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5o
CmluZGV4IGEyOTRlMzU2MDRlNzdmZGViZDg4NDFjNTU4ZDk0M2UzNDU4YTFmYmUuLmZlNTlkZWIw
OWQ4OGNlN2FkNThhZDUyMDkwYzRlNTYwNGEzN2IyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5oCkBAIC00NjAsMTMgKzQ2MCwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNl
dEJ1ZmZlcnNUb0F1dG9DbGVhcigpOwogICAgIHZvaWQgc2V0QnVmZmVyc1RvQXV0b0NsZWFyKEdD
R0xiaXRmaWVsZCkgZmluYWw7CiAgICAgR0NHTGJpdGZpZWxkIGdldEJ1ZmZlcnNUb0F1dG9DbGVh
cigpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCkg
ZmluYWw7CiAKICAgICB2b2lkIGRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKTsK
IAogICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXImKSBm
aW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBwYWludFJlbmRlcmluZ1Jlc3Vs
dHNUb1BpeGVsQnVmZmVyKCkgZmluYWw7CiAgICAgdm9pZCBwYWludENvbXBvc2l0ZWRSZXN1bHRz
VG9DYW52YXMoSW1hZ2VCdWZmZXImKSBmaW5hbDsKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
ICAgIFJlZlB0cjxNZWRpYVNhbXBsZT4gcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1w
bGUoKSBmaW5hbDsKKyNlbmRpZgogCiAgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gcmVh
ZFJlbmRlcmluZ1Jlc3VsdHNGb3JQYWludGluZygpOwogICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxC
dWZmZXI+IHJlYWRDb21wb3NpdGVkUmVzdWx0c0ZvclBhaW50aW5nKCk7CmRpZmYgLS1naXQgYS9D
aGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggNWIwMzkzYjg0NmU4OThiYWYxNDFmMzJlNjEwMzFl
MTJkZmJkMGQzMy4uYzIwNmVmNmFlMjhiOGFlMGI0ODdkYTFmMTEwMzgxMjgwOTQ2MGEzMyAxMDA2
NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIx
LTA5LTIyICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAg
TWVkaWFTdHJlYW0gY2FudmFzLmNhcHR1cmVTdHJlYW0oKSBmYWlscyBmb3IgV2ViR0wKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDYxMworICAgICAg
ICA8cmRhcjovLzgyMzA3MjkzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBhIG1hbnVhbCB0ZXN0IHRvIGludGVyYWN0IHdpdGggbWVkaWEgc3Ry
ZWFtCisgICAgICAgIGNhcHR1cmVTdHJlYW0oKSBiZWhhdmlvciB1bnRpbCB0aGUgaW1wbGVtZW50
YXRpb24gaXMKKyAgICAgICAgdGVzdGFibGUuCisKKyAgICAgICAgKiBNYW51YWxUZXN0cy9tZWRp
YXN0cmVhbS9tZWRpYXN0cmVhbS1jYW52YXMtdG8tdmlkZW8uaHRtbDogQWRkZWQuCisKIDIwMjEt
MDktMTcgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgT2JqQyBhcyBzdXBwb3J0ZWQgLmNsYW5nLWZvcm1hdCBsYW5ndWFnZQpkaWZmIC0tZ2l0IGEv
TWFudWFsVGVzdHMvbWVkaWFzdHJlYW0vbWVkaWFzdHJlYW0tY2FudmFzLXRvLXZpZGVvLmh0bWwg
Yi9NYW51YWxUZXN0cy9tZWRpYXN0cmVhbS9tZWRpYXN0cmVhbS1jYW52YXMtdG8tdmlkZW8uaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43ZDBhMDQwMmJjNzlhMWU3ZjY1ZTg3NjY4MDYzODdhMWY0NjY3OWFmCi0t
LSAvZGV2L251bGwKKysrIGIvTWFudWFsVGVzdHMvbWVkaWFzdHJlYW0vbWVkaWFzdHJlYW0tY2Fu
dmFzLXRvLXZpZGVvLmh0bWwKQEAgLTAsMCArMSwxOTIgQEAKKzxodG1sPgorPGhlYWQ+CisgICAg
PHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICB2aWRlbyB7IGJvcmRlcjogc29saWQgMXB4IGJs
YWNrOyB9CisgICAgY2FudmFzIHsgcGFkZGluZzogMXB4IH0KKyAgICAucGxhY2Vob2xkZXIgeyAK
KyAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICBib3JkZXI6IDFweCBkYXNo
ZWQgYmxhY2s7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxNTBweDsK
KyAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+Cis8aW5wdXQgdHlwZT0i
YnV0dG9uIiBvbmNsaWNrPSJkcmF3T25jZSgpIiB2YWx1ZT0iRHJhdyBvbmNlIiAvPgorPGlucHV0
IHR5cGU9ImJ1dHRvbiIgb25jbGljaz0iY2xlYXJPbmNlKCkiIHZhbHVlPSJDbGVhciBvbmNlIiAv
PgorPGlucHV0IHR5cGU9ImJ1dHRvbiIgb25jbGljaz0idG9nZ2xlRHJhd2luZygpIiB2YWx1ZT0i
VG9nZ2xlIGRyYXdpbmciLz4KKzwvcD4KKzxwPgorICAgIDx1bD4KKyAgICAgICAgPGxpPkxlZnQ6
IGNhbnZhczwvbGk+CisgICAgICAgIDxsaT5SaWdodDogdmlkZW88L2xpPgorICAgICAgICA8bGk+
VG9wIHJlY3RhbmdsZSBzbWFsbDogb3BhcXVlPC9saT4KKyAgICAgICAgPGxpPkJvdHRvbSByZWN0
YW5nbGUgYmlnOiA1MCUgdHJhbnNsdWNlbnQ8L2xpPgorICAgICAgICA8bGk+QmFja2dyb3VuZDog
dHJhbnNwYXJlbnQ8L2xpPgorICAgIDwvdWw+Cis8L3A+Cis8c2NyaXB0PgorCit2YXIgY3R4MkRz
ID0gW107CisKK3ZhciBnbHMgPSBbXTsKKworZnVuY3Rpb24gY3JlYXRlVGVzdHMoKQoreyAKKyAg
ICBsZXQgZ2xDYXNlcyA9IFtdOworICAgIGZvciAobGV0IHByZXNlcnZlRHJhd2luZ0J1ZmZlciBv
ZiBbdHJ1ZSwgZmFsc2VdKSB7CisgICAgICAgIGZvciAobGV0IGFscGhhIG9mIFt0cnVlLCBmYWxz
ZV0pIHsKKyAgICAgICAgICAgIGZvciAobGV0IHByZW11bHRpcGxpZWRBbHBoYSBvZiBbdHJ1ZSwg
ZmFsc2VdKSB7CisgICAgICAgICAgICAgICAgZ2xDYXNlcy5wdXNoKHsKKyAgICAgICAgICAgICAg
ICAgICAgcHJlc2VydmVEcmF3aW5nQnVmZmVyOiBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIsIAorICAg
ICAgICAgICAgICAgICAgICBhbHBoYTogYWxwaGEsIAorICAgICAgICAgICAgICAgICAgICBwcmVt
dWx0aXBsaWVkQWxwaGE6IHByZW11bHRpcGxpZWRBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAg
YW50aWFsaWFzOiBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgaW5Eb2N1bWVudDogdHJ1ZQor
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAg
IGdsQ2FzZXMucHVzaCh7CisgICAgICAgIHByZXNlcnZlRHJhd2luZ0J1ZmZlcjogZmFsc2UsIAor
ICAgICAgICBhbHBoYTogdHJ1ZSwgCisgICAgICAgIHByZW11bHRpcGxpZWRBbHBoYTogdHJ1ZSwK
KyAgICAgICAgYW50aWFsaWFzOiB0cnVlLAorICAgICAgICBpbkRvY3VtZW50OiB0cnVlCisgICAg
fSk7CisgICAgZ2xDYXNlcy5wdXNoKHsKKyAgICAgICAgcHJlc2VydmVEcmF3aW5nQnVmZmVyOiBm
YWxzZSwgCisgICAgICAgIGFscGhhOiB0cnVlLCAKKyAgICAgICAgcHJlbXVsdGlwbGllZEFscGhh
OiB0cnVlLAorICAgICAgICBhbnRpYWxpYXM6IGZhbHNlLAorICAgICAgICBpbkRvY3VtZW50OiBm
YWxzZQorICAgIH0pOworICAgIAorICAgIHZhciBjdHgyRENhc2VzID0gW107CisgICAgZm9yIChs
ZXQgaW5Eb2N1bWVudCBvZiBbdHJ1ZSwgZmFsc2VdKSB7CisgICAgICAgIGN0eDJEQ2FzZXMucHVz
aCh7IGluRG9jdW1lbnQ6IGluRG9jdW1lbnQgfSk7CisgICAgfQorICAgIAorICAgIGZvciAobGV0
IGMgb2YgZ2xDYXNlcykgeworICAgICAgICBsZXQgZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOworICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGQpOworICAgICAgICBs
ZXQgaCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImgzIik7CisgICAgICAgIGguaW5uZXJUZXh0
ID0gYFdlYkdMIGNhc2U6ICR7SlNPTi5zdHJpbmdpZnkoYyl9YDsKKyAgICAgICAgZC5hcHBlbmRD
aGlsZChoKTsKKyAgICAgICAgbGV0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNh
bnZhcyIpOworICAgICAgICBpZiAoYy5pbkRvY3VtZW50KQorICAgICAgICAgICAgZC5hcHBlbmRD
aGlsZChjYW52YXMpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGxldCBwID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgICAgICBwLmNsYXNzTmFtZSA9ICJwbGFj
ZWhvbGRlciI7CisgICAgICAgICAgICBkLmFwcGVuZENoaWxkKHApOworICAgICAgICB9CisgICAg
ICAgIGxldCB2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidmlkZW8iKTsKKyAgICAgICAgdi5j
b250cm9scyA9IHRydWU7CisgICAgICAgIHYuYXV0b3BsYXkgPSB0cnVlOworICAgICAgICBkLmFw
cGVuZENoaWxkKHYpOworCisgICAgICAgIGxldCBnbCA9IGNhbnZhcy5nZXRDb250ZXh0KCJ3ZWJn
bDIiLCB7CisgICAgICAgICAgICBwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6IGMucHJlc2VydmVEcmF3
aW5nQnVmZmVyLCAKKyAgICAgICAgICAgIGFscGhhOiBjLmFscGhhLCAKKyAgICAgICAgICAgIHBy
ZW11bHRpcGxpZWRBbHBoYTogYy5wcmVtdWx0aXBsaWVkQWxwaGEsCisgICAgICAgICAgICBhbnRp
YWxpYXM6IGMuYW50aWFsaWFzCisgICAgICAgIH0pOworICAgICAgICB2LnNyY09iamVjdCA9IGNh
bnZhcy5jYXB0dXJlU3RyZWFtKCk7CisgICAgICAgIGdscy5wdXNoKGdsKTsKKyAgICB9CisgICAg
CisgICAgZm9yIChsZXQgYyBvZiBjdHgyRENhc2VzKSB7CisgICAgICAgIGxldCBkID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoZCk7CisgICAgICAgIGxldCBoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaDMiKTsKKyAg
ICAgICAgaC5pbm5lclRleHQgPSBgQ2FudmFzIGNhc2U6ICR7SlNPTi5zdHJpbmdpZnkoYyl9YDsK
KyAgICAgICAgZC5hcHBlbmRDaGlsZChoKTsKKyAgICAgICAgbGV0IGNhbnZhcyA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAgICAgICBpZiAoYy5pbkRvY3VtZW50KQorICAg
ICAgICAgICAgZC5hcHBlbmRDaGlsZChjYW52YXMpOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIGxldCBwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgICAgICBw
LmNsYXNzTmFtZSA9ICJwbGFjZWhvbGRlciI7CisgICAgICAgICAgICBkLmFwcGVuZENoaWxkKHAp
OworICAgICAgICB9CisgICAgICAgIGxldCB2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidmlk
ZW8iKTsKKyAgICAgICAgdi5jb250cm9scyA9IHRydWU7CisgICAgICAgIHYuYXV0b3BsYXkgPSB0
cnVlOworICAgICAgICBkLmFwcGVuZENoaWxkKHYpOworICAgICAgICBsZXQgY3R4MkQgPSBjYW52
YXMuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICAgICAgdi5zcmNPYmplY3QgPSBjYW52YXMuY2FwdHVy
ZVN0cmVhbSgpOworICAgICAgICBjdHgyRHMucHVzaChjdHgyRCk7CisgICAgfQorfQorCitmdW5j
dGlvbiBkcmF3T25jZSgpCit7CisgICAgZm9yIChsZXQgYyBvZiBnbHMpIHsKKyAgICAgICAgYy5l
bmFibGUoYy5TQ0lTU09SX1RFU1QpOworICAgICAgICBpZiAoYy5nZXRDb250ZXh0QXR0cmlidXRl
cygpLnByZW11bHRpcGxpZWRBbHBoYSkKKyAgICAgICAgICAgIGMuY2xlYXJDb2xvcigwLiwgMC41
LCAwLiwgMC41KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYy5jbGVhckNvbG9yKDAuLCAx
LiwgMC4sIDAuNSk7CisgICAgICAgIGMuc2Npc3NvcigwLCAwLCAzMDAsIDUwKTsKKyAgICAgICAg
Yy5jbGVhcihjLkNPTE9SX0JVRkZFUl9CSVQpOworICAgICAgICAKKyAgICAgICAgYy5zY2lzc29y
KDEyNSwgNTAsIDUwLCA1MCk7CisgICAgICAgIGMuY2xlYXJDb2xvcigwLiwgMS4sIDAuLCAxLik7
CisgICAgICAgIGMuY2xlYXIoYy5DT0xPUl9CVUZGRVJfQklUKTsKKyAgICAgICAgYy5zY2lzc29y
KDAsIDAsIDMwMCwgNTApOworICAgICAgICBjLmNsZWFyKGMuQ09MT1JfQlVGRkVSX0JJVCk7Cisg
ICAgICAgIAorICAgIH0KKyAgICBmb3IgKGxldCBjIG9mIGN0eDJEcykgeworICAgICAgICBjLmZp
bGxTdHlsZSA9ICJyZ2JhKDAsIDEyOCwgMCwgMC41KSI7CisgICAgICAgIGMuZmlsbFJlY3QoMCwg
MTAwLCAzMDAsIDUwKTsKKyAgICAgICAgYy5maWxsU3R5bGUgPSAicmdiYSgwLCAyNTUsIDAsIDEu
KSI7CisgICAgICAgIGMuZmlsbFJlY3QoMTI1LCA1MCwgNTAsIDUwKTsKKyAgICB9Cit9CisKK2Z1
bmN0aW9uIGNsZWFyT25jZSgpCit7CisgICAgY29uc29sZS5sb2coImNsZWFyIik7CisgICAgZm9y
IChsZXQgYyBvZiBnbHMpIHsKKyAgICAgICAgYy5jbGVhckNvbG9yKDAuLCAwLiwgMC4sIDAuKTsK
KyAgICAgICAgYy5kaXNhYmxlKGMuU0NJU1NPUl9URVNUKTsKKyAgICAgICAgYy5jbGVhcihjLkNP
TE9SX0JVRkZFUl9CSVQpOworICAgIH0KKyAgICBmb3IgKGxldCBjIG9mIGN0eDJEcykgeworICAg
ICAgICBjLmNsZWFyUmVjdCgwLCAwLCAzMDAsIDE1MCk7CisgICAgfQorfQorCit2YXIgaXNUb2dn
bGluZyA9IGZhbHNlOworCitmdW5jdGlvbiB0b2dnbGVEcmF3aW5nKCkKK3sKKyAgICBpZiAoaXNU
b2dnbGluZykgeworICAgICAgICBjbGVhclRpbWVvdXQoaXNUb2dnbGluZyk7CisgICAgICAgIGlz
VG9nZ2xpbmcgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB2YXIgaGFzRHJh
d24gPSB0cnVlOworICAgIGZ1bmN0aW9uIGYoKSB7CisgICAgICAgIGlmIChoYXNEcmF3bikKKyAg
ICAgICAgICAgIGNsZWFyT25jZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkcmF3T25j
ZSgpOworICAgICAgICBoYXNEcmF3biA9ICFoYXNEcmF3bjsKKyAgICAgICAgaXNUb2dnbGluZyA9
IHNldFRpbWVvdXQoZiwgMTAwMCk7CisgICAgfQorICAgIGYoKTsKK30KKworY3JlYXRlVGVzdHMo
KTsKKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgd2luZG93LnRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOworICAgIHRvZ2dsZURyYXdpbmcoKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439134</attachid>
            <date>2021-09-24 00:53:32 -0700</date>
            <delta_ts>2021-09-24 06:53:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230613-20210924105330.patch</filename>
            <type>text/plain</type>
            <size>32776</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMDI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjc5MjM0NjZhZDRkZjgw
MzViZmY1NjAxNjliODFlNGYyODVhZGZlNi4uM2IxNTgxOGY0MjU5NTQ4NTI4Mjg3OWFjNDhmNGRh
YWQ1NjFjNjY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIxLTA5LTIyICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0g
Y2FudmFzLmNhcHR1cmVTdHJlYW0oKSBmYWlscyBmb3IgV2ViR0wKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDYxMworICAgICAgICA8cmRhcjovLzgy
MzA3MjkzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlbW92ZSBwcmV2aW91cyBpbmNvcnJlY3QgYmVoYXZpb3Igb2YgdHVybmluZyBvbiAicHJlc2Vy
dmVzRHJhd2luZ0J1ZmZlciIKKyAgICAgICAgYW5kIHNhbXBsaW5nIHRoZSBkcmF3aW5nIGJ1ZmZl
ci4gVGhlIGRyYXdpbmcgYnVmZmVyIGlzIG5vdCB3aGF0IHNob3VsZCAKKyAgICAgICAgZXZlciBi
ZSB0b3VjaGVkLCByYXRoZXIgaXQncyB0aGUgZGlzcGxheSBidWZmZXIgdGhhdCBzaG91bGQgYmUg
YXZhaWxhYmxlLgorICAgICAgICAKKyAgICAgICAgSW1wbGVtZW50IHNhbXBsaW5nIG9mIFdlYkdM
IGRpc3BsYXkgYnVmZmVyIGZvciAKKyAgICAgICAgbWVkaWEgc3RyZWFtIGNhcHR1cmUuIFRoZSB1
cG9uIHNhbXBsaW5nLCBvYnRhaW4gYSBzaGFyZWQgCisgICAgICAgIHJlZmVyZW5jZSB0byB0aGUg
CisgICAgICAgIGRpc3BsYXkgYnVmZmVyLCBwYXNzZXMgaXQgdG8gbWVkaWEgc2FtcGxlIGNvbnN1
bWluZyBwcm9jZXNzIGFuZCBtYXJrCisgICAgICAgIHRoZSBXZWJHTCBjb250ZXh0IGRpc3BsYXkg
YnVmZmVyIG5vbi1lbGlnaWJsZSBmb3IgcmVjeWNsaW5nIGFzIAorICAgICAgICBuZXcgZHJhd2lu
ZyBidWZmZXIuCisgICAgICAgIAorICAgICAgICBDdXJyZW50bHkgdGhlIGltcGxlbWVudGF0aW9u
IGlzIGRpc3BsYXllZCBjb3JyZWN0bHkgZm9yCisgICAgICAgIFdlYkdMIGNvbnRlbnRzIHRoYXQg
aXMgcHJlbXVsdGlwbGllZC4gVW5wcmVtdWx0aXBsaWVkCisgICAgICAgIGNvbnRlbnQgaXMgZml4
ZWQgaW4gdGhlIGFzc29jaWF0ZWQgYnVncy4KKworICAgICAgICBOb3RlOiB0aGVyZSBhcmUgYnVn
cyBwcmV2ZW50aW5nIHJvYnVzdCB1c2Ugb2YgdGhlIEFQSSwgCisgICAgICAgIGxpc3RlZCBpbiB0
aGUgYXNzb2NpYXRlZCBidWdzLiBBcyBzdWNoLCB0ZXN0aW5nIGlzIG5vdCBleHBhbmRlZAorICAg
ICAgICBpbiB0aGlzIGJ1Zy4KKworICAgICAgICBUZXN0ZWQgYnkgCisgICAgICAgIE1hbnVhbFRl
c3RzL21lZGlhc3RyZWFtL21lZGlhc3RyZWFtLWNhbnZhcy10by12aWRlby5odG1sIChhZGRlZCkK
KyAgICAgICAgCisgICAgICAgIGh0dHBzOi8vd2VicnRjLmdpdGh1Yi5pby9zYW1wbGVzL3NyYy9j
b250ZW50L2NhcHR1cmUvY2FudmFzLXZpZGVvLyAKKyAgICAgICAgKFJlZnJlc2ggdGhlIHBhZ2Ug
b3IgaGlkZSB0aGUgd2luZG93IHVudGlsIE1lZGlhUGxheWVyIGluaXRpYWxpemF0aW9uCisgICAg
ICAgIGZsYWt5bmVzcyBsZXRzIHJlbmRlcmluZyBoYXBwZW4pCisgICAgICAgIAorICAgICAgICBU
aGUgdGVzdCBMYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2NhcHR1cmVTdHJlYW0vY2FudmFz
M2QuaHRtbCAKKyAgICAgICAgY2Fubm90IHlldCBiZSB1c2VkIHRvIHRlc3QgdGhlIGltcGxlbWVu
dGF0aW9uIGFzIHRoZSByZXN0IG9mIHRoZQorICAgICAgICBjYXB0dXJlU3RyZWFtKCkgYW5kIHBs
YXliYWNrIGltcGxlbWVudGF0aW9uIGlzIHNvIGZsYWt5LgorICAgICAgICAKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6OmNh
bnZhc0NoYW5nZWQpOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnRvTWVkaWFTYW1wbGUpOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0
c1RvTWVkaWFTYW1wbGUpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmlzUHJlc2VydmluZ0RyYXdpbmdCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRp
YVNhbXBsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW06CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZUltYWdlU2FtcGxlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbjo6cHJlc2VudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01l
ZGlhU2FtcGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlh
U2FtcGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaDoKKwogMjAyMS0w
OS0xNiAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFk
ZCB1dGlsaXR5IHRvIGNyZWF0ZSBDVlBpeGVsQnVmZmVycyBmcm9tIElPU3VyZmFjZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1l
ZGlhU3RyZWFtVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9D
YW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAKaW5kZXggMDg4MDkzMzRhODIwYmQ4ZjYy
NWM5MzMwMzQyYWZiODlhOTZhZjI5ZS4uNGI1NmQ5YzFmOTFmZWRjZmIyNmNkYzRiMmYwYzdmZWEy
NmIzNWM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9D
YW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAKQEAgLTE1
MywxOSArMTUzLDYgQEAgdm9pZCBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNl
OjpjYW52YXNDaGFuZ2VkKENhbnZhc0Jhc2UmIGNhbnZhcywgY28KIHsKICAgICBBU1NFUlRfVU5V
U0VEKGNhbnZhcywgbV9jYW52YXMgPT0gJmNhbnZhcyk7CiAKLSNpZiBFTkFCTEUoV0VCR0wpCi0g
ICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gcHJlc2VydmUgZHJhd2luZyBidWZmZXIgYXMgd2UgYXJl
IGN1cnJlbnRseSBncmFiYmluZyBmcmFtZXMgYXN5bmNocm9ub3VzbHkuCi0gICAgLy8gV2Ugc2hv
dWxkIGluc3RlYWQgYWRkIGFuIGFuY2hvciBwb2ludCBmb3IgYm90aCAyZCBhbmQgM2QgY29udGV4
dHMgd2hlcmUgY2FudmFzIHdpbGwgYWN0dWFsbHkgcGFpbnQuCi0gICAgLy8gQW5kIGNhbGwgY2Fu
dmFzIG9ic2VydmVycyBmcm9tIHRoYXQgcG9pbnQuCi0gICAgaWYgKGlzPFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U+KGNhbnZhcy5yZW5kZXJpbmdDb250ZXh0KCkpKSB7Ci0gICAgICAgIGF1dG8m
IGNvbnRleHQgPSBkb3duY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPigqY2FudmFzLnJl
bmRlcmluZ0NvbnRleHQoKSk7Ci0gICAgICAgIGlmICghY29udGV4dC5pc1ByZXNlcnZpbmdEcmF3
aW5nQnVmZmVyKCkpIHsKLSAgICAgICAgICAgIGNhbnZhcy5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6Oldh
cm5pbmcsICJUdXJuaW5nIGRyYXdpbmcgYnVmZmVyIHByZXNlcnZhdGlvbiBmb3IgdGhlIFdlYkdM
IGNhbnZhcyBiZWluZyBjYXB0dXJlZCJfcyk7Ci0gICAgICAgICAgICBjb250ZXh0LmVuYWJsZVBy
ZXNlcnZlRHJhd2luZ0J1ZmZlcigpOwotICAgICAgICB9Ci0gICAgfQotI2VuZGlmCi0KICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIHRyeSB0byBnZW5lcmF0ZSB0aGUgZnJhbWUgYXQgdGhlIHRpbWUg
dGhlIHNjcmVlbiBpcyBiZWluZyB1cGRhdGVkLgogICAgIGlmIChtX2NhcHR1cmVDYW52YXNUaW1l
ci5pc0FjdGl2ZSgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENh
bnZhc0VsZW1lbnQuY3BwCmluZGV4IGYyODIxODkxODY4ZmUyOTgxNDFjMzk1OTdiMzA5ZTkzODNm
NGM2YjguLmM1ZTA1YTc5Yzc4ODQ1M2MxNDVjNzAwZDBmYzAyNTFiMGM0MjQ2ODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC03NTgsNiArNzU4LDEzIEBA
IFJlZlB0cjxJbWFnZURhdGE+IEhUTUxDYW52YXNFbGVtZW50OjpnZXRJbWFnZURhdGEoKQogUmVm
UHRyPE1lZGlhU2FtcGxlPiBIVE1MQ2FudmFzRWxlbWVudDo6dG9NZWRpYVNhbXBsZSgpCiB7CiAj
aWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShHU1RSRUFNRVIpCisjaWYgRU5BQkxFKFdFQkdMKQor
ICAgIGlmIChpczxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPihtX2NvbnRleHQuZ2V0KCkpKSB7
CisgICAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndl
YkFQSVN0YXRpc3RpY3NFbmFibGVkKCkpCisgICAgICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6c2hhcmVkKCkubG9nQ2FudmFzUmVhZChkb2N1bWVudCgpKTsKKyAgICAgICAgcmV0dXJuIGRv
d25jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+KCptX2NvbnRleHQpLnBhaW50Q29tcG9z
aXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCk7CisgICAgfQorI2VuZGlmCiAgICAgYXV0byogaW1h
Z2VCdWZmZXIgPSBidWZmZXIoKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggY2FhNmZjMjk5NDk0MTViYjc4YTExMTQ0
MjhmYmFhNjBhM2Q2ZmFiNC4uMjdmYWMyNjA4YzMxZDY0NTdmMjdhNGMzZTk1OGFkYzhkYjBjNDM1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTEzNCw2ICsxMzQsMTAgQEAKICNpbmNsdWRlICJPZmZz
Y3JlZW5DYW52YXMuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNs
dWRlICJNZWRpYVNhbXBsZS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UpOwpAQCAt
MTM3NCw2ICsxMzc4LDEzIEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvUGl4CiAgICAgY2xlYXJJZkNv
bXBvc2l0ZWQoQ2xlYXJDYWxsZXJPdGhlcik7CiAgICAgcmV0dXJuIG1fY29udGV4dC0+cGFpbnRS
ZW5kZXJpbmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcigpOwogfQorUmVmUHRyPE1lZGlhU2FtcGxlPiBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNh
bXBsZSgpCit7CisgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fY29udGV4dC0+cGFpbnRDb21wb3NpdGVkUmVzdWx0
c1RvTWVkaWFTYW1wbGUoKTsKK30KKwogCiBXZWJHTFRleHR1cmU6OlRleHR1cmVFeHRlbnNpb25G
bGFnIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleHR1cmVFeHRlbnNpb25GbGFncygpIGNv
bnN0CiB7CkBAIC0zOTUwLDE0ICszOTYxLDYgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpleHRlbnNpb25Jc0VuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjplbmFibGVQcmVzZXJ2
ZURyYXdpbmdCdWZmZXIoKQotewotICAgIEFTU0VSVCghbV9hdHRyaWJ1dGVzLnByZXNlcnZlRHJh
d2luZ0J1ZmZlcik7Ci0gICAgbV9hdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlciA9IHRy
dWU7Ci0gICAgLy8gTXVzdCBzZW5kIHRoaXMgbm90aWZpY2F0aW9uIGRvd24gdG8gdGhlIEdyYXBo
aWNzQ29udGV4dEdMIGFzIHdlbGwuCi0gICAgbV9jb250ZXh0LT5lbmFibGVQcmVzZXJ2ZURyYXdp
bmdCdWZmZXIoKTsKLX0KLQogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpoaW50KEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gbW9kZSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9y
UGVuZGluZygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IDFiYjdmMWZmZGEyZGJhN2VhZDVmYTdiMjQzMjBh
Yzg2MTI0Nzg5NGUuLmZkYmM4ODRkNTYzYjBmYjkzNDkzMDJkOTkzODY2YTg1NWNiZTRhOTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmgKQEAgLTEyOCw2ICsxMjgsMTAgQEAgdXNpbmcgV2ViR0xDYW52YXMgPSBXVEY6
OlZhcmlhbnQ8UmVmUHRyPEhUTUxDYW52YXNFbGVtZW50PiwgUmVmUHRyPE9mZnNjcmVlbkNhbnYK
IHVzaW5nIFdlYkdMQ2FudmFzID0gV1RGOjpWYXJpYW50PFJlZlB0cjxIVE1MQ2FudmFzRWxlbWVu
dD4+OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorY2xhc3MgTWVkaWFTYW1w
bGU7CisjZW5kaWYKKwogY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSA6IHB1YmxpYyBH
cmFwaGljc0NvbnRleHRHTDo6Q2xpZW50LCBwdWJsaWMgR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdD
b250ZXh0LCBwcml2YXRlIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZlciB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKTsKIHB1YmxpYzoKQEAg
LTIzMywxMCArMjM3LDYgQEAgcHVibGljOgogICAgIGJvb2wgZXh0ZW5zaW9uSXNFbmFibGVkKGNv
bnN0IFN0cmluZyYpOwogCiAgICAgYm9vbCBpc1ByZXNlcnZpbmdEcmF3aW5nQnVmZmVyKCkgY29u
c3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcjsgfQotICAgIC8v
IENvbmNlc3Npb24gdG8gY2FudmFzIGNhcHR1cmUgQVBJLCB3aGljaCBtdXN0IGR5bmFtaWNhbGx5
IGVuYWJsZQotICAgIC8vIHByZXNlcnZlRHJhd2luZ0J1ZmZlci4gVGhpcyBjYW4gb25seSBiZSBj
YWxsZWQgb25jZSwgd2hlbgotICAgIC8vIGlzUHJlc2VydmluZ0RyYXdpbmdCdWZmZXIoKSByZXR1
cm5zIGZhbHNlLgotICAgIHZvaWQgZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCk7CiAKICAg
ICBib29sIHByZXZlbnRCdWZmZXJDbGVhckZvckluc3BlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1f
cHJldmVudEJ1ZmZlckNsZWFyRm9ySW5zcGVjdG9yOyB9CiAgICAgdm9pZCBzZXRQcmV2ZW50QnVm
ZmVyQ2xlYXJGb3JJbnNwZWN0b3IoYm9vbCB2YWx1ZSkgeyBtX3ByZXZlbnRCdWZmZXJDbGVhckZv
ckluc3BlY3RvciA9IHZhbHVlOyB9CkBAIC0zOTIsNiArMzkyLDkgQEAgcHVibGljOgogICAgIHZv
aWQgcHJlcGFyZUZvckRpc3BsYXlXaXRoUGFpbnQoKSBmaW5hbDsKICAgICB2b2lkIHBhaW50UmVu
ZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1
ZmZlcj4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcigpOworI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBwYWludENvbXBvc2l0ZWRSZXN1
bHRzVG9NZWRpYVNhbXBsZSgpOworI2VuZGlmCiAKICAgICB2b2lkIHJlbW92ZVNoYXJlZE9iamVj
dChXZWJHTFNoYXJlZE9iamVjdCYpOwogICAgIHZvaWQgcmVtb3ZlQ29udGV4dE9iamVjdChXZWJH
TENvbnRleHRPYmplY3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCAzNmUzNDMxZjU2ZjA4Y2JhMjhkNjAw
ZWZlYTEzNTEyZGM4Mjk0Yjk4Li40NmMyNmFlYmZhMDg2NTEyMjNlZGY5YjViYzI3YTg2Mjk2Zjhk
ZmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0R0wuY3BwCkBAIC0zNjIsMTIgKzM2Miw2IEBAIEdyYXBoaWNzQ29udGV4dEdM
OjpHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMsIEdy
YXBoaWNzCiB7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0w6OmVuYWJsZVByZXNlcnZlRHJh
d2luZ0J1ZmZlcigpCi17Ci0gICAgLy8gQ2FudmFzIGNhcHR1cmUgc2hvdWxkIG5vdCBjYWxsIHRo
aXMgdW5sZXNzIG5lY2Vzc2FyeS4KLSAgICBBU1NFUlQoIW1fYXR0cnMucHJlc2VydmVEcmF3aW5n
QnVmZmVyKTsKLSAgICBtX2F0dHJzLnByZXNlcnZlRHJhd2luZ0J1ZmZlciA9IHRydWU7Ci19CiAK
IGJvb2wgR3JhcGhpY3NDb250ZXh0R0w6OmNvbXB1dGVGb3JtYXRBbmRUeXBlUGFyYW1ldGVycyhH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIHVuc2lnbmVkKiBjb21wb25lbnRzUGVyUGl4
ZWwsIHVuc2lnbmVkKiBieXRlc1BlckNvbXBvbmVudCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IDg1NGQ4MGE1
ODIzNmFlMmZmNjY0ZTFiMjhlYzc3OGViNjRhYjEwYWIuLmE2ZTNlNDRjODE5OWM1Y2RmNzRhOTNh
YzZmNjE0ZmQzMDY1ODU3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtNTksNyArNTksOSBAQCBjbGFzcyBQaXhl
bEJ1ZmZlcjsKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCiBjbGFzcyBH
cmFwaGljc0NvbnRleHRHTENWOwogI2VuZGlmCi0KKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
Y2xhc3MgTWVkaWFTYW1wbGU7CisjZW5kaWYKIAogLy8gQmFzZSBjbGFzcyBmb3IgZ3JhcGhpY3Mg
Y29udGV4dCBmb3IgaW1wbGVtZW50aW5nIFdlYkdMIHJlbmRlcmluZyBtb2RlbC4KIGNsYXNzIEdy
YXBoaWNzQ29udGV4dEdMIDogcHVibGljIFJlZkNvdW50ZWQ8R3JhcGhpY3NDb250ZXh0R0w+IHsK
QEAgLTEyNDQsMTMgKzEyNDYsNiBAQCBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzIGNvbnRleHRBdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyczsgfQogICAg
IHZvaWQgc2V0Q29udGV4dEF0dHJpYnV0ZXMoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzJiBhdHRycykgeyBtX2F0dHJzID0gYXR0cnM7IH0KIAotICAgIC8vIEZJWE1FOiBUaGUgY2Fs
bGluZyBzaXRlIHNob3VsZCBiZSBmaXhlZCwgdGhpcyBicmVha3MgdGhlIFdlYkdMIHNwZWMKLSAg
ICAvLyB3cnQgcHJlc2VydmVEcmF3aW5nQnVmZmVyID09IGZhbHNlIGJlaGF2aW9yLgotICAgIC8v
IENvbmNlc3Npb24gdG8gQ2FudmFzIGNhcHR1cmVTdHJlYW0sIHdoaWNoIG5lZWRzIHRvIGR5bmFt
aWNhbGx5IHNldAotICAgIC8vIHByZXNlcnZlRHJhd2luZ0J1ZmZlciB0byB0cnVlIGluIG9yZGVy
IHRvIGF2b2lkIGltcGxpY2l0IGNsZWFycy4KLSAgICAvLyBJbXBsZW1lbnRhdGlvbnMgZ2VuZXJh
bGx5IGRvIG5vdCBzdXBwb3J0IHRvZ2dsaW5nIHRoaXMgYml0IGFyYml0cmFyaWx5LgotICAgIHZp
cnR1YWwgdm9pZCBlbmFibGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKTsKLQogICAgIC8vIFN1cHBv
cnQgZm9yIGV4dGVuc2lvbnMuIFJldHVybnMgYSBub24tbnVsbCBvYmplY3QsIHRob3VnaCBub3QK
ICAgICAvLyBhbGwgbWV0aG9kcyBpdCBjb250YWlucyBtYXkgbmVjZXNzYXJpbHkgYmUgc3VwcG9y
dGVkIG9uIHRoZQogICAgIC8vIGN1cnJlbnQgaGFyZHdhcmUuIE11c3QgY2FsbCBFeHRlbnNpb25z
R0w6OnN1cHBvcnRzKCkgdG8KQEAgLTEyOTQsNiArMTI4OSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXImKSA9IDA7
CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBwYWludFJlbmRlcmluZ1Jl
c3VsdHNUb1BpeGVsQnVmZmVyKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwYWludENvbXBvc2l0
ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXImKSA9IDA7CisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKyAgICB2aXJ0dWFsIFJlZlB0cjxNZWRpYVNhbXBsZT4gcGFpbnRDb21wb3NpdGVkUmVz
dWx0c1RvTWVkaWFTYW1wbGUoKSA9IDA7CisjZW5kaWYKIAogICAgIC8vIEZJWE1FOiB0aGlzIHNo
b3VsZCBiZSByZW1vdmVkLiBUaGUgbGF5ZXIgc2hvdWxkIGJlIG1hcmtlZCBjb21wb3NpdGVkIGJ5
CiAgICAgLy8gcHJlcGFyaW5nIGZvciBkaXNwbGF5LCBzbyB0aGF0IGNhbnZhcyBpbWFnZSBidWZm
ZXIgYW5kIHRoZSBsYXllciBhZ3JlZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2UuY3BwCmluZGV4IDc1ZWNiMWU5ODY2NTM5MWE3ODBlMzA1YmQ4Y2U5YTVjNzMxODNhMWMuLjdh
ZWUzOGYzOWYzYjNkYWQ2MjQwODJkYmJiOTA4NDQ2M2JjMzJhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKQEAgLTk3LDEzICs5Nyw2IEBAIEdDR0xiaXRmaWVs
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6Z2V0QnVmZmVyc1RvQXV0b0NsZWFy
KCkgY29uc3QKICAgICByZXR1cm4gbV9idWZmZXJzVG9BdXRvQ2xlYXI7CiB9CiAKLXZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OmVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZl
cigpCi17Ci0gICAgLy8gUmVkZWNsYXJlZCBmb3IgZXhwb3J0IHJlYXNvbnMuCi0gICAgLy8gRklY
TUU6IFRoZSB3aG9sZSBmdW5jdGlvbiBzaG91bGQgYmUgcmVtb3ZlZC4KLSAgICBHcmFwaGljc0Nv
bnRleHRHTDo6ZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCk7Ci19Ci0KIGJvb2wgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnN1cHBvcnRzKGNvbnN0IFN0cmluZyYgbmFtZSkK
IHsKICAgICB3YWl0VW50aWxJbml0aWFsaXplZCgpOwpAQCAtMTU2LDUgKzE0OSwxMiBAQCB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpnZXRuVW5pZm9ybWl2RVhUKEdDR0x1
aW50LCBHQ0dMaW50LCBHQ0dMcwogewogfQogI2VuZGlmCisKKyNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKSAmJiAhUExBVEZPUk0oQ09DT0EpCitSZWZQdHI8TWVkaWFTYW1wbGU+IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBs
ZSgpCit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisjZW5kaWYKIH0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKaW5kZXggYmRkYTc4NWY2MGU1Zjc1Yjg0NmNm
MGI2Y2ZhMjRhYTczZWU1ZDllYS4uZTllY2I4N2M3MGE1NDMwMDgyZjc0NmQ2MjZhMDUxZWJkYzY3
MjUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oCkBAIC02Nyw3ICs2
Nyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEJ1ZmZlcnNUb0F1dG9DbGVhcihHQ0dMYml0Zmll
bGQpIGZpbmFsOwogICAgIEdDR0xiaXRmaWVsZCBnZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25z
dCBmaW5hbDsKICAgICB2b2lkIG1hcmtMYXllckNvbXBvc2l0ZWQoKSBmaW5hbDsKLSAgICB2b2lk
IGVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpIGZpbmFsOwogCiAjaWYgRU5BQkxFKFZJREVP
KSAmJiBVU0UoQVZGT1VOREFUSU9OKQogICAgIEdyYXBoaWNzQ29udGV4dEdMQ1YqIGFzQ1YoKSBm
aW5hbDsKQEAgLTgzLDYgKzgyLDkgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0blVuaWZvcm1mdkVY
VChHQ0dMdWludCwgR0NHTGludCwgR0NHTHNpemVpLCBHQ0dMZmxvYXQqKSBmaW5hbDsKICAgICB2
b2lkIGdldG5Vbmlmb3JtaXZFWFQoR0NHTHVpbnQsIEdDR0xpbnQsIEdDR0xzaXplaSwgR0NHTGlu
dCopIGZpbmFsOwogI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBSZWZQdHI8
TWVkaWFTYW1wbGU+IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkgZmluYWw7
CisjZW5kaWYKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBTdHJpbmcm
IGF2YWlsYWJsZUV4dGVuc2lvbnMsIGNvbnN0IFN0cmluZyYgcmVxdWVzdGFibGVFeHRlbnNpb25z
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKaW5kZXggNTQ1
ZjBiZTFjNTBjYmZlNDE3MDE4MDM1NmY4OGNlM2M1NTJjODZmNy4uMmViMDQ0OWE2MGRhOTJlMGI5
ZDcyOGEzM2RiNzFiZmFmYjRiMGM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFT
YW1wbGVBVkZPYmpDLmgKQEAgLTMwLDYgKzMwLDggQEAKICNpbmNsdWRlIDxwYWwvYXZmb3VuZGF0
aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAK
K3VzaW5nIENWUGl4ZWxCdWZmZXJSZWYgPSBzdHJ1Y3QgX19DVkJ1ZmZlcio7CisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgUGl4ZWxCdWZmZXI7CkBAIC00MCw2ICs0Miw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4gY3JlYXRlKENNU2FtcGxlQnVm
ZmVyUmVmIHNhbXBsZSwgQXRvbVN0cmluZyB0cmFja0lEKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IE1lZGlhU2FtcGxlQVZGT2JqQyhzYW1wbGUsIHRyYWNrSUQpKTsgfQogICAgIHN0YXRpYyBSZWY8
TWVkaWFTYW1wbGVBVkZPYmpDPiBjcmVhdGUoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlLCBWaWRl
b1JvdGF0aW9uIHJvdGF0aW9uID0gVmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9vbCBtaXJyb3JlZCA9
IGZhbHNlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU2FtcGxlQVZGT2JqQyhzYW1wbGUs
IHJvdGF0aW9uLCBtaXJyb3JlZCkpOyB9CiAgICAgc3RhdGljIFJlZlB0cjxNZWRpYVNhbXBsZUFW
Rk9iakM+IGNyZWF0ZUltYWdlU2FtcGxlKFBpeGVsQnVmZmVyJiYpOworICAgIHN0YXRpYyBSZWZQ
dHI8TWVkaWFTYW1wbGVBVkZPYmpDPiBjcmVhdGVJbWFnZVNhbXBsZShSZXRhaW5QdHI8Q1ZQaXhl
bEJ1ZmZlclJlZj4mJiwgVmlkZW9Sb3RhdGlvbiwgYm9vbCBtaXJyb3JlZCk7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRBc0Rpc3BsYXlJbW1lZGlhdGVseShNZWRpYVNhbXBs
ZSYpOwogICAgIHN0YXRpYyBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IGNsb25lU2FtcGxl
QnVmZmVyQW5kU2V0QXNEaXNwbGF5SW1tZWRpYXRlbHkoQ01TYW1wbGVCdWZmZXJSZWYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCmluZGV4IGE0Y2M4Mjgw
ZWVjMjlmM2MxNmEzYjI1N2VlY2VlMjk5ZDUwNmY5ZWEuLjdhMWEwMGZlOTAzZTc5NTcxMmFkMmVh
M2FmZTUyMDk2YzdiNDRiYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBs
ZUFWRk9iakMubW0KQEAgLTk1LDI0ICs5NSwzMyBAQCBSZWZQdHI8TWVkaWFTYW1wbGVBVkZPYmpD
PiBNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZUltYWdlU2FtcGxlKFBpeGVsQnVmZmVyJiYgcAog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgQVNTRVJUX1VOVVNFRChzdGF0dXMs
ICFzdGF0dXMpOworICAgIHJldHVybiBjcmVhdGVJbWFnZVNhbXBsZShXVEZNb3ZlKGN2UGl4ZWxC
dWZmZXIpLCBWaWRlb1JvdGF0aW9uOjpOb25lLCBmYWxzZSk7Cit9CiAKK1JlZlB0cjxNZWRpYVNh
bXBsZUFWRk9iakM+IE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlSW1hZ2VTYW1wbGUoUmV0YWlu
UHRyPENWUGl4ZWxCdWZmZXJSZWY+JiYgcGl4ZWxCdWZmZXIsIFZpZGVvUm90YXRpb24gcm90YXRp
b24sIGJvb2wgbWlycm9yZWQpCit7CiAgICAgQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGZv
cm1hdERlc2NyaXB0aW9uUmF3ID0gbnVsbHB0cjsKLSAgICBzdGF0dXMgPSBQQUw6OkNNVmlkZW9G
b3JtYXREZXNjcmlwdGlvbkNyZWF0ZUZvckltYWdlQnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQs
IGN2UGl4ZWxCdWZmZXIuZ2V0KCksICZmb3JtYXREZXNjcmlwdGlvblJhdyk7Ci0gICAgQVNTRVJU
KCFzdGF0dXMpOworICAgIGF1dG8gc3RhdHVzID0gUEFMOjpDTVZpZGVvRm9ybWF0RGVzY3JpcHRp
b25DcmVhdGVGb3JJbWFnZUJ1ZmZlcihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwaXhlbEJ1ZmZlci5n
ZXQoKSwgJmZvcm1hdERlc2NyaXB0aW9uUmF3KTsKKyAgICBpZiAoc3RhdHVzIHx8ICFmb3JtYXRE
ZXNjcmlwdGlvblJhdykgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQogICAgIGF1dG8gZm9ybWF0RGVzY3JpcHRpb24gPSBhZG9w
dENGKGZvcm1hdERlc2NyaXB0aW9uUmF3KTsKIAogICAgIENNU2FtcGxlVGltaW5nSW5mbyBzYW1w
bGVUaW1pbmdJbmZvcm1hdGlvbiA9IHsgUEFMOjprQ01UaW1lSW52YWxpZCwgUEFMOjprQ01UaW1l
SW52YWxpZCwgUEFMOjprQ01UaW1lSW52YWxpZCB9OwogICAgIENNU2FtcGxlQnVmZmVyUmVmIHNh
bXBsZUJ1ZmZlclJhdyA9IG51bGxwdHI7Ci0gICAgc3RhdHVzID0gUEFMOjpDTVNhbXBsZUJ1ZmZl
ckNyZWF0ZVJlYWR5V2l0aEltYWdlQnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIGN2UGl4ZWxC
dWZmZXIuZ2V0KCksIGZvcm1hdERlc2NyaXB0aW9uLmdldCgpLCAmc2FtcGxlVGltaW5nSW5mb3Jt
YXRpb24sICZzYW1wbGVCdWZmZXJSYXcpOwotICAgIEFTU0VSVCghc3RhdHVzKTsKKyAgICBzdGF0
dXMgPSBQQUw6OkNNU2FtcGxlQnVmZmVyQ3JlYXRlUmVhZHlXaXRoSW1hZ2VCdWZmZXIoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgcGl4ZWxCdWZmZXIuZ2V0KCksIGZvcm1hdERlc2NyaXB0aW9uLmdldCgp
LCAmc2FtcGxlVGltaW5nSW5mb3JtYXRpb24sICZzYW1wbGVCdWZmZXJSYXcpOworICAgIGlmIChz
dGF0dXMgfHwgIXNhbXBsZUJ1ZmZlclJhdykgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogICAgIGF1dG8gc2FtcGxlQnVmZmVy
ID0gYWRvcHRDRihzYW1wbGVCdWZmZXJSYXcpOwotCiAgICAgQ0ZBcnJheVJlZiBhdHRhY2htZW50
c0FycmF5ID0gUEFMOjpDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZUF0dGFjaG1lbnRzQXJyYXkoc2Ft
cGxlQnVmZmVyLmdldCgpLCB0cnVlKTsKICAgICBmb3IgKENGSW5kZXggaSA9IDAsIGNvdW50ID0g
Q0ZBcnJheUdldENvdW50KGF0dGFjaG1lbnRzQXJyYXkpOyBpIDwgY291bnQ7ICsraSkgewogICAg
ICAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGF0dGFjaG1lbnRzID0gY2hlY2tlZF9jZl9jYXN0
PENGTXV0YWJsZURpY3Rpb25hcnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoYXR0YWNobWVu
dHNBcnJheSwgaSkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShhdHRhY2htZW50cywg
UEFMOjprQ01TYW1wbGVBdHRhY2htZW50S2V5X0Rpc3BsYXlJbW1lZGlhdGVseSwga0NGQm9vbGVh
blRydWUpOwogICAgIH0KLSAgICByZXR1cm4gY3JlYXRlKHNhbXBsZUJ1ZmZlci5nZXQoKSk7Cisg
ICAgcmV0dXJuIGNyZWF0ZShzYW1wbGVCdWZmZXIuZ2V0KCksIHJvdGF0aW9uLCBtaXJyb3JlZCk7
CiB9CiAKIE1lZGlhVGltZSBNZWRpYVNhbXBsZUFWRk9iakM6OnByZXNlbnRhdGlvblRpbWUoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hh
aW4uY3BwCmluZGV4IDljNDAyNzIxZGI1ZmQ2NDc4NmEyZTZhMmJhNGZlNDIwNGY2NTBiZjYuLmI2
YmY5YjgxN2UyODViYzJiODUwNjVlOWFjM2VkN2VlZmJhNzYwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJm
YWNlU3dhcENoYWluLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAKQEAgLTM3LDYgKzM3
LDExIEBAIGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjpCdWZmZXIm
IEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhCiAgICAgcmV0dXJuIG1fZGlzcGxheUJ1ZmZl
cjsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6bWFya0Rp
c3BsYXlCdWZmZXJJblVzZSgpCit7CisgICAgbV9kaXNwbGF5QnVmZmVySW5Vc2UgPSB0cnVlOyAK
K30KKwogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW46OkJ1ZmZlciBHcmFwaGlj
c0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6cmVjeWNsZUJ1ZmZlcigpCiB7CiAgICAgaWYg
KG1fc3BhcmVCdWZmZXIuc3VyZmFjZSkgewpAQCAtNTYsNiArNjEsMTAgQEAgdm9pZCogR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW46OmRldGFjaENsaWVudCgpCiB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjpwcmVzZW50KEJ1ZmZlciYmIGJ1ZmZlcikK
IHsKICAgICBtX3NwYXJlQnVmZmVyID0gc3RkOjpleGNoYW5nZShtX2Rpc3BsYXlCdWZmZXIsIFdU
Rk1vdmUoYnVmZmVyKSk7CisgICAgaWYgKG1fZGlzcGxheUJ1ZmZlckluVXNlKSB7CisgICAgICAg
IG1fZGlzcGxheUJ1ZmZlckluVXNlID0gZmFsc2U7CisgICAgICAgIG1fc3BhcmVCdWZmZXIuc3Vy
ZmFjZS5yZXNldCgpOworICAgIH0KIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hh
aW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgKaW5kZXggZTQzN2Q3ZGYwZWU4NDEzOWVhZmUzZTJm
ZDcyNzE5OGI4ZjYxYTA2MS4uYjRhYmM4N2QzZjEzNjQyZDQ5NWE1YmJhZGNmMjA5MTYxZjhjNTYx
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3Jh
cGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
bi5oCkBAIC02Nyw2ICs2Nyw5IEBAIHB1YmxpYzoKICAgICAvLyBuZXh0IHByZXNlbnQsIHJlY3lj
bGVCdWZmZXIgb3IgZGV0YWNoQ2xpZW50IGNhbGwuCiAgICAgdmlydHVhbCBjb25zdCBCdWZmZXIm
IGRpc3BsYXlCdWZmZXIoKSBjb25zdDsKIAorICAgIC8vIE1hcmtzIHRoZSBjdXJyZW50IGRpc3Bs
YXkgYnVmZmVyIHRvIGJlIGluIHVzZSBhbmQgbm90IGVsaWdibGUgdG8gcmVjeWNsaW5nLgorICAg
IHZvaWQgbWFya0Rpc3BsYXlCdWZmZXJJblVzZSgpOworICAgIAogICAgIC8vIERldGFjaGVzIHRo
ZSBjbGllbnQgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgY29udGVudHMgYnVmZmVyIG1ldGFkYXRh
IGhhbmRsZS4KICAgICAvLyBUaGUgaWYgbXVsdGlwbGUgYnVmZmVycyBoYXZlIGJlZW4gc3VibWl0
dGVkLCByZWN5Y2xlQnVmZmVyIG11c3QgaGF2ZSBiZWVuIGNhbGxlZCBiZWZvcmUgY2FsbGluZwog
ICAgIC8vIHRoaXMuCkBAIC03NSw2ICs3OCw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBC
dWZmZXIgbV9kaXNwbGF5QnVmZmVyOwogICAgIEJ1ZmZlciBtX3NwYXJlQnVmZmVyOworICAgIGJv
b2wgbV9kaXNwbGF5QnVmZmVySW5Vc2UgPSBmYWxzZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCmluZGV4IDc1NWNkNDU4N2E0ZGQ1Y2IzMTA1OGVl
Njg5NDk0NGJlZWM0ODRlNWIuLmU2NzEwNGE3YzdjYjEzOTFlNTc3YWVhY2NmYjg3ZjAxY2FkZWMz
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQpAQCAtMjgs
NiArMjgsNyBAQAogI2lmIEVOQUJMRShXRUJHTCkKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmgiCiAKKyNpbXBvcnQgIkNWVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJFeHRlbnNpb25z
R0xBTkdMRS5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xBTkdMRVV0aWxpdGllcy5oIgog
I2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCIKQEAgLTUwLDYg
KzUxLDEwIEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xDVi5oIgogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIk1lZGlhU2FtcGxlQVZGT2JqQy5oIgor
I2VuZGlmCisKIFdURl9XRUFLX0xJTktfRk9SQ0VfSU1QT1JUKEVHTF9Jbml0aWFsaXplKTsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODc4LDYgKzg4MywyMSBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpyZWxlYXNlQWxsUmVzb3VyY2VzSWZVbnVzZWQoKQogICAgIFNjb3BlZEVH
TERlZmF1bHREaXNwbGF5OjpyZWxlYXNlQWxsUmVzb3VyY2VzSWZVbnVzZWQoKTsKIH0KIAorI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCitSZWZQdHI8TWVkaWFTYW1wbGU+IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpCit7CisgICAg
YXV0byAmZGlzcGxheUJ1ZmZlciA9IG1fc3dhcENoYWluLT5kaXNwbGF5QnVmZmVyKCk7CisgICAg
aWYgKCFkaXNwbGF5QnVmZmVyLnN1cmZhY2UgfHwgIWRpc3BsYXlCdWZmZXIuaGFuZGxlKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoZGlzcGxheUJ1ZmZlci5zdXJmYWNlLT5zaXpl
KCkgIT0gZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgbV9zd2FwQ2hhaW4tPm1hcmtEaXNwbGF5QnVmZmVySW5Vc2UoKTsKKyAgICBhdXRv
IHBpeGVsQnVmZmVyID0gY3JlYXRlQ1ZQaXhlbEJ1ZmZlcihkaXNwbGF5QnVmZmVyLnN1cmZhY2Ut
PnN1cmZhY2UoKSk7CisgICAgaWYgKCFwaXhlbEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcmV0dXJuIE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlSW1hZ2VTYW1wbGUoV1RG
TW92ZSgqcGl4ZWxCdWZmZXIpLCBNZWRpYVNhbXBsZUFWRk9iakM6OlZpZGVvUm90YXRpb246OlVw
c2lkZURvd24sIHRydWUpOworfQorI2VuZGlmCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2Nv
YS5tbQppbmRleCAwYzQxNDAxNWI3YjBmMzRiYjI4YmUzNDU1MDljNzQyOWUzMWRhYTNjLi4xOTM0
ZWY1ZWYzMzY5YTIzNjk5NmIyZTZkZTBkNzYzOGIxOTE5ZmFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0KQEAgLTMyLDYgKzMy
LDExIEBACiAjaW1wb3J0ICJXZWJHTExheWVyLmgiCiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhj
ZXB0aW9ucy5oPgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbXBvcnQgIkNWVXRpbGl0
aWVzLmgiCisjaW1wb3J0ICJNZWRpYVNhbXBsZUFWRk9iakMuaCIKKyNlbmRpZgorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBs
YXRmb3JtSW5pdGlhbGl6ZSgpCkBAIC02Myw1ICs2OCwyMCBAQCBHcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YXBDaGFpbiYgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBsYXRm
b3JtUwogICAgIHJldHVybiBbbV93ZWJHTExheWVyIHN3YXBDaGFpbl07CiB9CiAKKyNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorUmVmUHRyPE1lZGlhU2FtcGxlPiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKQorewor
ICAgIGF1dG8mIHNjID0gcGxhdGZvcm1Td2FwQ2hhaW4oKTsKKyAgICBhdXRvJiBkaXNwbGF5QnVm
ZmVyID0gc2MuZGlzcGxheUJ1ZmZlcigpOworICAgIGlmICghZGlzcGxheUJ1ZmZlci5zdXJmYWNl
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBzYy5tYXJrRGlzcGxheUJ1ZmZlckluVXNl
KCk7CisgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGNyZWF0ZUNWUGl4ZWxCdWZmZXIoZGlzcGxheUJ1
ZmZlci5zdXJmYWNlLT5zdXJmYWNlKCkpOworICAgIGlmICghcGl4ZWxCdWZmZXIpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIHJldHVybiBNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZUlt
YWdlU2FtcGxlKFdURk1vdmUoKnBpeGVsQnVmZmVyKSwgTWVkaWFTYW1wbGVBVkZPYmpDOjpWaWRl
b1JvdGF0aW9uOjpVcHNpZGVEb3duLCB0cnVlKTsKK30KKyNlbmRpZgorCiB9CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IGU2MDNjMmJmNWZmYmE3YWYy
YjM0MmU4MGQ3Njg0YTA5NzE0MTBmZWIuLjExMmE2ZmQxYzk4YmZkYjQxMjUyNjdiYzhjNTNmM2Vk
M2FhMGFhZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcApAQCAtNzIs
MTQgKzcyLDYgQEAgR0NHTGJpdGZpZWxkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCdWZm
ZXJzVG9BdXRvQ2xlYXIoKSBjb25zdAogICAgIHJldHVybiBtX2J1ZmZlcnNUb0F1dG9DbGVhcjsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZW5hYmxlUHJlc2VydmVEcmF3aW5n
QnVmZmVyKCkKLXsKLSAgICBHcmFwaGljc0NvbnRleHRHTDo6ZW5hYmxlUHJlc2VydmVEcmF3aW5n
QnVmZmVyKCk7Ci0gICAgLy8gQWZ0ZXIgZHluYW1pY2FsbHkgdHJhbnNpdGlvbmluZyB0byBwcmVz
ZXJ2ZURyYXdpbmdCdWZmZXI6dHJ1ZQotICAgIC8vIGZvciBjYW52YXMgY2FwdHVyZSwgY2xlYXIg
b3V0IGFueSBidWZmZXIgYXV0by1jbGVhcmluZyBzdGF0ZS4KLSAgICBtX2J1ZmZlcnNUb0F1dG9D
bGVhciA9IDA7Ci19Ci0KICNpZiAhVVNFKEFOR0xFKQogYm9vbCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dGV4SW1hZ2UyRFJlc291cmNlU2FmZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xpbnQgdW5wYWNrQWxpZ25tZW50KQogewpAQCAtMTcwLDYgKzE2MiwxMyBAQCBzdGQ6Om9wdGlv
bmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdS
ZXN1bHRzVG9QaXhlbAogICAgIHJldHVybiByZXN1bHRzOwogfQogCisjaWYgIVBMQVRGT1JNKENP
Q09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQorUmVmUHRyPE1lZGlhU2FtcGxlPiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKQor
eworICAgIHJldHVybiBudWxscHRyOworfQorI2VuZGlmCisKIHN0ZDo6b3B0aW9uYWw8UGl4ZWxC
dWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUmVuZGVyaW5nUmVzdWx0c0ZvclBh
aW50aW5nKCkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCBhMjk0ZTM1NjA0ZTc3ZmRlYmQ4ODQxYzU1OGQ5NDNl
MzQ1OGExZmJlLi5mZTU5ZGViMDlkODhjZTdhZDU4YWQ1MjA5MGM0ZTU2MDRhMzdiMjJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtNDYwLDEzICs0NjAsMTUgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKTsKICAgICB2b2lkIHNldEJ1
ZmZlcnNUb0F1dG9DbGVhcihHQ0dMYml0ZmllbGQpIGZpbmFsOwogICAgIEdDR0xiaXRmaWVsZCBn
ZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGVuYWJsZVByZXNl
cnZlRHJhd2luZ0J1ZmZlcigpIGZpbmFsOwogCiAgICAgdm9pZCBkaXNwYXRjaENvbnRleHRDaGFu
Z2VkTm90aWZpY2F0aW9uKCk7CiAKICAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2Fu
dmFzKEltYWdlQnVmZmVyJikgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4g
cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcigpIGZpbmFsOwogICAgIHZvaWQgcGFp
bnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyJikgZmluYWw7CisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKyAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IHBhaW50Q29tcG9zaXRl
ZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkgZmluYWw7CisjZW5kaWYKIAogICAgIHN0ZDo6b3B0aW9u
YWw8UGl4ZWxCdWZmZXI+IHJlYWRSZW5kZXJpbmdSZXN1bHRzRm9yUGFpbnRpbmcoKTsKICAgICBz
dGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiByZWFkQ29tcG9zaXRlZFJlc3VsdHNGb3JQYWludGlu
ZygpOwpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDRjZDQ0MGI4Mjgy
ZjU1MjQyZWY1MjhiNGJiMDlkNjJjZmIzOGIxZGMuLjJiMzk0YjIzNjZmYTQzNDNlZWI4ZjMxNWRh
NjI3ZmNlYzI0NmQ4MDAgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNyBAQAorMjAyMS0wOS0yMiAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBw
bGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFtIGNhbnZhcy5jYXB0dXJlU3RyZWFtKCkgZmFp
bHMgZm9yIFdlYkdMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzA2MTMKKyAgICAgICAgPHJkYXI6Ly84MjMwNzI5Mz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBtYW51YWwgdGVzdCB0byBpbnRl
cmFjdCB3aXRoIG1lZGlhIHN0cmVhbQorICAgICAgICBjYXB0dXJlU3RyZWFtKCkgYmVoYXZpb3Ig
dW50aWwgdGhlIGltcGxlbWVudGF0aW9uIGlzCisgICAgICAgIHRlc3RhYmxlLgorCisgICAgICAg
ICogTWFudWFsVGVzdHMvbWVkaWFzdHJlYW0vbWVkaWFzdHJlYW0tY2FudmFzLXRvLXZpZGVvLmh0
bWw6IEFkZGVkLgorCiAyMDIxLTA5LTE3ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgQWRkIE9iakMgYXMgc3VwcG9ydGVkIC5jbGFuZy1mb3JtYXQgbGFu
Z3VhZ2UKZGlmZiAtLWdpdCBhL01hbnVhbFRlc3RzL21lZGlhc3RyZWFtL21lZGlhc3RyZWFtLWNh
bnZhcy10by12aWRlby5odG1sIGIvTWFudWFsVGVzdHMvbWVkaWFzdHJlYW0vbWVkaWFzdHJlYW0t
Y2FudmFzLXRvLXZpZGVvLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2QwYTA0MDJiYzc5YTFlN2Y2NWU4NzY2
ODA2Mzg3YTFmNDY2NzlhZgotLS0gL2Rldi9udWxsCisrKyBiL01hbnVhbFRlc3RzL21lZGlhc3Ry
ZWFtL21lZGlhc3RyZWFtLWNhbnZhcy10by12aWRlby5odG1sCkBAIC0wLDAgKzEsMTkyIEBACis8
aHRtbD4KKzxoZWFkPgorICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgdmlkZW8geyBi
b3JkZXI6IHNvbGlkIDFweCBibGFjazsgfQorICAgIGNhbnZhcyB7IHBhZGRpbmc6IDFweCB9Cisg
ICAgLnBsYWNlaG9sZGVyIHsgCisgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAg
ICAgYm9yZGVyOiAxcHggZGFzaGVkIGJsYWNrOworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgIGhlaWdodDogMTUwcHg7CisgICAgfQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxwPgorPGlucHV0IHR5cGU9ImJ1dHRvbiIgb25jbGljaz0iZHJhd09uY2UoKSIgdmFsdWU9IkRy
YXcgb25jZSIgLz4KKzxpbnB1dCB0eXBlPSJidXR0b24iIG9uY2xpY2s9ImNsZWFyT25jZSgpIiB2
YWx1ZT0iQ2xlYXIgb25jZSIgLz4KKzxpbnB1dCB0eXBlPSJidXR0b24iIG9uY2xpY2s9InRvZ2ds
ZURyYXdpbmcoKSIgdmFsdWU9IlRvZ2dsZSBkcmF3aW5nIi8+Cis8L3A+Cis8cD4KKyAgICA8dWw+
CisgICAgICAgIDxsaT5MZWZ0OiBjYW52YXM8L2xpPgorICAgICAgICA8bGk+UmlnaHQ6IHZpZGVv
PC9saT4KKyAgICAgICAgPGxpPlRvcCByZWN0YW5nbGUgc21hbGw6IG9wYXF1ZTwvbGk+CisgICAg
ICAgIDxsaT5Cb3R0b20gcmVjdGFuZ2xlIGJpZzogNTAlIHRyYW5zbHVjZW50PC9saT4KKyAgICAg
ICAgPGxpPkJhY2tncm91bmQ6IHRyYW5zcGFyZW50PC9saT4KKyAgICA8L3VsPgorPC9wPgorPHNj
cmlwdD4KKwordmFyIGN0eDJEcyA9IFtdOworCit2YXIgZ2xzID0gW107CisKK2Z1bmN0aW9uIGNy
ZWF0ZVRlc3RzKCkKK3sgCisgICAgbGV0IGdsQ2FzZXMgPSBbXTsKKyAgICBmb3IgKGxldCBwcmVz
ZXJ2ZURyYXdpbmdCdWZmZXIgb2YgW3RydWUsIGZhbHNlXSkgeworICAgICAgICBmb3IgKGxldCBh
bHBoYSBvZiBbdHJ1ZSwgZmFsc2VdKSB7CisgICAgICAgICAgICBmb3IgKGxldCBwcmVtdWx0aXBs
aWVkQWxwaGEgb2YgW3RydWUsIGZhbHNlXSkgeworICAgICAgICAgICAgICAgIGdsQ2FzZXMucHVz
aCh7CisgICAgICAgICAgICAgICAgICAgIHByZXNlcnZlRHJhd2luZ0J1ZmZlcjogcHJlc2VydmVE
cmF3aW5nQnVmZmVyLCAKKyAgICAgICAgICAgICAgICAgICAgYWxwaGE6IGFscGhhLCAKKyAgICAg
ICAgICAgICAgICAgICAgcHJlbXVsdGlwbGllZEFscGhhOiBwcmVtdWx0aXBsaWVkQWxwaGEsCisg
ICAgICAgICAgICAgICAgICAgIGFudGlhbGlhczogZmFsc2UsCisgICAgICAgICAgICAgICAgICAg
IGluRG9jdW1lbnQ6IHRydWUKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKyAgICBnbENhc2VzLnB1c2goeworICAgICAgICBwcmVzZXJ2ZURyYXdp
bmdCdWZmZXI6IGZhbHNlLCAKKyAgICAgICAgYWxwaGE6IHRydWUsIAorICAgICAgICBwcmVtdWx0
aXBsaWVkQWxwaGE6IHRydWUsCisgICAgICAgIGFudGlhbGlhczogdHJ1ZSwKKyAgICAgICAgaW5E
b2N1bWVudDogdHJ1ZQorICAgIH0pOworICAgIGdsQ2FzZXMucHVzaCh7CisgICAgICAgIHByZXNl
cnZlRHJhd2luZ0J1ZmZlcjogZmFsc2UsIAorICAgICAgICBhbHBoYTogdHJ1ZSwgCisgICAgICAg
IHByZW11bHRpcGxpZWRBbHBoYTogdHJ1ZSwKKyAgICAgICAgYW50aWFsaWFzOiBmYWxzZSwKKyAg
ICAgICAgaW5Eb2N1bWVudDogZmFsc2UKKyAgICB9KTsKKyAgICAKKyAgICB2YXIgY3R4MkRDYXNl
cyA9IFtdOworICAgIGZvciAobGV0IGluRG9jdW1lbnQgb2YgW3RydWUsIGZhbHNlXSkgeworICAg
ICAgICBjdHgyRENhc2VzLnB1c2goeyBpbkRvY3VtZW50OiBpbkRvY3VtZW50IH0pOworICAgIH0K
KyAgICAKKyAgICBmb3IgKGxldCBjIG9mIGdsQ2FzZXMpIHsKKyAgICAgICAgbGV0IGQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRD
aGlsZChkKTsKKyAgICAgICAgbGV0IGggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJoMyIpOwor
ICAgICAgICBoLmlubmVyVGV4dCA9IGBXZWJHTCBjYXNlOiAke0pTT04uc3RyaW5naWZ5KGMpfWA7
CisgICAgICAgIGQuYXBwZW5kQ2hpbGQoaCk7CisgICAgICAgIGxldCBjYW52YXMgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKKyAgICAgICAgaWYgKGMuaW5Eb2N1bWVudCkKKyAg
ICAgICAgICAgIGQuYXBwZW5kQ2hpbGQoY2FudmFzKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICBsZXQgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICAgICAg
cC5jbGFzc05hbWUgPSAicGxhY2Vob2xkZXIiOworICAgICAgICAgICAgZC5hcHBlbmRDaGlsZChw
KTsKKyAgICAgICAgfQorICAgICAgICBsZXQgdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInZp
ZGVvIik7CisgICAgICAgIHYuY29udHJvbHMgPSB0cnVlOworICAgICAgICB2LmF1dG9wbGF5ID0g
dHJ1ZTsKKyAgICAgICAgZC5hcHBlbmRDaGlsZCh2KTsKKworICAgICAgICBsZXQgZ2wgPSBjYW52
YXMuZ2V0Q29udGV4dCgid2ViZ2wyIiwgeworICAgICAgICAgICAgcHJlc2VydmVEcmF3aW5nQnVm
ZmVyOiBjLnByZXNlcnZlRHJhd2luZ0J1ZmZlciwgCisgICAgICAgICAgICBhbHBoYTogYy5hbHBo
YSwgCisgICAgICAgICAgICBwcmVtdWx0aXBsaWVkQWxwaGE6IGMucHJlbXVsdGlwbGllZEFscGhh
LAorICAgICAgICAgICAgYW50aWFsaWFzOiBjLmFudGlhbGlhcworICAgICAgICB9KTsKKyAgICAg
ICAgdi5zcmNPYmplY3QgPSBjYW52YXMuY2FwdHVyZVN0cmVhbSgpOworICAgICAgICBnbHMucHVz
aChnbCk7CisgICAgfQorICAgIAorICAgIGZvciAobGV0IGMgb2YgY3R4MkRDYXNlcykgeworICAg
ICAgICBsZXQgZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKGQpOworICAgICAgICBsZXQgaCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImgzIik7CisgICAgICAgIGguaW5uZXJUZXh0ID0gYENhbnZhcyBjYXNlOiAke0pT
T04uc3RyaW5naWZ5KGMpfWA7CisgICAgICAgIGQuYXBwZW5kQ2hpbGQoaCk7CisgICAgICAgIGxl
dCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKKyAgICAgICAgaWYg
KGMuaW5Eb2N1bWVudCkKKyAgICAgICAgICAgIGQuYXBwZW5kQ2hpbGQoY2FudmFzKTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBsZXQgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOworICAgICAgICAgICAgcC5jbGFzc05hbWUgPSAicGxhY2Vob2xkZXIiOworICAgICAgICAg
ICAgZC5hcHBlbmRDaGlsZChwKTsKKyAgICAgICAgfQorICAgICAgICBsZXQgdiA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoInZpZGVvIik7CisgICAgICAgIHYuY29udHJvbHMgPSB0cnVlOworICAg
ICAgICB2LmF1dG9wbGF5ID0gdHJ1ZTsKKyAgICAgICAgZC5hcHBlbmRDaGlsZCh2KTsKKyAgICAg
ICAgbGV0IGN0eDJEID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7CisgICAgICAgIHYuc3JjT2Jq
ZWN0ID0gY2FudmFzLmNhcHR1cmVTdHJlYW0oKTsKKyAgICAgICAgY3R4MkRzLnB1c2goY3R4MkQp
OworICAgIH0KK30KKworZnVuY3Rpb24gZHJhd09uY2UoKQoreworICAgIGZvciAobGV0IGMgb2Yg
Z2xzKSB7CisgICAgICAgIGMuZW5hYmxlKGMuU0NJU1NPUl9URVNUKTsKKyAgICAgICAgaWYgKGMu
Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKS5wcmVtdWx0aXBsaWVkQWxwaGEpCisgICAgICAgICAgICBj
LmNsZWFyQ29sb3IoMC4sIDAuNSwgMC4sIDAuNSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGMuY2xlYXJDb2xvcigwLiwgMS4sIDAuLCAwLjUpOworICAgICAgICBjLnNjaXNzb3IoMCwgMCwg
MzAwLCA1MCk7CisgICAgICAgIGMuY2xlYXIoYy5DT0xPUl9CVUZGRVJfQklUKTsKKyAgICAgICAg
CisgICAgICAgIGMuc2Npc3NvcigxMjUsIDUwLCA1MCwgNTApOworICAgICAgICBjLmNsZWFyQ29s
b3IoMC4sIDEuLCAwLiwgMS4pOworICAgICAgICBjLmNsZWFyKGMuQ09MT1JfQlVGRkVSX0JJVCk7
CisgICAgICAgIGMuc2Npc3NvcigwLCAwLCAzMDAsIDUwKTsKKyAgICAgICAgYy5jbGVhcihjLkNP
TE9SX0JVRkZFUl9CSVQpOworICAgICAgICAKKyAgICB9CisgICAgZm9yIChsZXQgYyBvZiBjdHgy
RHMpIHsKKyAgICAgICAgYy5maWxsU3R5bGUgPSAicmdiYSgwLCAxMjgsIDAsIDAuNSkiOworICAg
ICAgICBjLmZpbGxSZWN0KDAsIDEwMCwgMzAwLCA1MCk7CisgICAgICAgIGMuZmlsbFN0eWxlID0g
InJnYmEoMCwgMjU1LCAwLCAxLikiOworICAgICAgICBjLmZpbGxSZWN0KDEyNSwgNTAsIDUwLCA1
MCk7CisgICAgfQorfQorCitmdW5jdGlvbiBjbGVhck9uY2UoKQoreworICAgIGNvbnNvbGUubG9n
KCJjbGVhciIpOworICAgIGZvciAobGV0IGMgb2YgZ2xzKSB7CisgICAgICAgIGMuY2xlYXJDb2xv
cigwLiwgMC4sIDAuLCAwLik7CisgICAgICAgIGMuZGlzYWJsZShjLlNDSVNTT1JfVEVTVCk7Cisg
ICAgICAgIGMuY2xlYXIoYy5DT0xPUl9CVUZGRVJfQklUKTsKKyAgICB9CisgICAgZm9yIChsZXQg
YyBvZiBjdHgyRHMpIHsKKyAgICAgICAgYy5jbGVhclJlY3QoMCwgMCwgMzAwLCAxNTApOworICAg
IH0KK30KKwordmFyIGlzVG9nZ2xpbmcgPSBmYWxzZTsKKworZnVuY3Rpb24gdG9nZ2xlRHJhd2lu
ZygpCit7CisgICAgaWYgKGlzVG9nZ2xpbmcpIHsKKyAgICAgICAgY2xlYXJUaW1lb3V0KGlzVG9n
Z2xpbmcpOworICAgICAgICBpc1RvZ2dsaW5nID0gZmFsc2U7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgdmFyIGhhc0RyYXduID0gdHJ1ZTsKKyAgICBmdW5jdGlvbiBmKCkgeworICAgICAg
ICBpZiAoaGFzRHJhd24pCisgICAgICAgICAgICBjbGVhck9uY2UoKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgZHJhd09uY2UoKTsKKyAgICAgICAgaGFzRHJhd24gPSAhaGFzRHJhd247Cisg
ICAgICAgIGlzVG9nZ2xpbmcgPSBzZXRUaW1lb3V0KGYsIDEwMDApOworICAgIH0KKyAgICBmKCk7
Cit9CisKK2NyZWF0ZVRlc3RzKCk7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHdp
bmRvdy50ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0b2dnbGVEcmF3aW5nKCk7Cit9
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
Cg==
</data>
<flag name="commit-queue"
          id="462734"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439141</attachid>
            <date>2021-09-24 06:53:32 -0700</date>
            <delta_ts>2021-09-24 07:03:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230613-20210924165330.patch</filename>
            <type>text/plain</type>
            <size>33017</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMDQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2MwMTFlOTYwNGJjOGUy
NzM1NjhlMTY4ZmE2MjlmODc4MzIyZGQ1My4uMjA2ODRiZGZiYzZmYTFlNmFiYTExNzQ1NzY3ZmMx
NGEzMmY1OWY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIxLTA5LTI0ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0g
Y2FudmFzLmNhcHR1cmVTdHJlYW0oKSBmYWlscyBmb3IgV2ViR0wKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDYxMworICAgICAgICA8cmRhcjovLzgy
MzA3MjkzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlbW92ZSBwcmV2aW91cyBpbmNvcnJlY3QgYmVoYXZpb3Igb2YgdHVybmluZyBvbiAicHJlc2Vy
dmVzRHJhd2luZ0J1ZmZlciIKKyAgICAgICAgYW5kIHNhbXBsaW5nIHRoZSBkcmF3aW5nIGJ1ZmZl
ci4gVGhlIGRyYXdpbmcgYnVmZmVyIGlzIG5vdCB3aGF0IHNob3VsZCAKKyAgICAgICAgZXZlciBi
ZSB0b3VjaGVkLCByYXRoZXIgaXQncyB0aGUgZGlzcGxheSBidWZmZXIgdGhhdCBzaG91bGQgYmUg
YXZhaWxhYmxlLgorICAgICAgICAKKyAgICAgICAgSW1wbGVtZW50IHNhbXBsaW5nIG9mIFdlYkdM
IGRpc3BsYXkgYnVmZmVyIGZvciAKKyAgICAgICAgbWVkaWEgc3RyZWFtIGNhcHR1cmUuIFRoZSB1
cG9uIHNhbXBsaW5nLCBvYnRhaW4gYSBzaGFyZWQgCisgICAgICAgIHJlZmVyZW5jZSB0byB0aGUK
KyAgICAgICAgZGlzcGxheSBidWZmZXIsIHBhc3NlcyBpdCB0byBtZWRpYSBzYW1wbGUgY29uc3Vt
aW5nIHByb2Nlc3MgYW5kIG1hcmsKKyAgICAgICAgdGhlIFdlYkdMIGNvbnRleHQgZGlzcGxheSBi
dWZmZXIgbm9uLWVsaWdpYmxlIGZvciByZWN5Y2xpbmcgYXMgCisgICAgICAgIG5ldyBkcmF3aW5n
IGJ1ZmZlci4KKworICAgICAgICBDdXJyZW50bHkgdGhlIGltcGxlbWVudGF0aW9uIGlzIGRpc3Bs
YXllZCBjb3JyZWN0bHkgZm9yCisgICAgICAgIFdlYkdMIGNvbnRlbnRzIHRoYXQgaXMgcHJlbXVs
dGlwbGllZC4gVW5wcmVtdWx0aXBsaWVkCisgICAgICAgIGNvbnRlbnQgaXMgZml4ZWQgaW4gdGhl
IGFzc29jaWF0ZWQgYnVncy4KKworICAgICAgICBOb3RlOiB0aGVyZSBhcmUgYnVncyBwcmV2ZW50
aW5nIHJvYnVzdCB1c2Ugb2YgdGhlIEFQSSwKKyAgICAgICAgbGlzdGVkIGluIHRoZSBhc3NvY2lh
dGVkIGJ1Z3MuIEFzIHN1Y2gsIHRlc3RpbmcgaXMgbm90IGV4cGFuZGVkCisgICAgICAgIGluIHRo
aXMgYnVnLgorCisgICAgICAgIFRlc3RlZCBieQorICAgICAgICBNYW51YWxUZXN0cy9tZWRpYXN0
cmVhbS9tZWRpYXN0cmVhbS1jYW52YXMtdG8tdmlkZW8uaHRtbCAoYWRkZWQpCisKKyAgICAgICAg
aHR0cHM6Ly93ZWJydGMuZ2l0aHViLmlvL3NhbXBsZXMvc3JjL2NvbnRlbnQvY2FwdHVyZS9jYW52
YXMtdmlkZW8vCisgICAgICAgIChSZWZyZXNoIHRoZSBwYWdlIG9yIGhpZGUgdGhlIHdpbmRvdyB1
bnRpbCBNZWRpYVBsYXllciBpbml0aWFsaXphdGlvbgorICAgICAgICBmbGFreW5lc3MgbGV0cyBy
ZW5kZXJpbmcgaGFwcGVuKQorCisgICAgICAgIFRoZSB0ZXN0IExheW91dFRlc3RzL2Zhc3QvbWVk
aWFzdHJlYW0vY2FwdHVyZVN0cmVhbS9jYW52YXMzZC5odG1sCisgICAgICAgIGNhbm5vdCB5ZXQg
YmUgdXNlZCB0byB0ZXN0IHRoZSBpbXBsZW1lbnRhdGlvbiBhcyB0aGUgcmVzdCBvZiB0aGUKKyAg
ICAgICAgY2FwdHVyZVN0cmVhbSgpIGFuZCBwbGF5YmFjayBpbXBsZW1lbnRhdGlvbiBpcyBzbyBm
bGFreS4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlh
U3RyZWFtVHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzQ2FwdHVyZU1lZGlhU3Ry
ZWFtVHJhY2s6OlNvdXJjZTo6Y2FudmFzQ2hhbmdlZCk6CisgICAgICAgICogaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6dG9N
ZWRpYVNhbXBsZSk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpw
YWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6aXNQcmVzZXJ2aW5nRHJhd2luZ0J1ZmZlciBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBhaW50Q29t
cG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlSW1hZ2VT
YW1wbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjpwcmVzZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29j
b2EubW06CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRD
b21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGFpbnRDb21w
b3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1w
bGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTC5oOgorCiAyMDIxLTA5LTI0ICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4K
IAogICAgICAgICBbSUZDXVtMRkNdIElubGluZUxldmVsQm94IG5lZWRzIHRvIHJldGFpbiBvbmx5
IGEgc21hbGwgc2V0IG9mIHN0eWxlIHByb3BlcnRpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFT
dHJlYW1UcmFjay5jcHAKaW5kZXggMDg4MDkzMzRhODIwYmQ4ZjYyNWM5MzMwMzQyYWZiODlhOTZh
ZjI5ZS4uNGI1NmQ5YzFmOTFmZWRjZmIyNmNkYzRiMmYwYzdmZWEyNmIzNWM1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFT
dHJlYW1UcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9D
YW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAKQEAgLTE1MywxOSArMTUzLDYgQEAgdm9p
ZCBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpjYW52YXNDaGFuZ2VkKENh
bnZhc0Jhc2UmIGNhbnZhcywgY28KIHsKICAgICBBU1NFUlRfVU5VU0VEKGNhbnZhcywgbV9jYW52
YXMgPT0gJmNhbnZhcyk7CiAKLSNpZiBFTkFCTEUoV0VCR0wpCi0gICAgLy8gRklYTUU6IFdlIG5l
ZWQgdG8gcHJlc2VydmUgZHJhd2luZyBidWZmZXIgYXMgd2UgYXJlIGN1cnJlbnRseSBncmFiYmlu
ZyBmcmFtZXMgYXN5bmNocm9ub3VzbHkuCi0gICAgLy8gV2Ugc2hvdWxkIGluc3RlYWQgYWRkIGFu
IGFuY2hvciBwb2ludCBmb3IgYm90aCAyZCBhbmQgM2QgY29udGV4dHMgd2hlcmUgY2FudmFzIHdp
bGwgYWN0dWFsbHkgcGFpbnQuCi0gICAgLy8gQW5kIGNhbGwgY2FudmFzIG9ic2VydmVycyBmcm9t
IHRoYXQgcG9pbnQuCi0gICAgaWYgKGlzPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+KGNhbnZh
cy5yZW5kZXJpbmdDb250ZXh0KCkpKSB7Ci0gICAgICAgIGF1dG8mIGNvbnRleHQgPSBkb3duY2Fz
dDxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPigqY2FudmFzLnJlbmRlcmluZ0NvbnRleHQoKSk7
Ci0gICAgICAgIGlmICghY29udGV4dC5pc1ByZXNlcnZpbmdEcmF3aW5nQnVmZmVyKCkpIHsKLSAg
ICAgICAgICAgIGNhbnZhcy5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJUdXJuaW5nIGRy
YXdpbmcgYnVmZmVyIHByZXNlcnZhdGlvbiBmb3IgdGhlIFdlYkdMIGNhbnZhcyBiZWluZyBjYXB0
dXJlZCJfcyk7Ci0gICAgICAgICAgICBjb250ZXh0LmVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZl
cigpOwotICAgICAgICB9Ci0gICAgfQotI2VuZGlmCi0KICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IHRyeSB0byBnZW5lcmF0ZSB0aGUgZnJhbWUgYXQgdGhlIHRpbWUgdGhlIHNjcmVlbiBpcyBiZWlu
ZyB1cGRhdGVkLgogICAgIGlmIChtX2NhcHR1cmVDYW52YXNUaW1lci5pc0FjdGl2ZSgpKQogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmlu
ZGV4IGYyODIxODkxODY4ZmUyOTgxNDFjMzk1OTdiMzA5ZTkzODNmNGM2YjguLmM1ZTA1YTc5Yzc4
ODQ1M2MxNDVjNzAwZDBmYzAyNTFiMGM0MjQ2ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TENhbnZhc0VsZW1lbnQuY3BwCkBAIC03NTgsNiArNzU4LDEzIEBAIFJlZlB0cjxJbWFnZURhdGE+
IEhUTUxDYW52YXNFbGVtZW50OjpnZXRJbWFnZURhdGEoKQogUmVmUHRyPE1lZGlhU2FtcGxlPiBI
VE1MQ2FudmFzRWxlbWVudDo6dG9NZWRpYVNhbXBsZSgpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0Ep
IHx8IFVTRShHU1RSRUFNRVIpCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGlmIChpczxXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlPihtX2NvbnRleHQuZ2V0KCkpKSB7CisgICAgICAgIGlmIChSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYkFQSVN0YXRpc3RpY3NFbmFi
bGVkKCkpCisgICAgICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nQ2Fu
dmFzUmVhZChkb2N1bWVudCgpKTsKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U+KCptX2NvbnRleHQpLnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlh
U2FtcGxlKCk7CisgICAgfQorI2VuZGlmCiAgICAgYXV0byogaW1hZ2VCdWZmZXIgPSBidWZmZXIo
KTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHAKaW5kZXggY2FhNmZjMjk5NDk0MTViYjc4YTExMTQ0MjhmYmFhNjBhM2Q2ZmFiNC4u
Mjg0YjA1NTM5OWJkMGQyM2ZmYTA2Y2I0YmIxN2Y3YTU2YzA0Y2UxMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHAKQEAgLTEzNCw2ICsxMzQsMTAgQEAKICNpbmNsdWRlICJPZmZzY3JlZW5DYW52YXMuaCIKICNl
bmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJNZWRpYVNhbXBsZS5o
IgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRF
RF9JTVBMKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UpOwpAQCAtMTM3NSw2ICsxMzc5LDE1IEBA
IHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvUGl4CiAgICAgcmV0dXJuIG1fY29udGV4dC0+cGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcigpOwogfQogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKK1JlZlB0cjxNZWRpYVNhbXBsZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cGFpbnRD
b21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKQoreworICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX2NvbnRl
eHQtPnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCk7Cit9CisjZW5kaWYKKwog
V2ViR0xUZXh0dXJlOjpUZXh0dXJlRXh0ZW5zaW9uRmxhZyBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp0ZXh0dXJlRXh0ZW5zaW9uRmxhZ3MoKSBjb25zdAogewogICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxXZWJHTFRleHR1cmU6OlRleHR1cmVFeHRlbnNpb25GbGFnPigobV9vZXNUZXh0dXJlRmxv
YXRMaW5lYXIgPyBXZWJHTFRleHR1cmU6OlRleHR1cmVFeHRlbnNpb25GbG9hdExpbmVhckVuYWJs
ZWQgOiAwKSB8IChtX29lc1RleHR1cmVIYWxmRmxvYXRMaW5lYXIgPyBXZWJHTFRleHR1cmU6OlRl
eHR1cmVFeHRlbnNpb25IYWxmRmxvYXRMaW5lYXJFbmFibGVkIDogMCkpOwpAQCAtMzk1MCwxNCAr
Mzk2Myw2IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZXh0ZW5zaW9uSXNFbmFi
bGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCkKLXsK
LSAgICBBU1NFUlQoIW1fYXR0cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpOwotICAgIG1f
YXR0cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIgPSB0cnVlOwotICAgIC8vIE11c3Qgc2Vu
ZCB0aGlzIG5vdGlmaWNhdGlvbiBkb3duIHRvIHRoZSBHcmFwaGljc0NvbnRleHRHTCBhcyB3ZWxs
LgotICAgIG1fY29udGV4dC0+ZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCk7Ci19Ci0KIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aGludChHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIG1vZGUpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
aAppbmRleCAxYmI3ZjFmZmRhMmRiYTdlYWQ1ZmE3YjI0MzIwYWM4NjEyNDc4OTRlLi5mZGJjODg0
ZDU2M2IwZmI5MzQ5MzAyZDk5Mzg2NmE4NTVjYmU0YTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC0xMjgs
NiArMTI4LDEwIEBAIHVzaW5nIFdlYkdMQ2FudmFzID0gV1RGOjpWYXJpYW50PFJlZlB0cjxIVE1M
Q2FudmFzRWxlbWVudD4sIFJlZlB0cjxPZmZzY3JlZW5DYW52CiB1c2luZyBXZWJHTENhbnZhcyA9
IFdURjo6VmFyaWFudDxSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+PjsKICNlbmRpZgogCisjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKK2NsYXNzIE1lZGlhU2FtcGxlOworI2VuZGlmCisKIGNsYXNz
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0w6OkNs
aWVudCwgcHVibGljIEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dCwgcHJpdmF0ZSBBY3Rp
dml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSk7CiBwdWJsaWM6CkBAIC0yMzMsMTAgKzIzNyw2IEBAIHB1
YmxpYzoKICAgICBib29sIGV4dGVuc2lvbklzRW5hYmxlZChjb25zdCBTdHJpbmcmKTsKIAogICAg
IGJvb2wgaXNQcmVzZXJ2aW5nRHJhd2luZ0J1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmli
dXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXI7IH0KLSAgICAvLyBDb25jZXNzaW9uIHRvIGNhbnZh
cyBjYXB0dXJlIEFQSSwgd2hpY2ggbXVzdCBkeW5hbWljYWxseSBlbmFibGUKLSAgICAvLyBwcmVz
ZXJ2ZURyYXdpbmdCdWZmZXIuIFRoaXMgY2FuIG9ubHkgYmUgY2FsbGVkIG9uY2UsIHdoZW4KLSAg
ICAvLyBpc1ByZXNlcnZpbmdEcmF3aW5nQnVmZmVyKCkgcmV0dXJucyBmYWxzZS4KLSAgICB2b2lk
IGVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpOwogCiAgICAgYm9vbCBwcmV2ZW50QnVmZmVy
Q2xlYXJGb3JJbnNwZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3ByZXZlbnRCdWZmZXJDbGVhckZv
ckluc3BlY3RvcjsgfQogICAgIHZvaWQgc2V0UHJldmVudEJ1ZmZlckNsZWFyRm9ySW5zcGVjdG9y
KGJvb2wgdmFsdWUpIHsgbV9wcmV2ZW50QnVmZmVyQ2xlYXJGb3JJbnNwZWN0b3IgPSB2YWx1ZTsg
fQpAQCAtMzkyLDYgKzM5Miw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5
V2l0aFBhaW50KCkgZmluYWw7CiAgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZh
cygpIGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHBhaW50UmVuZGVyaW5n
UmVzdWx0c1RvUGl4ZWxCdWZmZXIoKTsKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIFJl
ZlB0cjxNZWRpYVNhbXBsZT4gcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKTsK
KyNlbmRpZgogCiAgICAgdm9pZCByZW1vdmVTaGFyZWRPYmplY3QoV2ViR0xTaGFyZWRPYmplY3Qm
KTsKICAgICB2b2lkIHJlbW92ZUNvbnRleHRPYmplY3QoV2ViR0xDb250ZXh0T2JqZWN0Jik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRHTC5jcHAKaW5kZXggMzZlMzQzMWY1NmYwOGNiYTI4ZDYwMGVmZWExMzUxMmRjODI5NGI5OC4u
NDZjMjZhZWJmYTA4NjUxMjIzZWRmOWI1YmMyN2E4NjI5NmY4ZGZmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcApA
QCAtMzYyLDEyICszNjIsNiBAQCBHcmFwaGljc0NvbnRleHRHTDo6R3JhcGhpY3NDb250ZXh0R0wo
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzLCBHcmFwaGljcwogewogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMOjplbmFibGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKQotewotICAg
IC8vIENhbnZhcyBjYXB0dXJlIHNob3VsZCBub3QgY2FsbCB0aGlzIHVubGVzcyBuZWNlc3Nhcnku
Ci0gICAgQVNTRVJUKCFtX2F0dHJzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcik7Ci0gICAgbV9hdHRy
cy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIgPSB0cnVlOwotfQogCiBib29sIEdyYXBoaWNzQ29udGV4
dEdMOjpjb21wdXRlRm9ybWF0QW5kVHlwZVBhcmFtZXRlcnMoR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCB1bnNpZ25lZCogY29tcG9uZW50c1BlclBpeGVsLCB1bnNpZ25lZCogYnl0ZXNQ
ZXJDb21wb25lbnQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCA4NTRkODBhNTgyMzZhZTJmZjY2NGUxYjI4ZWM3
NzhlYjY0YWIxMGFiLi5hNmUzZTQ0YzgxOTljNWNkZjc0YTkzYWM2ZjYxNGZkMzA2NTg1NzMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dEdMLmgKQEAgLTU5LDcgKzU5LDkgQEAgY2xhc3MgUGl4ZWxCdWZmZXI7CiAjaWYgRU5BQkxF
KFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xDVjsK
ICNlbmRpZgotCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK2NsYXNzIE1lZGlhU2FtcGxlOwor
I2VuZGlmCiAKIC8vIEJhc2UgY2xhc3MgZm9yIGdyYXBoaWNzIGNvbnRleHQgZm9yIGltcGxlbWVu
dGluZyBXZWJHTCByZW5kZXJpbmcgbW9kZWwuCiBjbGFzcyBHcmFwaGljc0NvbnRleHRHTCA6IHB1
YmxpYyBSZWZDb3VudGVkPEdyYXBoaWNzQ29udGV4dEdMPiB7CkBAIC0xMjQ0LDEzICsxMjQ2LDYg
QEAgcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBjb250ZXh0QXR0cmli
dXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cnM7IH0KICAgICB2b2lkIHNldENvbnRleHRBdHRy
aWJ1dGVzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMpIHsgbV9hdHRy
cyA9IGF0dHJzOyB9CiAKLSAgICAvLyBGSVhNRTogVGhlIGNhbGxpbmcgc2l0ZSBzaG91bGQgYmUg
Zml4ZWQsIHRoaXMgYnJlYWtzIHRoZSBXZWJHTCBzcGVjCi0gICAgLy8gd3J0IHByZXNlcnZlRHJh
d2luZ0J1ZmZlciA9PSBmYWxzZSBiZWhhdmlvci4KLSAgICAvLyBDb25jZXNzaW9uIHRvIENhbnZh
cyBjYXB0dXJlU3RyZWFtLCB3aGljaCBuZWVkcyB0byBkeW5hbWljYWxseSBzZXQKLSAgICAvLyBw
cmVzZXJ2ZURyYXdpbmdCdWZmZXIgdG8gdHJ1ZSBpbiBvcmRlciB0byBhdm9pZCBpbXBsaWNpdCBj
bGVhcnMuCi0gICAgLy8gSW1wbGVtZW50YXRpb25zIGdlbmVyYWxseSBkbyBub3Qgc3VwcG9ydCB0
b2dnbGluZyB0aGlzIGJpdCBhcmJpdHJhcmlseS4KLSAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlUHJl
c2VydmVEcmF3aW5nQnVmZmVyKCk7Ci0KICAgICAvLyBTdXBwb3J0IGZvciBleHRlbnNpb25zLiBS
ZXR1cm5zIGEgbm9uLW51bGwgb2JqZWN0LCB0aG91Z2ggbm90CiAgICAgLy8gYWxsIG1ldGhvZHMg
aXQgY29udGFpbnMgbWF5IG5lY2Vzc2FyaWx5IGJlIHN1cHBvcnRlZCBvbiB0aGUKICAgICAvLyBj
dXJyZW50IGhhcmR3YXJlLiBNdXN0IGNhbGwgRXh0ZW5zaW9uc0dMOjpzdXBwb3J0cygpIHRvCkBA
IC0xMjk0LDYgKzEyODksOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVuZGVy
aW5nUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyJikgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpv
cHRpb25hbDxQaXhlbEJ1ZmZlcj4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcigp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKElt
YWdlQnVmZmVyJikgPSAwOworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgdmlydHVhbCBS
ZWZQdHI8TWVkaWFTYW1wbGU+IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkg
PSAwOworI2VuZGlmCiAKICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgYmUgcmVtb3ZlZC4gVGhl
IGxheWVyIHNob3VsZCBiZSBtYXJrZWQgY29tcG9zaXRlZCBieQogICAgIC8vIHByZXBhcmluZyBm
b3IgZGlzcGxheSwgc28gdGhhdCBjYW52YXMgaW1hZ2UgYnVmZmVyIGFuZCB0aGUgbGF5ZXIgYWdy
ZWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAppbmRleCA3NWVjYjFl
OTg2NjUzOTFhNzgwZTMwNWJkOGNlOWE1YzczMTgzYTFjLi43YWVlMzhmMzlmM2IzZGFkNjI0MDgy
ZGJiYjkwODQ0NjNiYzMyYTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2UuY3BwCkBAIC05NywxMyArOTcsNiBAQCBHQ0dMYml0ZmllbGQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2U6OmdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0CiAgICAgcmV0dXJu
IG1fYnVmZmVyc1RvQXV0b0NsZWFyOwogfQogCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlOjplbmFibGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKQotewotICAgIC8vIFJlZGVj
bGFyZWQgZm9yIGV4cG9ydCByZWFzb25zLgotICAgIC8vIEZJWE1FOiBUaGUgd2hvbGUgZnVuY3Rp
b24gc2hvdWxkIGJlIHJlbW92ZWQuCi0gICAgR3JhcGhpY3NDb250ZXh0R0w6OmVuYWJsZVByZXNl
cnZlRHJhd2luZ0J1ZmZlcigpOwotfQotCiBib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpzdXBwb3J0cyhjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgd2FpdFVudGlsSW5p
dGlhbGl6ZWQoKTsKQEAgLTE1Niw1ICsxNDksMTIgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZTo6Z2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCwgR0NHTGludCwgR0NHTHMK
IHsKIH0KICNlbmRpZgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgIVBMQVRGT1JNKENP
Q09BKQorUmVmUHRyPE1lZGlhU2FtcGxlPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKQoreworICAgIHJldHVybiBu
dWxscHRyOworfQorI2VuZGlmCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZS5oCmluZGV4IGJkZGE3ODVmNjBlNWY3NWI4NDZjZjBiNmNmYTI0YWE3M2VlNWQ5ZWEu
LmU5ZWNiODdjNzBhNTQzMDA4MmY3NDZkNjI2YTA1MWViZGM2NzI1MjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaApAQCAtNjcsNyArNjcsNiBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoR0NHTGJpdGZpZWxkKSBmaW5hbDsKICAgICBHQ0dM
Yml0ZmllbGQgZ2V0QnVmZmVyc1RvQXV0b0NsZWFyKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBt
YXJrTGF5ZXJDb21wb3NpdGVkKCkgZmluYWw7Ci0gICAgdm9pZCBlbmFibGVQcmVzZXJ2ZURyYXdp
bmdCdWZmZXIoKSBmaW5hbDsKIAogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElP
TikKICAgICBHcmFwaGljc0NvbnRleHRHTENWKiBhc0NWKCkgZmluYWw7CkBAIC04Myw2ICs4Miw5
IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQsIEdDR0xpbnQs
IEdDR0xzaXplaSwgR0NHTGZsb2F0KikgZmluYWw7CiAgICAgdm9pZCBnZXRuVW5pZm9ybWl2RVhU
KEdDR0x1aW50LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xpbnQqKSBmaW5hbDsKICNlbmRpZgor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBwYWludENv
bXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpIGZpbmFsOworI2VuZGlmCiAKIHByb3RlY3Rl
ZDoKICAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBhdmFpbGFibGVFeHRlbnNpb25z
LCBjb25zdCBTdHJpbmcmIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBs
ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oCmluZGV4IDU0NWYwYmUxYzUwY2JmZTQxNzAxODAz
NTZmODhjZTNjNTUyYzg2ZjcuLjJlYjA0NDlhNjBkYTkyZTBiOWQ3MjhhMzNkYjcxYmZhZmI0YjBj
OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oCkBAIC0z
MCw2ICszMCw4IEBACiAjaW5jbHVkZSA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5k
YXRpb24uaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCit1c2luZyBDVlBpeGVsQnVmZmVy
UmVmID0gc3RydWN0IF9fQ1ZCdWZmZXIqOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFBpeGVsQnVmZmVyOwpAQCAtNDAsNiArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxN
ZWRpYVNhbXBsZUFWRk9iakM+IGNyZWF0ZShDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGUsIEF0b21T
dHJpbmcgdHJhY2tJRCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVNhbXBsZUFWRk9iakMo
c2FtcGxlLCB0cmFja0lEKSk7IH0KICAgICBzdGF0aWMgUmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4g
Y3JlYXRlKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZSwgVmlkZW9Sb3RhdGlvbiByb3RhdGlvbiA9
IFZpZGVvUm90YXRpb246Ok5vbmUsIGJvb2wgbWlycm9yZWQgPSBmYWxzZSkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBNZWRpYVNhbXBsZUFWRk9iakMoc2FtcGxlLCByb3RhdGlvbiwgbWlycm9yZWQp
KTsgfQogICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFTYW1wbGVBVkZPYmpDPiBjcmVhdGVJbWFnZVNh
bXBsZShQaXhlbEJ1ZmZlciYmKTsKKyAgICBzdGF0aWMgUmVmUHRyPE1lZGlhU2FtcGxlQVZGT2Jq
Qz4gY3JlYXRlSW1hZ2VTYW1wbGUoUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+JiYsIFZpZGVv
Um90YXRpb24sIGJvb2wgbWlycm9yZWQpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZv
aWQgc2V0QXNEaXNwbGF5SW1tZWRpYXRlbHkoTWVkaWFTYW1wbGUmKTsKICAgICBzdGF0aWMgUmV0
YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBjbG9uZVNhbXBsZUJ1ZmZlckFuZFNldEFzRGlzcGxh
eUltbWVkaWF0ZWx5KENNU2FtcGxlQnVmZmVyUmVmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2Jq
Qy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhU2FtcGxlQVZGT2JqQy5tbQppbmRleCBhNGNjODI4MGVlYzI5ZjNjMTZhM2IyNTdlZWNl
ZTI5OWQ1MDZmOWVhLi43YTFhMDBmZTkwM2U3OTU3MTJhZDJlYTNhZmU1MjA5NmM3YjQ0YmIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCkBAIC05NSwy
NCArOTUsMzMgQEAgUmVmUHRyPE1lZGlhU2FtcGxlQVZGT2JqQz4gTWVkaWFTYW1wbGVBVkZPYmpD
OjpjcmVhdGVJbWFnZVNhbXBsZShQaXhlbEJ1ZmZlciYmIHAKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogICAgIEFTU0VSVF9VTlVTRUQoc3RhdHVzLCAhc3RhdHVzKTsKKyAgICByZXR1
cm4gY3JlYXRlSW1hZ2VTYW1wbGUoV1RGTW92ZShjdlBpeGVsQnVmZmVyKSwgVmlkZW9Sb3RhdGlv
bjo6Tm9uZSwgZmFsc2UpOworfQogCitSZWZQdHI8TWVkaWFTYW1wbGVBVkZPYmpDPiBNZWRpYVNh
bXBsZUFWRk9iakM6OmNyZWF0ZUltYWdlU2FtcGxlKFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVm
PiYmIHBpeGVsQnVmZmVyLCBWaWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBib29sIG1pcnJvcmVkKQor
ewogICAgIENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvblJhdyA9
IG51bGxwdHI7Ci0gICAgc3RhdHVzID0gUEFMOjpDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25DcmVh
dGVGb3JJbWFnZUJ1ZmZlcihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjdlBpeGVsQnVmZmVyLmdldCgp
LCAmZm9ybWF0RGVzY3JpcHRpb25SYXcpOwotICAgIEFTU0VSVCghc3RhdHVzKTsKKyAgICBhdXRv
IHN0YXR1cyA9IFBBTDo6Q01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlRm9ySW1hZ2VCdWZm
ZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGl4ZWxCdWZmZXIuZ2V0KCksICZmb3JtYXREZXNjcmlw
dGlvblJhdyk7CisgICAgaWYgKHN0YXR1cyB8fCAhZm9ybWF0RGVzY3JpcHRpb25SYXcpIHsKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KICAgICBhdXRvIGZvcm1hdERlc2NyaXB0aW9uID0gYWRvcHRDRihmb3JtYXREZXNjcmlwdGlv
blJhdyk7CiAKICAgICBDTVNhbXBsZVRpbWluZ0luZm8gc2FtcGxlVGltaW5nSW5mb3JtYXRpb24g
PSB7IFBBTDo6a0NNVGltZUludmFsaWQsIFBBTDo6a0NNVGltZUludmFsaWQsIFBBTDo6a0NNVGlt
ZUludmFsaWQgfTsKICAgICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXJSYXcgPSBudWxs
cHRyOwotICAgIHN0YXR1cyA9IFBBTDo6Q01TYW1wbGVCdWZmZXJDcmVhdGVSZWFkeVdpdGhJbWFn
ZUJ1ZmZlcihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjdlBpeGVsQnVmZmVyLmdldCgpLCBmb3JtYXRE
ZXNjcmlwdGlvbi5nZXQoKSwgJnNhbXBsZVRpbWluZ0luZm9ybWF0aW9uLCAmc2FtcGxlQnVmZmVy
UmF3KTsKLSAgICBBU1NFUlQoIXN0YXR1cyk7CisgICAgc3RhdHVzID0gUEFMOjpDTVNhbXBsZUJ1
ZmZlckNyZWF0ZVJlYWR5V2l0aEltYWdlQnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBpeGVs
QnVmZmVyLmdldCgpLCBmb3JtYXREZXNjcmlwdGlvbi5nZXQoKSwgJnNhbXBsZVRpbWluZ0luZm9y
bWF0aW9uLCAmc2FtcGxlQnVmZmVyUmF3KTsKKyAgICBpZiAoc3RhdHVzIHx8ICFzYW1wbGVCdWZm
ZXJSYXcpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KICAgICBhdXRvIHNhbXBsZUJ1ZmZlciA9IGFkb3B0Q0Yoc2FtcGxlQnVm
ZmVyUmF3KTsKLQogICAgIENGQXJyYXlSZWYgYXR0YWNobWVudHNBcnJheSA9IFBBTDo6Q01TYW1w
bGVCdWZmZXJHZXRTYW1wbGVBdHRhY2htZW50c0FycmF5KHNhbXBsZUJ1ZmZlci5nZXQoKSwgdHJ1
ZSk7CiAgICAgZm9yIChDRkluZGV4IGkgPSAwLCBjb3VudCA9IENGQXJyYXlHZXRDb3VudChhdHRh
Y2htZW50c0FycmF5KTsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgQ0ZNdXRhYmxlRGljdGlv
bmFyeVJlZiBhdHRhY2htZW50cyA9IGNoZWNrZWRfY2ZfY2FzdDxDRk11dGFibGVEaWN0aW9uYXJ5
UmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGF0dGFjaG1lbnRzQXJyYXksIGkpKTsKICAgICAg
ICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoYXR0YWNobWVudHMsIFBBTDo6a0NNU2FtcGxlQXR0YWNo
bWVudEtleV9EaXNwbGF5SW1tZWRpYXRlbHksIGtDRkJvb2xlYW5UcnVlKTsKICAgICB9Ci0gICAg
cmV0dXJuIGNyZWF0ZShzYW1wbGVCdWZmZXIuZ2V0KCkpOworICAgIHJldHVybiBjcmVhdGUoc2Ft
cGxlQnVmZmVyLmdldCgpLCByb3RhdGlvbiwgbWlycm9yZWQpOwogfQogCiBNZWRpYVRpbWUgTWVk
aWFTYW1wbGVBVkZPYmpDOjpwcmVzZW50YXRpb25UaW1lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcAppbmRleCA5YzQwMjcy
MWRiNWZkNjQ3ODZhMmU2YTJiYTRmZTQyMDRmNjUwYmY2Li44ZDRjMzg4YjdmMWVjMWY1NzM3ZmZj
NTNhZTAzZjcyMGVkZjkwZWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0
R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCkBAIC0zNyw2ICszNywxMSBAQCBjb25zdCBHcmFwaGlj
c0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6QnVmZmVyJiBHcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YQogICAgIHJldHVybiBtX2Rpc3BsYXlCdWZmZXI7CiB9CiAKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW46Om1hcmtEaXNwbGF5QnVmZmVySW5Vc2UoKQor
eworICAgIG1fZGlzcGxheUJ1ZmZlckluVXNlID0gdHJ1ZTsKK30KKwogR3JhcGhpY3NDb250ZXh0
R0xJT1N1cmZhY2VTd2FwQ2hhaW46OkJ1ZmZlciBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3
YXBDaGFpbjo6cmVjeWNsZUJ1ZmZlcigpCiB7CiAgICAgaWYgKG1fc3BhcmVCdWZmZXIuc3VyZmFj
ZSkgewpAQCAtNTYsNiArNjEsMTAgQEAgdm9pZCogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VT
d2FwQ2hhaW46OmRldGFjaENsaWVudCgpCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluOjpwcmVzZW50KEJ1ZmZlciYmIGJ1ZmZlcikKIHsKICAgICBtX3NwYXJlQnVmZmVy
ID0gc3RkOjpleGNoYW5nZShtX2Rpc3BsYXlCdWZmZXIsIFdURk1vdmUoYnVmZmVyKSk7CisgICAg
aWYgKG1fZGlzcGxheUJ1ZmZlckluVXNlKSB7CisgICAgICAgIG1fZGlzcGxheUJ1ZmZlckluVXNl
ID0gZmFsc2U7CisgICAgICAgIG1fc3BhcmVCdWZmZXIuc3VyZmFjZS5yZXNldCgpOworICAgIH0K
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENo
YWluLmgKaW5kZXggZTQzN2Q3ZGYwZWU4NDEzOWVhZmUzZTJmZDcyNzE5OGI4ZjYxYTA2MS4uMzg3
NmFlNzM3OGQ3ZDcwM2M1MzEyMzdjYzJmNWYwYzljZmZlOTU3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZh
Y2VTd2FwQ2hhaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oCkBAIC02Nyw2ICs2Nyw5IEBA
IHB1YmxpYzoKICAgICAvLyBuZXh0IHByZXNlbnQsIHJlY3ljbGVCdWZmZXIgb3IgZGV0YWNoQ2xp
ZW50IGNhbGwuCiAgICAgdmlydHVhbCBjb25zdCBCdWZmZXImIGRpc3BsYXlCdWZmZXIoKSBjb25z
dDsKIAorICAgIC8vIE1hcmtzIHRoZSBjdXJyZW50IGRpc3BsYXkgYnVmZmVyIHRvIGJlIGluIHVz
ZSBhbmQgbm90IGVsaWdibGUgdG8gcmVjeWNsaW5nLgorICAgIHZvaWQgbWFya0Rpc3BsYXlCdWZm
ZXJJblVzZSgpOworCiAgICAgLy8gRGV0YWNoZXMgdGhlIGNsaWVudCBhbmQgcmV0dXJucyB0aGUg
Y3VycmVudCBjb250ZW50cyBidWZmZXIgbWV0YWRhdGEgaGFuZGxlLgogICAgIC8vIFRoZSBpZiBt
dWx0aXBsZSBidWZmZXJzIGhhdmUgYmVlbiBzdWJtaXR0ZWQsIHJlY3ljbGVCdWZmZXIgbXVzdCBo
YXZlIGJlZW4gY2FsbGVkIGJlZm9yZSBjYWxsaW5nCiAgICAgLy8gdGhpcy4KQEAgLTc1LDYgKzc4
LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEJ1ZmZlciBtX2Rpc3BsYXlCdWZmZXI7CiAg
ICAgQnVmZmVyIG1fc3BhcmVCdWZmZXI7CisgICAgYm9vbCBtX2Rpc3BsYXlCdWZmZXJJblVzZSA9
IGZhbHNlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2Eu
bW0KaW5kZXggNzU1Y2Q0NTg3YTRkZDVjYjMxMDU4ZWU2ODk0OTQ0YmVlYzQ4NGU1Yi4uZTY3MTA0
YTdjN2NiMTM5MWU1NzdhZWFjY2ZiODdmMDFjYWRlYzNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTENvY29hLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKFdF
QkdMKQogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKIAorI2ltcG9ydCAiQ1ZV
dGlsaXRpZXMuaCIKICNpbXBvcnQgIkV4dGVuc2lvbnNHTEFOR0xFLmgiCiAjaW1wb3J0ICJHcmFw
aGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5oIgpAQCAtNTAsNiArNTEsMTAgQEAKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHRHTENWLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisj
aW5jbHVkZSAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCisjZW5kaWYKKwogV1RGX1dFQUtfTElOS19G
T1JDRV9JTVBPUlQoRUdMX0luaXRpYWxpemUpOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04
NzgsNiArODgzLDIxIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbGVhc2VBbGxS
ZXNvdXJjZXNJZlVudXNlZCgpCiAgICAgU2NvcGVkRUdMRGVmYXVsdERpc3BsYXk6OnJlbGVhc2VB
bGxSZXNvdXJjZXNJZlVudXNlZCgpOwogfQogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK1Jl
ZlB0cjxNZWRpYVNhbXBsZT4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50Q29tcG9zaXRl
ZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkKK3sKKyAgICBhdXRvICZkaXNwbGF5QnVmZmVyID0gbV9z
d2FwQ2hhaW4tPmRpc3BsYXlCdWZmZXIoKTsKKyAgICBpZiAoIWRpc3BsYXlCdWZmZXIuc3VyZmFj
ZSB8fCAhZGlzcGxheUJ1ZmZlci5oYW5kbGUpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IGlmIChkaXNwbGF5QnVmZmVyLnN1cmZhY2UtPnNpemUoKSAhPSBnZXRJbnRlcm5hbEZyYW1lYnVm
ZmVyU2l6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBtX3N3YXBDaGFpbi0+bWFy
a0Rpc3BsYXlCdWZmZXJJblVzZSgpOworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBjcmVhdGVDVlBp
eGVsQnVmZmVyKGRpc3BsYXlCdWZmZXIuc3VyZmFjZS0+c3VyZmFjZSgpKTsKKyAgICBpZiAoIXBp
eGVsQnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gTWVkaWFTYW1w
bGVBVkZPYmpDOjpjcmVhdGVJbWFnZVNhbXBsZShXVEZNb3ZlKCpwaXhlbEJ1ZmZlciksIE1lZGlh
U2FtcGxlQVZGT2JqQzo6VmlkZW9Sb3RhdGlvbjo6VXBzaWRlRG93biwgdHJ1ZSk7Cit9CisjZW5k
aWYKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tCmluZGV4IDBjNDE0MDE1YjdiMGYz
NGJiMjhiZTM0NTUwOWM3NDI5ZTMxZGFhM2MuLjE5MzRlZjVlZjMzNjlhMjM2OTk2YjJlNmRlMGQ3
NjM4YjE5MTlmYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2VDb2NvYS5tbQpAQCAtMzIsNiArMzIsMTEgQEAKICNpbXBvcnQgIldlYkdMTGF5
ZXIuaCIKICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAKKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQorI2ltcG9ydCAiQ1ZVdGlsaXRpZXMuaCIKKyNpbXBvcnQgIk1lZGlhU2Ft
cGxlQVZGT2JqQy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKQEAgLTYz
LDUgKzY4LDIwIEBAIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1TCiAgICAgcmV0dXJuIFttX3dlYkdM
TGF5ZXIgc3dhcENoYWluXTsKIH0KIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCitSZWZQdHI8
TWVkaWFTYW1wbGU+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwYWludENvbXBv
c2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpCit7CisgICAgYXV0byYgc2MgPSBwbGF0Zm9ybVN3
YXBDaGFpbigpOworICAgIGF1dG8mIGRpc3BsYXlCdWZmZXIgPSBzYy5kaXNwbGF5QnVmZmVyKCk7
CisgICAgaWYgKCFkaXNwbGF5QnVmZmVyLnN1cmZhY2UpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIHNjLm1hcmtEaXNwbGF5QnVmZmVySW5Vc2UoKTsKKyAgICBhdXRvIHBpeGVsQnVmZmVy
ID0gY3JlYXRlQ1ZQaXhlbEJ1ZmZlcihkaXNwbGF5QnVmZmVyLnN1cmZhY2UtPnN1cmZhY2UoKSk7
CisgICAgaWYgKCFwaXhlbEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0
dXJuIE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlSW1hZ2VTYW1wbGUoV1RGTW92ZSgqcGl4ZWxC
dWZmZXIpLCBNZWRpYVNhbXBsZUFWRk9iakM6OlZpZGVvUm90YXRpb246OlVwc2lkZURvd24sIHRy
dWUpOworfQorI2VuZGlmCisKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5jcHAKaW5kZXggZTYwM2MyYmY1ZmZiYTdhZjJiMzQyZTgwZDc2ODRhMDk3MTQxMGZlYi4u
MTEyYTZmZDFjOThiZmRiNDEyNTI2N2JjOGM1M2YzZWQzYWEwYWFmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCkBAIC03MiwxNCArNzIsNiBAQCBHQ0dMYml0ZmllbGQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fYnVmZmVyc1RvQXV0b0NsZWFyOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjplbmFibGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKQotewotICAgIEdyYXBoaWNz
Q29udGV4dEdMOjplbmFibGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKTsKLSAgICAvLyBBZnRlciBk
eW5hbWljYWxseSB0cmFuc2l0aW9uaW5nIHRvIHByZXNlcnZlRHJhd2luZ0J1ZmZlcjp0cnVlCi0g
ICAgLy8gZm9yIGNhbnZhcyBjYXB0dXJlLCBjbGVhciBvdXQgYW55IGJ1ZmZlciBhdXRvLWNsZWFy
aW5nIHN0YXRlLgotICAgIG1fYnVmZmVyc1RvQXV0b0NsZWFyID0gMDsKLX0KLQogI2lmICFVU0Uo
QU5HTEUpCiBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEUmVzb3VyY2VT
YWZlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludCB1bnBhY2tBbGlnbm1lbnQpCiB7
CkBAIC0xNzAsNiArMTYyLDEzIEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb1BpeGVsCiAgICAgcmV0dXJu
IHJlc3VsdHM7CiB9CiAKKyNpZiAhUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJF
QU0pCitSZWZQdHI8TWVkaWFTYW1wbGU+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludENv
bXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpCit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisjZW5kaWYKKwogc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlYWRSZW5kZXJpbmdSZXN1bHRzRm9yUGFpbnRpbmcoKQogewogICAgIGlmICghbWFr
ZUNvbnRleHRDdXJyZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4
IGEyOTRlMzU2MDRlNzdmZGViZDg4NDFjNTU4ZDk0M2UzNDU4YTFmYmUuLmZlNTlkZWIwOWQ4OGNl
N2FkNThhZDUyMDkwYzRlNTYwNGEzN2IyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oCkBAIC00NjAsMTMgKzQ2MCwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldEJ1ZmZl
cnNUb0F1dG9DbGVhcigpOwogICAgIHZvaWQgc2V0QnVmZmVyc1RvQXV0b0NsZWFyKEdDR0xiaXRm
aWVsZCkgZmluYWw7CiAgICAgR0NHTGJpdGZpZWxkIGdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNv
bnN0IGZpbmFsOwotICAgIHZvaWQgZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCkgZmluYWw7
CiAKICAgICB2b2lkIGRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKTsKIAogICAg
IHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXImKSBmaW5hbDsK
ICAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb1Bp
eGVsQnVmZmVyKCkgZmluYWw7CiAgICAgdm9pZCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52
YXMoSW1hZ2VCdWZmZXImKSBmaW5hbDsKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIFJl
ZlB0cjxNZWRpYVNhbXBsZT4gcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKSBm
aW5hbDsKKyNlbmRpZgogCiAgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gcmVhZFJlbmRl
cmluZ1Jlc3VsdHNGb3JQYWludGluZygpOwogICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+
IHJlYWRDb21wb3NpdGVkUmVzdWx0c0ZvclBhaW50aW5nKCk7CmRpZmYgLS1naXQgYS9DaGFuZ2VM
b2cgYi9DaGFuZ2VMb2cKaW5kZXggZGI2NjRiZjEwZTcwODcxNDlmMDMxMjMwYTdkMDhhNWJjOTA1
MDEzYy4uZmYyM2JkMjY4N2ZkMDliM2NkODE0YTlkZjYwZDJhNDNiMDQ4MGQwMCAxMDA2NDQKLS0t
IGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA5LTI0
ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgTWVkaWFT
dHJlYW0gY2FudmFzLmNhcHR1cmVTdHJlYW0oKSBmYWlscyBmb3IgV2ViR0wKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDYxMworICAgICAgICA8cmRh
cjovLzgyMzA3MjkzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBhIG1hbnVhbCB0ZXN0IHRvIGludGVyYWN0IHdpdGggbWVkaWEgc3RyZWFtCisg
ICAgICAgIGNhcHR1cmVTdHJlYW0oKSBiZWhhdmlvciB1bnRpbCB0aGUgaW1wbGVtZW50YXRpb24g
aXMKKyAgICAgICAgdGVzdGFibGUuCisKKyAgICAgICAgKiBNYW51YWxUZXN0cy9tZWRpYXN0cmVh
bS9tZWRpYXN0cmVhbS1jYW52YXMtdG8tdmlkZW8uaHRtbDogQWRkZWQuCisKIDIwMjEtMDktMjMg
IEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW01T
VkNdIFRoZSAiL1pjOmxhbWJkYSIgc3dpdGNoIGlzIHJlY29tbWVuZGVkIHRvIHVzZSB0aGUgbmV3
IGxhbWJkYSBwcm9jZXNzb3IuCmRpZmYgLS1naXQgYS9NYW51YWxUZXN0cy9tZWRpYXN0cmVhbS9t
ZWRpYXN0cmVhbS1jYW52YXMtdG8tdmlkZW8uaHRtbCBiL01hbnVhbFRlc3RzL21lZGlhc3RyZWFt
L21lZGlhc3RyZWFtLWNhbnZhcy10by12aWRlby5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkMGEwNDAyYmM3
OWExZTdmNjVlODc2NjgwNjM4N2ExZjQ2Njc5YWYKLS0tIC9kZXYvbnVsbAorKysgYi9NYW51YWxU
ZXN0cy9tZWRpYXN0cmVhbS9tZWRpYXN0cmVhbS1jYW52YXMtdG8tdmlkZW8uaHRtbApAQCAtMCww
ICsxLDE5MiBAQAorPGh0bWw+Cis8aGVhZD4KKyAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgor
ICAgIHZpZGVvIHsgYm9yZGVyOiBzb2xpZCAxcHggYmxhY2s7IH0KKyAgICBjYW52YXMgeyBwYWRk
aW5nOiAxcHggfQorICAgIC5wbGFjZWhvbGRlciB7IAorICAgICAgICBkaXNwbGF5OiBpbmxpbmUt
YmxvY2s7CisgICAgICAgIGJvcmRlcjogMXB4IGRhc2hlZCBibGFjazsKKyAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDE1MHB4OworICAgIH0KKyAgICA8L3N0eWxlPgorPC9o
ZWFkPgorPGJvZHk+Cis8cD4KKzxpbnB1dCB0eXBlPSJidXR0b24iIG9uY2xpY2s9ImRyYXdPbmNl
KCkiIHZhbHVlPSJEcmF3IG9uY2UiIC8+Cis8aW5wdXQgdHlwZT0iYnV0dG9uIiBvbmNsaWNrPSJj
bGVhck9uY2UoKSIgdmFsdWU9IkNsZWFyIG9uY2UiIC8+Cis8aW5wdXQgdHlwZT0iYnV0dG9uIiBv
bmNsaWNrPSJ0b2dnbGVEcmF3aW5nKCkiIHZhbHVlPSJUb2dnbGUgZHJhd2luZyIvPgorPC9wPgor
PHA+CisgICAgPHVsPgorICAgICAgICA8bGk+TGVmdDogY2FudmFzPC9saT4KKyAgICAgICAgPGxp
PlJpZ2h0OiB2aWRlbzwvbGk+CisgICAgICAgIDxsaT5Ub3AgcmVjdGFuZ2xlIHNtYWxsOiBvcGFx
dWU8L2xpPgorICAgICAgICA8bGk+Qm90dG9tIHJlY3RhbmdsZSBiaWc6IDUwJSB0cmFuc2x1Y2Vu
dDwvbGk+CisgICAgICAgIDxsaT5CYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDwvbGk+CisgICAgPC91
bD4KKzwvcD4KKzxzY3JpcHQ+CisKK3ZhciBjdHgyRHMgPSBbXTsKKwordmFyIGdscyA9IFtdOwor
CitmdW5jdGlvbiBjcmVhdGVUZXN0cygpCit7IAorICAgIGxldCBnbENhc2VzID0gW107CisgICAg
Zm9yIChsZXQgcHJlc2VydmVEcmF3aW5nQnVmZmVyIG9mIFt0cnVlLCBmYWxzZV0pIHsKKyAgICAg
ICAgZm9yIChsZXQgYWxwaGEgb2YgW3RydWUsIGZhbHNlXSkgeworICAgICAgICAgICAgZm9yIChs
ZXQgcHJlbXVsdGlwbGllZEFscGhhIG9mIFt0cnVlLCBmYWxzZV0pIHsKKyAgICAgICAgICAgICAg
ICBnbENhc2VzLnB1c2goeworICAgICAgICAgICAgICAgICAgICBwcmVzZXJ2ZURyYXdpbmdCdWZm
ZXI6IHByZXNlcnZlRHJhd2luZ0J1ZmZlciwgCisgICAgICAgICAgICAgICAgICAgIGFscGhhOiBh
bHBoYSwgCisgICAgICAgICAgICAgICAgICAgIHByZW11bHRpcGxpZWRBbHBoYTogcHJlbXVsdGlw
bGllZEFscGhhLAorICAgICAgICAgICAgICAgICAgICBhbnRpYWxpYXM6IGZhbHNlLAorICAgICAg
ICAgICAgICAgICAgICBpbkRvY3VtZW50OiB0cnVlCisgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgZ2xDYXNlcy5wdXNoKHsKKyAgICAgICAg
cHJlc2VydmVEcmF3aW5nQnVmZmVyOiBmYWxzZSwgCisgICAgICAgIGFscGhhOiB0cnVlLCAKKyAg
ICAgICAgcHJlbXVsdGlwbGllZEFscGhhOiB0cnVlLAorICAgICAgICBhbnRpYWxpYXM6IHRydWUs
CisgICAgICAgIGluRG9jdW1lbnQ6IHRydWUKKyAgICB9KTsKKyAgICBnbENhc2VzLnB1c2goewor
ICAgICAgICBwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6IGZhbHNlLCAKKyAgICAgICAgYWxwaGE6IHRy
dWUsIAorICAgICAgICBwcmVtdWx0aXBsaWVkQWxwaGE6IHRydWUsCisgICAgICAgIGFudGlhbGlh
czogZmFsc2UsCisgICAgICAgIGluRG9jdW1lbnQ6IGZhbHNlCisgICAgfSk7CisgICAgCisgICAg
dmFyIGN0eDJEQ2FzZXMgPSBbXTsKKyAgICBmb3IgKGxldCBpbkRvY3VtZW50IG9mIFt0cnVlLCBm
YWxzZV0pIHsKKyAgICAgICAgY3R4MkRDYXNlcy5wdXNoKHsgaW5Eb2N1bWVudDogaW5Eb2N1bWVu
dCB9KTsKKyAgICB9CisgICAgCisgICAgZm9yIChsZXQgYyBvZiBnbENhc2VzKSB7CisgICAgICAg
IGxldCBkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoZCk7CisgICAgICAgIGxldCBoID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiaDMiKTsKKyAgICAgICAgaC5pbm5lclRleHQgPSBgV2ViR0wgY2FzZTogJHtKU09OLnN0
cmluZ2lmeShjKX1gOworICAgICAgICBkLmFwcGVuZENoaWxkKGgpOworICAgICAgICBsZXQgY2Fu
dmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CisgICAgICAgIGlmIChjLmlu
RG9jdW1lbnQpCisgICAgICAgICAgICBkLmFwcGVuZENoaWxkKGNhbnZhcyk7CisgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgbGV0IHAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
KyAgICAgICAgICAgIHAuY2xhc3NOYW1lID0gInBsYWNlaG9sZGVyIjsKKyAgICAgICAgICAgIGQu
YXBwZW5kQ2hpbGQocCk7CisgICAgICAgIH0KKyAgICAgICAgbGV0IHYgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJ2aWRlbyIpOworICAgICAgICB2LmNvbnRyb2xzID0gdHJ1ZTsKKyAgICAgICAg
di5hdXRvcGxheSA9IHRydWU7CisgICAgICAgIGQuYXBwZW5kQ2hpbGQodik7CisKKyAgICAgICAg
bGV0IGdsID0gY2FudmFzLmdldENvbnRleHQoIndlYmdsMiIsIHsKKyAgICAgICAgICAgIHByZXNl
cnZlRHJhd2luZ0J1ZmZlcjogYy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIsIAorICAgICAgICAgICAg
YWxwaGE6IGMuYWxwaGEsIAorICAgICAgICAgICAgcHJlbXVsdGlwbGllZEFscGhhOiBjLnByZW11
bHRpcGxpZWRBbHBoYSwKKyAgICAgICAgICAgIGFudGlhbGlhczogYy5hbnRpYWxpYXMKKyAgICAg
ICAgfSk7CisgICAgICAgIHYuc3JjT2JqZWN0ID0gY2FudmFzLmNhcHR1cmVTdHJlYW0oKTsKKyAg
ICAgICAgZ2xzLnB1c2goZ2wpOworICAgIH0KKyAgICAKKyAgICBmb3IgKGxldCBjIG9mIGN0eDJE
Q2FzZXMpIHsKKyAgICAgICAgbGV0IGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
KyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkKTsKKyAgICAgICAgbGV0IGggPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJoMyIpOworICAgICAgICBoLmlubmVyVGV4dCA9IGBDYW52
YXMgY2FzZTogJHtKU09OLnN0cmluZ2lmeShjKX1gOworICAgICAgICBkLmFwcGVuZENoaWxkKGgp
OworICAgICAgICBsZXQgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7
CisgICAgICAgIGlmIChjLmluRG9jdW1lbnQpCisgICAgICAgICAgICBkLmFwcGVuZENoaWxkKGNh
bnZhcyk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbGV0IHAgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgICAgIHAuY2xhc3NOYW1lID0gInBsYWNlaG9sZGVy
IjsKKyAgICAgICAgICAgIGQuYXBwZW5kQ2hpbGQocCk7CisgICAgICAgIH0KKyAgICAgICAgbGV0
IHYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ2aWRlbyIpOworICAgICAgICB2LmNvbnRyb2xz
ID0gdHJ1ZTsKKyAgICAgICAgdi5hdXRvcGxheSA9IHRydWU7CisgICAgICAgIGQuYXBwZW5kQ2hp
bGQodik7CisgICAgICAgIGxldCBjdHgyRCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOworICAg
ICAgICB2LnNyY09iamVjdCA9IGNhbnZhcy5jYXB0dXJlU3RyZWFtKCk7CisgICAgICAgIGN0eDJE
cy5wdXNoKGN0eDJEKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGRyYXdPbmNlKCkKK3sKKyAgICBm
b3IgKGxldCBjIG9mIGdscykgeworICAgICAgICBjLmVuYWJsZShjLlNDSVNTT1JfVEVTVCk7Cisg
ICAgICAgIGlmIChjLmdldENvbnRleHRBdHRyaWJ1dGVzKCkucHJlbXVsdGlwbGllZEFscGhhKQor
ICAgICAgICAgICAgYy5jbGVhckNvbG9yKDAuLCAwLjUsIDAuLCAwLjUpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBjLmNsZWFyQ29sb3IoMC4sIDEuLCAwLiwgMC41KTsKKyAgICAgICAgYy5z
Y2lzc29yKDAsIDAsIDMwMCwgNTApOworICAgICAgICBjLmNsZWFyKGMuQ09MT1JfQlVGRkVSX0JJ
VCk7CisgICAgICAgIAorICAgICAgICBjLnNjaXNzb3IoMTI1LCA1MCwgNTAsIDUwKTsKKyAgICAg
ICAgYy5jbGVhckNvbG9yKDAuLCAxLiwgMC4sIDEuKTsKKyAgICAgICAgYy5jbGVhcihjLkNPTE9S
X0JVRkZFUl9CSVQpOworICAgICAgICBjLnNjaXNzb3IoMCwgMCwgMzAwLCA1MCk7CisgICAgICAg
IGMuY2xlYXIoYy5DT0xPUl9CVUZGRVJfQklUKTsKKyAgICAgICAgCisgICAgfQorICAgIGZvciAo
bGV0IGMgb2YgY3R4MkRzKSB7CisgICAgICAgIGMuZmlsbFN0eWxlID0gInJnYmEoMCwgMTI4LCAw
LCAwLjUpIjsKKyAgICAgICAgYy5maWxsUmVjdCgwLCAxMDAsIDMwMCwgNTApOworICAgICAgICBj
LmZpbGxTdHlsZSA9ICJyZ2JhKDAsIDI1NSwgMCwgMS4pIjsKKyAgICAgICAgYy5maWxsUmVjdCgx
MjUsIDUwLCA1MCwgNTApOworICAgIH0KK30KKworZnVuY3Rpb24gY2xlYXJPbmNlKCkKK3sKKyAg
ICBjb25zb2xlLmxvZygiY2xlYXIiKTsKKyAgICBmb3IgKGxldCBjIG9mIGdscykgeworICAgICAg
ICBjLmNsZWFyQ29sb3IoMC4sIDAuLCAwLiwgMC4pOworICAgICAgICBjLmRpc2FibGUoYy5TQ0lT
U09SX1RFU1QpOworICAgICAgICBjLmNsZWFyKGMuQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgfQor
ICAgIGZvciAobGV0IGMgb2YgY3R4MkRzKSB7CisgICAgICAgIGMuY2xlYXJSZWN0KDAsIDAsIDMw
MCwgMTUwKTsKKyAgICB9Cit9CisKK3ZhciBpc1RvZ2dsaW5nID0gZmFsc2U7CisKK2Z1bmN0aW9u
IHRvZ2dsZURyYXdpbmcoKQoreworICAgIGlmIChpc1RvZ2dsaW5nKSB7CisgICAgICAgIGNsZWFy
VGltZW91dChpc1RvZ2dsaW5nKTsKKyAgICAgICAgaXNUb2dnbGluZyA9IGZhbHNlOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIHZhciBoYXNEcmF3biA9IHRydWU7CisgICAgZnVuY3Rpb24g
ZigpIHsKKyAgICAgICAgaWYgKGhhc0RyYXduKQorICAgICAgICAgICAgY2xlYXJPbmNlKCk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRyYXdPbmNlKCk7CisgICAgICAgIGhhc0RyYXduID0g
IWhhc0RyYXduOworICAgICAgICBpc1RvZ2dsaW5nID0gc2V0VGltZW91dChmLCAxMDAwKTsKKyAg
ICB9CisgICAgZigpOworfQorCitjcmVhdGVUZXN0cygpOworCitpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICB3aW5kb3cudGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdG9nZ2xl
RHJhd2luZygpOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439142</attachid>
            <date>2021-09-24 07:04:01 -0700</date>
            <delta_ts>2021-09-29 05:18:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230613-20210924170359.patch</filename>
            <type>text/plain</type>
            <size>33364</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMDQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2MwMTFlOTYwNGJjOGUy
NzM1NjhlMTY4ZmE2MjlmODc4MzIyZGQ1My4uMjA2ODRiZGZiYzZmYTFlNmFiYTExNzQ1NzY3ZmMx
NGEzMmY1OWY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIxLTA5LTI0ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0g
Y2FudmFzLmNhcHR1cmVTdHJlYW0oKSBmYWlscyBmb3IgV2ViR0wKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDYxMworICAgICAgICA8cmRhcjovLzgy
MzA3MjkzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlbW92ZSBwcmV2aW91cyBpbmNvcnJlY3QgYmVoYXZpb3Igb2YgdHVybmluZyBvbiAicHJlc2Vy
dmVzRHJhd2luZ0J1ZmZlciIKKyAgICAgICAgYW5kIHNhbXBsaW5nIHRoZSBkcmF3aW5nIGJ1ZmZl
ci4gVGhlIGRyYXdpbmcgYnVmZmVyIGlzIG5vdCB3aGF0IHNob3VsZCAKKyAgICAgICAgZXZlciBi
ZSB0b3VjaGVkLCByYXRoZXIgaXQncyB0aGUgZGlzcGxheSBidWZmZXIgdGhhdCBzaG91bGQgYmUg
YXZhaWxhYmxlLgorICAgICAgICAKKyAgICAgICAgSW1wbGVtZW50IHNhbXBsaW5nIG9mIFdlYkdM
IGRpc3BsYXkgYnVmZmVyIGZvciAKKyAgICAgICAgbWVkaWEgc3RyZWFtIGNhcHR1cmUuIFRoZSB1
cG9uIHNhbXBsaW5nLCBvYnRhaW4gYSBzaGFyZWQgCisgICAgICAgIHJlZmVyZW5jZSB0byB0aGUK
KyAgICAgICAgZGlzcGxheSBidWZmZXIsIHBhc3NlcyBpdCB0byBtZWRpYSBzYW1wbGUgY29uc3Vt
aW5nIHByb2Nlc3MgYW5kIG1hcmsKKyAgICAgICAgdGhlIFdlYkdMIGNvbnRleHQgZGlzcGxheSBi
dWZmZXIgbm9uLWVsaWdpYmxlIGZvciByZWN5Y2xpbmcgYXMgCisgICAgICAgIG5ldyBkcmF3aW5n
IGJ1ZmZlci4KKworICAgICAgICBDdXJyZW50bHkgdGhlIGltcGxlbWVudGF0aW9uIGlzIGRpc3Bs
YXllZCBjb3JyZWN0bHkgZm9yCisgICAgICAgIFdlYkdMIGNvbnRlbnRzIHRoYXQgaXMgcHJlbXVs
dGlwbGllZC4gVW5wcmVtdWx0aXBsaWVkCisgICAgICAgIGNvbnRlbnQgaXMgZml4ZWQgaW4gdGhl
IGFzc29jaWF0ZWQgYnVncy4KKworICAgICAgICBOb3RlOiB0aGVyZSBhcmUgYnVncyBwcmV2ZW50
aW5nIHJvYnVzdCB1c2Ugb2YgdGhlIEFQSSwKKyAgICAgICAgbGlzdGVkIGluIHRoZSBhc3NvY2lh
dGVkIGJ1Z3MuIEFzIHN1Y2gsIHRlc3RpbmcgaXMgbm90IGV4cGFuZGVkCisgICAgICAgIGluIHRo
aXMgYnVnLgorCisgICAgICAgIFRlc3RlZCBieQorICAgICAgICBNYW51YWxUZXN0cy9tZWRpYXN0
cmVhbS9tZWRpYXN0cmVhbS1jYW52YXMtdG8tdmlkZW8uaHRtbCAoYWRkZWQpCisKKyAgICAgICAg
aHR0cHM6Ly93ZWJydGMuZ2l0aHViLmlvL3NhbXBsZXMvc3JjL2NvbnRlbnQvY2FwdHVyZS9jYW52
YXMtdmlkZW8vCisgICAgICAgIChSZWZyZXNoIHRoZSBwYWdlIG9yIGhpZGUgdGhlIHdpbmRvdyB1
bnRpbCBNZWRpYVBsYXllciBpbml0aWFsaXphdGlvbgorICAgICAgICBmbGFreW5lc3MgbGV0cyBy
ZW5kZXJpbmcgaGFwcGVuKQorCisgICAgICAgIFRoZSB0ZXN0IExheW91dFRlc3RzL2Zhc3QvbWVk
aWFzdHJlYW0vY2FwdHVyZVN0cmVhbS9jYW52YXMzZC5odG1sCisgICAgICAgIGNhbm5vdCB5ZXQg
YmUgdXNlZCB0byB0ZXN0IHRoZSBpbXBsZW1lbnRhdGlvbiBhcyB0aGUgcmVzdCBvZiB0aGUKKyAg
ICAgICAgY2FwdHVyZVN0cmVhbSgpIGFuZCBwbGF5YmFjayBpbXBsZW1lbnRhdGlvbiBpcyBzbyBm
bGFreS4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlh
U3RyZWFtVHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzQ2FwdHVyZU1lZGlhU3Ry
ZWFtVHJhY2s6OlNvdXJjZTo6Y2FudmFzQ2hhbmdlZCk6CisgICAgICAgICogaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6dG9N
ZWRpYVNhbXBsZSk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpw
YWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6aXNQcmVzZXJ2aW5nRHJhd2luZ0J1ZmZlciBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBhaW50Q29t
cG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlSW1hZ2VT
YW1wbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjpwcmVzZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29j
b2EubW06CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRD
b21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGFpbnRDb21w
b3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1w
bGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTC5oOgorCiAyMDIxLTA5LTI0ICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4K
IAogICAgICAgICBbSUZDXVtMRkNdIElubGluZUxldmVsQm94IG5lZWRzIHRvIHJldGFpbiBvbmx5
IGEgc21hbGwgc2V0IG9mIHN0eWxlIHByb3BlcnRpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFT
dHJlYW1UcmFjay5jcHAKaW5kZXggMDg4MDkzMzRhODIwYmQ4ZjYyNWM5MzMwMzQyYWZiODlhOTZh
ZjI5ZS4uNGI1NmQ5YzFmOTFmZWRjZmIyNmNkYzRiMmYwYzdmZWEyNmIzNWM1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFT
dHJlYW1UcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9D
YW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAKQEAgLTE1MywxOSArMTUzLDYgQEAgdm9p
ZCBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpjYW52YXNDaGFuZ2VkKENh
bnZhc0Jhc2UmIGNhbnZhcywgY28KIHsKICAgICBBU1NFUlRfVU5VU0VEKGNhbnZhcywgbV9jYW52
YXMgPT0gJmNhbnZhcyk7CiAKLSNpZiBFTkFCTEUoV0VCR0wpCi0gICAgLy8gRklYTUU6IFdlIG5l
ZWQgdG8gcHJlc2VydmUgZHJhd2luZyBidWZmZXIgYXMgd2UgYXJlIGN1cnJlbnRseSBncmFiYmlu
ZyBmcmFtZXMgYXN5bmNocm9ub3VzbHkuCi0gICAgLy8gV2Ugc2hvdWxkIGluc3RlYWQgYWRkIGFu
IGFuY2hvciBwb2ludCBmb3IgYm90aCAyZCBhbmQgM2QgY29udGV4dHMgd2hlcmUgY2FudmFzIHdp
bGwgYWN0dWFsbHkgcGFpbnQuCi0gICAgLy8gQW5kIGNhbGwgY2FudmFzIG9ic2VydmVycyBmcm9t
IHRoYXQgcG9pbnQuCi0gICAgaWYgKGlzPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+KGNhbnZh
cy5yZW5kZXJpbmdDb250ZXh0KCkpKSB7Ci0gICAgICAgIGF1dG8mIGNvbnRleHQgPSBkb3duY2Fz
dDxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPigqY2FudmFzLnJlbmRlcmluZ0NvbnRleHQoKSk7
Ci0gICAgICAgIGlmICghY29udGV4dC5pc1ByZXNlcnZpbmdEcmF3aW5nQnVmZmVyKCkpIHsKLSAg
ICAgICAgICAgIGNhbnZhcy5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJUdXJuaW5nIGRy
YXdpbmcgYnVmZmVyIHByZXNlcnZhdGlvbiBmb3IgdGhlIFdlYkdMIGNhbnZhcyBiZWluZyBjYXB0
dXJlZCJfcyk7Ci0gICAgICAgICAgICBjb250ZXh0LmVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZl
cigpOwotICAgICAgICB9Ci0gICAgfQotI2VuZGlmCi0KICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IHRyeSB0byBnZW5lcmF0ZSB0aGUgZnJhbWUgYXQgdGhlIHRpbWUgdGhlIHNjcmVlbiBpcyBiZWlu
ZyB1cGRhdGVkLgogICAgIGlmIChtX2NhcHR1cmVDYW52YXNUaW1lci5pc0FjdGl2ZSgpKQogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmlu
ZGV4IGYyODIxODkxODY4ZmUyOTgxNDFjMzk1OTdiMzA5ZTkzODNmNGM2YjguLmM1ZTA1YTc5Yzc4
ODQ1M2MxNDVjNzAwZDBmYzAyNTFiMGM0MjQ2ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TENhbnZhc0VsZW1lbnQuY3BwCkBAIC03NTgsNiArNzU4LDEzIEBAIFJlZlB0cjxJbWFnZURhdGE+
IEhUTUxDYW52YXNFbGVtZW50OjpnZXRJbWFnZURhdGEoKQogUmVmUHRyPE1lZGlhU2FtcGxlPiBI
VE1MQ2FudmFzRWxlbWVudDo6dG9NZWRpYVNhbXBsZSgpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0Ep
IHx8IFVTRShHU1RSRUFNRVIpCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGlmIChpczxXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlPihtX2NvbnRleHQuZ2V0KCkpKSB7CisgICAgICAgIGlmIChSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYkFQSVN0YXRpc3RpY3NFbmFi
bGVkKCkpCisgICAgICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nQ2Fu
dmFzUmVhZChkb2N1bWVudCgpKTsKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U+KCptX2NvbnRleHQpLnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlh
U2FtcGxlKCk7CisgICAgfQorI2VuZGlmCiAgICAgYXV0byogaW1hZ2VCdWZmZXIgPSBidWZmZXIo
KTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHAKaW5kZXggY2FhNmZjMjk5NDk0MTViYjc4YTExMTQ0MjhmYmFhNjBhM2Q2ZmFiNC4u
Mjg0YjA1NTM5OWJkMGQyM2ZmYTA2Y2I0YmIxN2Y3YTU2YzA0Y2UxMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHAKQEAgLTEzNCw2ICsxMzQsMTAgQEAKICNpbmNsdWRlICJPZmZzY3JlZW5DYW52YXMuaCIKICNl
bmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJNZWRpYVNhbXBsZS5o
IgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRF
RF9JTVBMKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UpOwpAQCAtMTM3NSw2ICsxMzc5LDE1IEBA
IHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvUGl4CiAgICAgcmV0dXJuIG1fY29udGV4dC0+cGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcigpOwogfQogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKK1JlZlB0cjxNZWRpYVNhbXBsZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cGFpbnRD
b21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKQoreworICAgIGlmIChpc0NvbnRleHRMb3N0
T3JQZW5kaW5nKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX2NvbnRl
eHQtPnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCk7Cit9CisjZW5kaWYKKwog
V2ViR0xUZXh0dXJlOjpUZXh0dXJlRXh0ZW5zaW9uRmxhZyBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp0ZXh0dXJlRXh0ZW5zaW9uRmxhZ3MoKSBjb25zdAogewogICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxXZWJHTFRleHR1cmU6OlRleHR1cmVFeHRlbnNpb25GbGFnPigobV9vZXNUZXh0dXJlRmxv
YXRMaW5lYXIgPyBXZWJHTFRleHR1cmU6OlRleHR1cmVFeHRlbnNpb25GbG9hdExpbmVhckVuYWJs
ZWQgOiAwKSB8IChtX29lc1RleHR1cmVIYWxmRmxvYXRMaW5lYXIgPyBXZWJHTFRleHR1cmU6OlRl
eHR1cmVFeHRlbnNpb25IYWxmRmxvYXRMaW5lYXJFbmFibGVkIDogMCkpOwpAQCAtMzk1MCwxNCAr
Mzk2Myw2IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZXh0ZW5zaW9uSXNFbmFi
bGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCkKLXsK
LSAgICBBU1NFUlQoIW1fYXR0cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpOwotICAgIG1f
YXR0cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIgPSB0cnVlOwotICAgIC8vIE11c3Qgc2Vu
ZCB0aGlzIG5vdGlmaWNhdGlvbiBkb3duIHRvIHRoZSBHcmFwaGljc0NvbnRleHRHTCBhcyB3ZWxs
LgotICAgIG1fY29udGV4dC0+ZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCk7Ci19Ci0KIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aGludChHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIG1vZGUpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
aAppbmRleCAxYmI3ZjFmZmRhMmRiYTdlYWQ1ZmE3YjI0MzIwYWM4NjEyNDc4OTRlLi5mZGJjODg0
ZDU2M2IwZmI5MzQ5MzAyZDk5Mzg2NmE4NTVjYmU0YTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC0xMjgs
NiArMTI4LDEwIEBAIHVzaW5nIFdlYkdMQ2FudmFzID0gV1RGOjpWYXJpYW50PFJlZlB0cjxIVE1M
Q2FudmFzRWxlbWVudD4sIFJlZlB0cjxPZmZzY3JlZW5DYW52CiB1c2luZyBXZWJHTENhbnZhcyA9
IFdURjo6VmFyaWFudDxSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+PjsKICNlbmRpZgogCisjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKK2NsYXNzIE1lZGlhU2FtcGxlOworI2VuZGlmCisKIGNsYXNz
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0R0w6OkNs
aWVudCwgcHVibGljIEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dCwgcHJpdmF0ZSBBY3Rp
dml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSk7CiBwdWJsaWM6CkBAIC0yMzMsMTAgKzIzNyw2IEBAIHB1
YmxpYzoKICAgICBib29sIGV4dGVuc2lvbklzRW5hYmxlZChjb25zdCBTdHJpbmcmKTsKIAogICAg
IGJvb2wgaXNQcmVzZXJ2aW5nRHJhd2luZ0J1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmli
dXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXI7IH0KLSAgICAvLyBDb25jZXNzaW9uIHRvIGNhbnZh
cyBjYXB0dXJlIEFQSSwgd2hpY2ggbXVzdCBkeW5hbWljYWxseSBlbmFibGUKLSAgICAvLyBwcmVz
ZXJ2ZURyYXdpbmdCdWZmZXIuIFRoaXMgY2FuIG9ubHkgYmUgY2FsbGVkIG9uY2UsIHdoZW4KLSAg
ICAvLyBpc1ByZXNlcnZpbmdEcmF3aW5nQnVmZmVyKCkgcmV0dXJucyBmYWxzZS4KLSAgICB2b2lk
IGVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpOwogCiAgICAgYm9vbCBwcmV2ZW50QnVmZmVy
Q2xlYXJGb3JJbnNwZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3ByZXZlbnRCdWZmZXJDbGVhckZv
ckluc3BlY3RvcjsgfQogICAgIHZvaWQgc2V0UHJldmVudEJ1ZmZlckNsZWFyRm9ySW5zcGVjdG9y
KGJvb2wgdmFsdWUpIHsgbV9wcmV2ZW50QnVmZmVyQ2xlYXJGb3JJbnNwZWN0b3IgPSB2YWx1ZTsg
fQpAQCAtMzkyLDYgKzM5Miw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5
V2l0aFBhaW50KCkgZmluYWw7CiAgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZh
cygpIGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHBhaW50UmVuZGVyaW5n
UmVzdWx0c1RvUGl4ZWxCdWZmZXIoKTsKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIFJl
ZlB0cjxNZWRpYVNhbXBsZT4gcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKTsK
KyNlbmRpZgogCiAgICAgdm9pZCByZW1vdmVTaGFyZWRPYmplY3QoV2ViR0xTaGFyZWRPYmplY3Qm
KTsKICAgICB2b2lkIHJlbW92ZUNvbnRleHRPYmplY3QoV2ViR0xDb250ZXh0T2JqZWN0Jik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRHTC5jcHAKaW5kZXggMzZlMzQzMWY1NmYwOGNiYTI4ZDYwMGVmZWExMzUxMmRjODI5NGI5OC4u
NDZjMjZhZWJmYTA4NjUxMjIzZWRmOWI1YmMyN2E4NjI5NmY4ZGZmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcApA
QCAtMzYyLDEyICszNjIsNiBAQCBHcmFwaGljc0NvbnRleHRHTDo6R3JhcGhpY3NDb250ZXh0R0wo
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzLCBHcmFwaGljcwogewogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEdMOjplbmFibGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKQotewotICAg
IC8vIENhbnZhcyBjYXB0dXJlIHNob3VsZCBub3QgY2FsbCB0aGlzIHVubGVzcyBuZWNlc3Nhcnku
Ci0gICAgQVNTRVJUKCFtX2F0dHJzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcik7Ci0gICAgbV9hdHRy
cy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIgPSB0cnVlOwotfQogCiBib29sIEdyYXBoaWNzQ29udGV4
dEdMOjpjb21wdXRlRm9ybWF0QW5kVHlwZVBhcmFtZXRlcnMoR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCB1bnNpZ25lZCogY29tcG9uZW50c1BlclBpeGVsLCB1bnNpZ25lZCogYnl0ZXNQ
ZXJDb21wb25lbnQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCA4NTRkODBhNTgyMzZhZTJmZjY2NGUxYjI4ZWM3
NzhlYjY0YWIxMGFiLi5hNmUzZTQ0YzgxOTljNWNkZjc0YTkzYWM2ZjYxNGZkMzA2NTg1NzMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dEdMLmgKQEAgLTU5LDcgKzU5LDkgQEAgY2xhc3MgUGl4ZWxCdWZmZXI7CiAjaWYgRU5BQkxF
KFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xDVjsK
ICNlbmRpZgotCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK2NsYXNzIE1lZGlhU2FtcGxlOwor
I2VuZGlmCiAKIC8vIEJhc2UgY2xhc3MgZm9yIGdyYXBoaWNzIGNvbnRleHQgZm9yIGltcGxlbWVu
dGluZyBXZWJHTCByZW5kZXJpbmcgbW9kZWwuCiBjbGFzcyBHcmFwaGljc0NvbnRleHRHTCA6IHB1
YmxpYyBSZWZDb3VudGVkPEdyYXBoaWNzQ29udGV4dEdMPiB7CkBAIC0xMjQ0LDEzICsxMjQ2LDYg
QEAgcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBjb250ZXh0QXR0cmli
dXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cnM7IH0KICAgICB2b2lkIHNldENvbnRleHRBdHRy
aWJ1dGVzKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMpIHsgbV9hdHRy
cyA9IGF0dHJzOyB9CiAKLSAgICAvLyBGSVhNRTogVGhlIGNhbGxpbmcgc2l0ZSBzaG91bGQgYmUg
Zml4ZWQsIHRoaXMgYnJlYWtzIHRoZSBXZWJHTCBzcGVjCi0gICAgLy8gd3J0IHByZXNlcnZlRHJh
d2luZ0J1ZmZlciA9PSBmYWxzZSBiZWhhdmlvci4KLSAgICAvLyBDb25jZXNzaW9uIHRvIENhbnZh
cyBjYXB0dXJlU3RyZWFtLCB3aGljaCBuZWVkcyB0byBkeW5hbWljYWxseSBzZXQKLSAgICAvLyBw
cmVzZXJ2ZURyYXdpbmdCdWZmZXIgdG8gdHJ1ZSBpbiBvcmRlciB0byBhdm9pZCBpbXBsaWNpdCBj
bGVhcnMuCi0gICAgLy8gSW1wbGVtZW50YXRpb25zIGdlbmVyYWxseSBkbyBub3Qgc3VwcG9ydCB0
b2dnbGluZyB0aGlzIGJpdCBhcmJpdHJhcmlseS4KLSAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlUHJl
c2VydmVEcmF3aW5nQnVmZmVyKCk7Ci0KICAgICAvLyBTdXBwb3J0IGZvciBleHRlbnNpb25zLiBS
ZXR1cm5zIGEgbm9uLW51bGwgb2JqZWN0LCB0aG91Z2ggbm90CiAgICAgLy8gYWxsIG1ldGhvZHMg
aXQgY29udGFpbnMgbWF5IG5lY2Vzc2FyaWx5IGJlIHN1cHBvcnRlZCBvbiB0aGUKICAgICAvLyBj
dXJyZW50IGhhcmR3YXJlLiBNdXN0IGNhbGwgRXh0ZW5zaW9uc0dMOjpzdXBwb3J0cygpIHRvCkBA
IC0xMjk0LDYgKzEyODksOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVuZGVy
aW5nUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyJikgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpv
cHRpb25hbDxQaXhlbEJ1ZmZlcj4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcigp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKElt
YWdlQnVmZmVyJikgPSAwOworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgdmlydHVhbCBS
ZWZQdHI8TWVkaWFTYW1wbGU+IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkg
PSAwOworI2VuZGlmCiAKICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgYmUgcmVtb3ZlZC4gVGhl
IGxheWVyIHNob3VsZCBiZSBtYXJrZWQgY29tcG9zaXRlZCBieQogICAgIC8vIHByZXBhcmluZyBm
b3IgZGlzcGxheSwgc28gdGhhdCBjYW52YXMgaW1hZ2UgYnVmZmVyIGFuZCB0aGUgbGF5ZXIgYWdy
ZWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAppbmRleCA3NWVjYjFl
OTg2NjUzOTFhNzgwZTMwNWJkOGNlOWE1YzczMTgzYTFjLi43YWVlMzhmMzlmM2IzZGFkNjI0MDgy
ZGJiYjkwODQ0NjNiYzMyYTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2UuY3BwCkBAIC05NywxMyArOTcsNiBAQCBHQ0dMYml0ZmllbGQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2U6OmdldEJ1ZmZlcnNUb0F1dG9DbGVhcigpIGNvbnN0CiAgICAgcmV0dXJu
IG1fYnVmZmVyc1RvQXV0b0NsZWFyOwogfQogCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlCYXNlOjplbmFibGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKQotewotICAgIC8vIFJlZGVj
bGFyZWQgZm9yIGV4cG9ydCByZWFzb25zLgotICAgIC8vIEZJWE1FOiBUaGUgd2hvbGUgZnVuY3Rp
b24gc2hvdWxkIGJlIHJlbW92ZWQuCi0gICAgR3JhcGhpY3NDb250ZXh0R0w6OmVuYWJsZVByZXNl
cnZlRHJhd2luZ0J1ZmZlcigpOwotfQotCiBib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlOjpzdXBwb3J0cyhjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgd2FpdFVudGlsSW5p
dGlhbGl6ZWQoKTsKQEAgLTE1Niw1ICsxNDksMTIgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZTo6Z2V0blVuaWZvcm1pdkVYVChHQ0dMdWludCwgR0NHTGludCwgR0NHTHMK
IHsKIH0KICNlbmRpZgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgIVBMQVRGT1JNKENP
Q09BKQorUmVmUHRyPE1lZGlhU2FtcGxlPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKQoreworICAgIHJldHVybiBu
dWxscHRyOworfQorI2VuZGlmCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZS5oCmluZGV4IGJkZGE3ODVmNjBlNWY3NWI4NDZjZjBiNmNmYTI0YWE3M2VlNWQ5ZWEu
LmU5ZWNiODdjNzBhNTQzMDA4MmY3NDZkNjI2YTA1MWViZGM2NzI1MjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaApAQCAtNjcsNyArNjcsNiBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoR0NHTGJpdGZpZWxkKSBmaW5hbDsKICAgICBHQ0dM
Yml0ZmllbGQgZ2V0QnVmZmVyc1RvQXV0b0NsZWFyKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBt
YXJrTGF5ZXJDb21wb3NpdGVkKCkgZmluYWw7Ci0gICAgdm9pZCBlbmFibGVQcmVzZXJ2ZURyYXdp
bmdCdWZmZXIoKSBmaW5hbDsKIAogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElP
TikKICAgICBHcmFwaGljc0NvbnRleHRHTENWKiBhc0NWKCkgZmluYWw7CkBAIC04Myw2ICs4Miw5
IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0NHTHVpbnQsIEdDR0xpbnQs
IEdDR0xzaXplaSwgR0NHTGZsb2F0KikgZmluYWw7CiAgICAgdm9pZCBnZXRuVW5pZm9ybWl2RVhU
KEdDR0x1aW50LCBHQ0dMaW50LCBHQ0dMc2l6ZWksIEdDR0xpbnQqKSBmaW5hbDsKICNlbmRpZgor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBwYWludENv
bXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpIGZpbmFsOworI2VuZGlmCiAKIHByb3RlY3Rl
ZDoKICAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBhdmFpbGFibGVFeHRlbnNpb25z
LCBjb25zdCBTdHJpbmcmIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBs
ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oCmluZGV4IDU0NWYwYmUxYzUwY2JmZTQxNzAxODAz
NTZmODhjZTNjNTUyYzg2ZjcuLjJlYjA0NDlhNjBkYTkyZTBiOWQ3MjhhMzNkYjcxYmZhZmI0YjBj
OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oCkBAIC0z
MCw2ICszMCw4IEBACiAjaW5jbHVkZSA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5k
YXRpb24uaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCit1c2luZyBDVlBpeGVsQnVmZmVy
UmVmID0gc3RydWN0IF9fQ1ZCdWZmZXIqOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFBpeGVsQnVmZmVyOwpAQCAtNDAsNiArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxN
ZWRpYVNhbXBsZUFWRk9iakM+IGNyZWF0ZShDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGUsIEF0b21T
dHJpbmcgdHJhY2tJRCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVNhbXBsZUFWRk9iakMo
c2FtcGxlLCB0cmFja0lEKSk7IH0KICAgICBzdGF0aWMgUmVmPE1lZGlhU2FtcGxlQVZGT2JqQz4g
Y3JlYXRlKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZSwgVmlkZW9Sb3RhdGlvbiByb3RhdGlvbiA9
IFZpZGVvUm90YXRpb246Ok5vbmUsIGJvb2wgbWlycm9yZWQgPSBmYWxzZSkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBNZWRpYVNhbXBsZUFWRk9iakMoc2FtcGxlLCByb3RhdGlvbiwgbWlycm9yZWQp
KTsgfQogICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFTYW1wbGVBVkZPYmpDPiBjcmVhdGVJbWFnZVNh
bXBsZShQaXhlbEJ1ZmZlciYmKTsKKyAgICBzdGF0aWMgUmVmUHRyPE1lZGlhU2FtcGxlQVZGT2Jq
Qz4gY3JlYXRlSW1hZ2VTYW1wbGUoUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+JiYsIFZpZGVv
Um90YXRpb24sIGJvb2wgbWlycm9yZWQpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZv
aWQgc2V0QXNEaXNwbGF5SW1tZWRpYXRlbHkoTWVkaWFTYW1wbGUmKTsKICAgICBzdGF0aWMgUmV0
YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBjbG9uZVNhbXBsZUJ1ZmZlckFuZFNldEFzRGlzcGxh
eUltbWVkaWF0ZWx5KENNU2FtcGxlQnVmZmVyUmVmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2Jq
Qy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhU2FtcGxlQVZGT2JqQy5tbQppbmRleCBhNGNjODI4MGVlYzI5ZjNjMTZhM2IyNTdlZWNl
ZTI5OWQ1MDZmOWVhLi43YTFhMDBmZTkwM2U3OTU3MTJhZDJlYTNhZmU1MjA5NmM3YjQ0YmIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCkBAIC05NSwy
NCArOTUsMzMgQEAgUmVmUHRyPE1lZGlhU2FtcGxlQVZGT2JqQz4gTWVkaWFTYW1wbGVBVkZPYmpD
OjpjcmVhdGVJbWFnZVNhbXBsZShQaXhlbEJ1ZmZlciYmIHAKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogICAgIEFTU0VSVF9VTlVTRUQoc3RhdHVzLCAhc3RhdHVzKTsKKyAgICByZXR1
cm4gY3JlYXRlSW1hZ2VTYW1wbGUoV1RGTW92ZShjdlBpeGVsQnVmZmVyKSwgVmlkZW9Sb3RhdGlv
bjo6Tm9uZSwgZmFsc2UpOworfQogCitSZWZQdHI8TWVkaWFTYW1wbGVBVkZPYmpDPiBNZWRpYVNh
bXBsZUFWRk9iakM6OmNyZWF0ZUltYWdlU2FtcGxlKFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVm
PiYmIHBpeGVsQnVmZmVyLCBWaWRlb1JvdGF0aW9uIHJvdGF0aW9uLCBib29sIG1pcnJvcmVkKQor
ewogICAgIENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvblJhdyA9
IG51bGxwdHI7Ci0gICAgc3RhdHVzID0gUEFMOjpDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25DcmVh
dGVGb3JJbWFnZUJ1ZmZlcihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjdlBpeGVsQnVmZmVyLmdldCgp
LCAmZm9ybWF0RGVzY3JpcHRpb25SYXcpOwotICAgIEFTU0VSVCghc3RhdHVzKTsKKyAgICBhdXRv
IHN0YXR1cyA9IFBBTDo6Q01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlRm9ySW1hZ2VCdWZm
ZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGl4ZWxCdWZmZXIuZ2V0KCksICZmb3JtYXREZXNjcmlw
dGlvblJhdyk7CisgICAgaWYgKHN0YXR1cyB8fCAhZm9ybWF0RGVzY3JpcHRpb25SYXcpIHsKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KICAgICBhdXRvIGZvcm1hdERlc2NyaXB0aW9uID0gYWRvcHRDRihmb3JtYXREZXNjcmlwdGlv
blJhdyk7CiAKICAgICBDTVNhbXBsZVRpbWluZ0luZm8gc2FtcGxlVGltaW5nSW5mb3JtYXRpb24g
PSB7IFBBTDo6a0NNVGltZUludmFsaWQsIFBBTDo6a0NNVGltZUludmFsaWQsIFBBTDo6a0NNVGlt
ZUludmFsaWQgfTsKICAgICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXJSYXcgPSBudWxs
cHRyOwotICAgIHN0YXR1cyA9IFBBTDo6Q01TYW1wbGVCdWZmZXJDcmVhdGVSZWFkeVdpdGhJbWFn
ZUJ1ZmZlcihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjdlBpeGVsQnVmZmVyLmdldCgpLCBmb3JtYXRE
ZXNjcmlwdGlvbi5nZXQoKSwgJnNhbXBsZVRpbWluZ0luZm9ybWF0aW9uLCAmc2FtcGxlQnVmZmVy
UmF3KTsKLSAgICBBU1NFUlQoIXN0YXR1cyk7CisgICAgc3RhdHVzID0gUEFMOjpDTVNhbXBsZUJ1
ZmZlckNyZWF0ZVJlYWR5V2l0aEltYWdlQnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBpeGVs
QnVmZmVyLmdldCgpLCBmb3JtYXREZXNjcmlwdGlvbi5nZXQoKSwgJnNhbXBsZVRpbWluZ0luZm9y
bWF0aW9uLCAmc2FtcGxlQnVmZmVyUmF3KTsKKyAgICBpZiAoc3RhdHVzIHx8ICFzYW1wbGVCdWZm
ZXJSYXcpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KICAgICBhdXRvIHNhbXBsZUJ1ZmZlciA9IGFkb3B0Q0Yoc2FtcGxlQnVm
ZmVyUmF3KTsKLQogICAgIENGQXJyYXlSZWYgYXR0YWNobWVudHNBcnJheSA9IFBBTDo6Q01TYW1w
bGVCdWZmZXJHZXRTYW1wbGVBdHRhY2htZW50c0FycmF5KHNhbXBsZUJ1ZmZlci5nZXQoKSwgdHJ1
ZSk7CiAgICAgZm9yIChDRkluZGV4IGkgPSAwLCBjb3VudCA9IENGQXJyYXlHZXRDb3VudChhdHRh
Y2htZW50c0FycmF5KTsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgQ0ZNdXRhYmxlRGljdGlv
bmFyeVJlZiBhdHRhY2htZW50cyA9IGNoZWNrZWRfY2ZfY2FzdDxDRk11dGFibGVEaWN0aW9uYXJ5
UmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGF0dGFjaG1lbnRzQXJyYXksIGkpKTsKICAgICAg
ICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoYXR0YWNobWVudHMsIFBBTDo6a0NNU2FtcGxlQXR0YWNo
bWVudEtleV9EaXNwbGF5SW1tZWRpYXRlbHksIGtDRkJvb2xlYW5UcnVlKTsKICAgICB9Ci0gICAg
cmV0dXJuIGNyZWF0ZShzYW1wbGVCdWZmZXIuZ2V0KCkpOworICAgIHJldHVybiBjcmVhdGUoc2Ft
cGxlQnVmZmVyLmdldCgpLCByb3RhdGlvbiwgbWlycm9yZWQpOwogfQogCiBNZWRpYVRpbWUgTWVk
aWFTYW1wbGVBVkZPYmpDOjpwcmVzZW50YXRpb25UaW1lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcAppbmRleCA5YzQwMjcy
MWRiNWZkNjQ3ODZhMmU2YTJiYTRmZTQyMDRmNjUwYmY2Li44ZDRjMzg4YjdmMWVjMWY1NzM3ZmZj
NTNhZTAzZjcyMGVkZjkwZWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0
R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCkBAIC0zNyw2ICszNywxMSBAQCBjb25zdCBHcmFwaGlj
c0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6QnVmZmVyJiBHcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YQogICAgIHJldHVybiBtX2Rpc3BsYXlCdWZmZXI7CiB9CiAKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW46Om1hcmtEaXNwbGF5QnVmZmVySW5Vc2UoKQor
eworICAgIG1fZGlzcGxheUJ1ZmZlckluVXNlID0gdHJ1ZTsKK30KKwogR3JhcGhpY3NDb250ZXh0
R0xJT1N1cmZhY2VTd2FwQ2hhaW46OkJ1ZmZlciBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3
YXBDaGFpbjo6cmVjeWNsZUJ1ZmZlcigpCiB7CiAgICAgaWYgKG1fc3BhcmVCdWZmZXIuc3VyZmFj
ZSkgewpAQCAtNTYsNiArNjEsMTAgQEAgdm9pZCogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VT
d2FwQ2hhaW46OmRldGFjaENsaWVudCgpCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluOjpwcmVzZW50KEJ1ZmZlciYmIGJ1ZmZlcikKIHsKICAgICBtX3NwYXJlQnVmZmVy
ID0gc3RkOjpleGNoYW5nZShtX2Rpc3BsYXlCdWZmZXIsIFdURk1vdmUoYnVmZmVyKSk7CisgICAg
aWYgKG1fZGlzcGxheUJ1ZmZlckluVXNlKSB7CisgICAgICAgIG1fZGlzcGxheUJ1ZmZlckluVXNl
ID0gZmFsc2U7CisgICAgICAgIG1fc3BhcmVCdWZmZXIuc3VyZmFjZS5yZXNldCgpOworICAgIH0K
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENo
YWluLmgKaW5kZXggZTQzN2Q3ZGYwZWU4NDEzOWVhZmUzZTJmZDcyNzE5OGI4ZjYxYTA2MS4uMzg3
NmFlNzM3OGQ3ZDcwM2M1MzEyMzdjYzJmNWYwYzljZmZlOTU3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZh
Y2VTd2FwQ2hhaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oCkBAIC02Nyw2ICs2Nyw5IEBA
IHB1YmxpYzoKICAgICAvLyBuZXh0IHByZXNlbnQsIHJlY3ljbGVCdWZmZXIgb3IgZGV0YWNoQ2xp
ZW50IGNhbGwuCiAgICAgdmlydHVhbCBjb25zdCBCdWZmZXImIGRpc3BsYXlCdWZmZXIoKSBjb25z
dDsKIAorICAgIC8vIE1hcmtzIHRoZSBjdXJyZW50IGRpc3BsYXkgYnVmZmVyIHRvIGJlIGluIHVz
ZSBhbmQgbm90IGVsaWdibGUgdG8gcmVjeWNsaW5nLgorICAgIHZvaWQgbWFya0Rpc3BsYXlCdWZm
ZXJJblVzZSgpOworCiAgICAgLy8gRGV0YWNoZXMgdGhlIGNsaWVudCBhbmQgcmV0dXJucyB0aGUg
Y3VycmVudCBjb250ZW50cyBidWZmZXIgbWV0YWRhdGEgaGFuZGxlLgogICAgIC8vIFRoZSBpZiBt
dWx0aXBsZSBidWZmZXJzIGhhdmUgYmVlbiBzdWJtaXR0ZWQsIHJlY3ljbGVCdWZmZXIgbXVzdCBo
YXZlIGJlZW4gY2FsbGVkIGJlZm9yZSBjYWxsaW5nCiAgICAgLy8gdGhpcy4KQEAgLTc1LDYgKzc4
LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEJ1ZmZlciBtX2Rpc3BsYXlCdWZmZXI7CiAg
ICAgQnVmZmVyIG1fc3BhcmVCdWZmZXI7CisgICAgYm9vbCBtX2Rpc3BsYXlCdWZmZXJJblVzZSA9
IGZhbHNlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2Eu
bW0KaW5kZXggNzU1Y2Q0NTg3YTRkZDVjYjMxMDU4ZWU2ODk0OTQ0YmVlYzQ4NGU1Yi4uZTY3MTA0
YTdjN2NiMTM5MWU1NzdhZWFjY2ZiODdmMDFjYWRlYzNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTENvY29hLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKFdF
QkdMKQogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKIAorI2ltcG9ydCAiQ1ZV
dGlsaXRpZXMuaCIKICNpbXBvcnQgIkV4dGVuc2lvbnNHTEFOR0xFLmgiCiAjaW1wb3J0ICJHcmFw
aGljc0NvbnRleHRHTEFOR0xFVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5oIgpAQCAtNTAsNiArNTEsMTAgQEAKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHRHTENWLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisj
aW5jbHVkZSAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCisjZW5kaWYKKwogV1RGX1dFQUtfTElOS19G
T1JDRV9JTVBPUlQoRUdMX0luaXRpYWxpemUpOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04
NzgsNiArODgzLDIxIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbGVhc2VBbGxS
ZXNvdXJjZXNJZlVudXNlZCgpCiAgICAgU2NvcGVkRUdMRGVmYXVsdERpc3BsYXk6OnJlbGVhc2VB
bGxSZXNvdXJjZXNJZlVudXNlZCgpOwogfQogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK1Jl
ZlB0cjxNZWRpYVNhbXBsZT4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50Q29tcG9zaXRl
ZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkKK3sKKyAgICBhdXRvICZkaXNwbGF5QnVmZmVyID0gbV9z
d2FwQ2hhaW4tPmRpc3BsYXlCdWZmZXIoKTsKKyAgICBpZiAoIWRpc3BsYXlCdWZmZXIuc3VyZmFj
ZSB8fCAhZGlzcGxheUJ1ZmZlci5oYW5kbGUpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IGlmIChkaXNwbGF5QnVmZmVyLnN1cmZhY2UtPnNpemUoKSAhPSBnZXRJbnRlcm5hbEZyYW1lYnVm
ZmVyU2l6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBtX3N3YXBDaGFpbi0+bWFy
a0Rpc3BsYXlCdWZmZXJJblVzZSgpOworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBjcmVhdGVDVlBp
eGVsQnVmZmVyKGRpc3BsYXlCdWZmZXIuc3VyZmFjZS0+c3VyZmFjZSgpKTsKKyAgICBpZiAoIXBp
eGVsQnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gTWVkaWFTYW1w
bGVBVkZPYmpDOjpjcmVhdGVJbWFnZVNhbXBsZShXVEZNb3ZlKCpwaXhlbEJ1ZmZlciksIE1lZGlh
U2FtcGxlQVZGT2JqQzo6VmlkZW9Sb3RhdGlvbjo6VXBzaWRlRG93biwgdHJ1ZSk7Cit9CisjZW5k
aWYKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZUNvY29hLm1tCmluZGV4IDBjNDE0MDE1YjdiMGYz
NGJiMjhiZTM0NTUwOWM3NDI5ZTMxZGFhM2MuLjE5MzRlZjVlZjMzNjlhMjM2OTk2YjJlNmRlMGQ3
NjM4YjE5MTlmYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2VDb2NvYS5tbQpAQCAtMzIsNiArMzIsMTEgQEAKICNpbXBvcnQgIldlYkdMTGF5
ZXIuaCIKICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAKKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQorI2ltcG9ydCAiQ1ZVdGlsaXRpZXMuaCIKKyNpbXBvcnQgIk1lZGlhU2Ft
cGxlQVZGT2JqQy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKQEAgLTYz
LDUgKzY4LDIwIEBAIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluJiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGxhdGZvcm1TCiAgICAgcmV0dXJuIFttX3dlYkdM
TGF5ZXIgc3dhcENoYWluXTsKIH0KIAorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCitSZWZQdHI8
TWVkaWFTYW1wbGU+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwYWludENvbXBv
c2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpCit7CisgICAgYXV0byYgc2MgPSBwbGF0Zm9ybVN3
YXBDaGFpbigpOworICAgIGF1dG8mIGRpc3BsYXlCdWZmZXIgPSBzYy5kaXNwbGF5QnVmZmVyKCk7
CisgICAgaWYgKCFkaXNwbGF5QnVmZmVyLnN1cmZhY2UpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIHNjLm1hcmtEaXNwbGF5QnVmZmVySW5Vc2UoKTsKKyAgICBhdXRvIHBpeGVsQnVmZmVy
ID0gY3JlYXRlQ1ZQaXhlbEJ1ZmZlcihkaXNwbGF5QnVmZmVyLnN1cmZhY2UtPnN1cmZhY2UoKSk7
CisgICAgaWYgKCFwaXhlbEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0
dXJuIE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlSW1hZ2VTYW1wbGUoV1RGTW92ZSgqcGl4ZWxC
dWZmZXIpLCBNZWRpYVNhbXBsZUFWRk9iakM6OlZpZGVvUm90YXRpb246OlVwc2lkZURvd24sIHRy
dWUpOworfQorI2VuZGlmCisKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5jcHAKaW5kZXggZTYwM2MyYmY1ZmZiYTdhZjJiMzQyZTgwZDc2ODRhMDk3MTQxMGZlYi4u
ZjhiMjBhYzc2ZDFiZGU5ZjNhMjg2MGFiOWEyYzQ0OTdlNWI2MjdmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCkBAIC0zNCwxMyArMzQsMTYgQEAKICNpbmNsdWRlICJJ
bWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZS5oIgogI2luY2x1ZGUg
IlBpeGVsQnVmZmVyLmgiCisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVB
cnJheS5oPgogCiAjaWYgVVNFKEFWRk9VTkRBVElPTikKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHRHTENWLmgiCiAjZW5kaWYKIAotI2luY2x1ZGUgPG1lbW9yeT4KKyNpZiAhUExBVEZPUk0oQ09D
T0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKKyNl
bmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTcyLDE0ICs3NSw2IEBAIEdDR0xiaXRm
aWVsZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QnVmZmVyc1RvQXV0b0NsZWFyKCkgY29u
c3QKICAgICByZXR1cm4gbV9idWZmZXJzVG9BdXRvQ2xlYXI7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpCi17Ci0gICAgR3Jh
cGhpY3NDb250ZXh0R0w6OmVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpOwotICAgIC8vIEFm
dGVyIGR5bmFtaWNhbGx5IHRyYW5zaXRpb25pbmcgdG8gcHJlc2VydmVEcmF3aW5nQnVmZmVyOnRy
dWUKLSAgICAvLyBmb3IgY2FudmFzIGNhcHR1cmUsIGNsZWFyIG91dCBhbnkgYnVmZmVyIGF1dG8t
Y2xlYXJpbmcgc3RhdGUuCi0gICAgbV9idWZmZXJzVG9BdXRvQ2xlYXIgPSAwOwotfQotCiAjaWYg
IVVTRShBTkdMRSkKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkRSZXNv
dXJjZVNhZmUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRl
ciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50IHVucGFja0FsaWdubWVu
dCkKIHsKQEAgLTE3MCw2ICsxNjUsMTMgQEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvUGl4ZWwKICAgICBy
ZXR1cm4gcmVzdWx0czsKIH0KIAorI2lmICFQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKK1JlZlB0cjxNZWRpYVNhbXBsZT4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBh
aW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkKK3sKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKyNlbmRpZgorCiBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6cmVhZFJlbmRlcmluZ1Jlc3VsdHNGb3JQYWludGluZygpCiB7CiAgICAgaWYg
KCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgK
aW5kZXggYTI5NGUzNTYwNGU3N2ZkZWJkODg0MWM1NThkOTQzZTM0NThhMWZiZS4uZmU1OWRlYjA5
ZDg4Y2U3YWQ1OGFkNTIwOTBjNGU1NjA0YTM3YjIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmgKQEAgLTQ2MCwxMyArNDYwLDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0
QnVmZmVyc1RvQXV0b0NsZWFyKCk7CiAgICAgdm9pZCBzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoR0NH
TGJpdGZpZWxkKSBmaW5hbDsKICAgICBHQ0dMYml0ZmllbGQgZ2V0QnVmZmVyc1RvQXV0b0NsZWFy
KCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBlbmFibGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKSBm
aW5hbDsKIAogICAgIHZvaWQgZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpOwog
CiAgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciYpIGZp
bmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHBhaW50UmVuZGVyaW5nUmVzdWx0
c1RvUGl4ZWxCdWZmZXIoKSBmaW5hbDsKICAgICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNU
b0NhbnZhcyhJbWFnZUJ1ZmZlciYpIGZpbmFsOworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisg
ICAgUmVmUHRyPE1lZGlhU2FtcGxlPiBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBs
ZSgpIGZpbmFsOworI2VuZGlmCiAKICAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiByZWFk
UmVuZGVyaW5nUmVzdWx0c0ZvclBhaW50aW5nKCk7CiAgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1
ZmZlcj4gcmVhZENvbXBvc2l0ZWRSZXN1bHRzRm9yUGFpbnRpbmcoKTsKZGlmZiAtLWdpdCBhL0No
YW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBkYjY2NGJmMTBlNzA4NzE0OWYwMzEyMzBhN2QwOGE1
YmM5MDUwMTNjLi5mZjIzYmQyNjg3ZmQwOWIzY2Q4MTRhOWRmNjBkMmE0M2IwNDgwZDAwIDEwMDY0
NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEt
MDktMjQgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBN
ZWRpYVN0cmVhbSBjYW52YXMuY2FwdHVyZVN0cmVhbSgpIGZhaWxzIGZvciBXZWJHTAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNjEzCisgICAgICAg
IDxyZGFyOi8vODIzMDcyOTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGEgbWFudWFsIHRlc3QgdG8gaW50ZXJhY3Qgd2l0aCBtZWRpYSBzdHJl
YW0KKyAgICAgICAgY2FwdHVyZVN0cmVhbSgpIGJlaGF2aW9yIHVudGlsIHRoZSBpbXBsZW1lbnRh
dGlvbiBpcworICAgICAgICB0ZXN0YWJsZS4KKworICAgICAgICAqIE1hbnVhbFRlc3RzL21lZGlh
c3RyZWFtL21lZGlhc3RyZWFtLWNhbnZhcy10by12aWRlby5odG1sOiBBZGRlZC4KKwogMjAyMS0w
OS0yMyAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAg
ICBbTVNWQ10gVGhlICIvWmM6bGFtYmRhIiBzd2l0Y2ggaXMgcmVjb21tZW5kZWQgdG8gdXNlIHRo
ZSBuZXcgbGFtYmRhIHByb2Nlc3Nvci4KZGlmZiAtLWdpdCBhL01hbnVhbFRlc3RzL21lZGlhc3Ry
ZWFtL21lZGlhc3RyZWFtLWNhbnZhcy10by12aWRlby5odG1sIGIvTWFudWFsVGVzdHMvbWVkaWFz
dHJlYW0vbWVkaWFzdHJlYW0tY2FudmFzLXRvLXZpZGVvLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2QwYTA0
MDJiYzc5YTFlN2Y2NWU4NzY2ODA2Mzg3YTFmNDY2NzlhZgotLS0gL2Rldi9udWxsCisrKyBiL01h
bnVhbFRlc3RzL21lZGlhc3RyZWFtL21lZGlhc3RyZWFtLWNhbnZhcy10by12aWRlby5odG1sCkBA
IC0wLDAgKzEsMTkyIEBACis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2Nz
cyI+CisgICAgdmlkZW8geyBib3JkZXI6IHNvbGlkIDFweCBibGFjazsgfQorICAgIGNhbnZhcyB7
IHBhZGRpbmc6IDFweCB9CisgICAgLnBsYWNlaG9sZGVyIHsgCisgICAgICAgIGRpc3BsYXk6IGlu
bGluZS1ibG9jazsKKyAgICAgICAgYm9yZGVyOiAxcHggZGFzaGVkIGJsYWNrOworICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMTUwcHg7CisgICAgfQorICAgIDwvc3R5bGU+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPgorPGlucHV0IHR5cGU9ImJ1dHRvbiIgb25jbGljaz0iZHJh
d09uY2UoKSIgdmFsdWU9IkRyYXcgb25jZSIgLz4KKzxpbnB1dCB0eXBlPSJidXR0b24iIG9uY2xp
Y2s9ImNsZWFyT25jZSgpIiB2YWx1ZT0iQ2xlYXIgb25jZSIgLz4KKzxpbnB1dCB0eXBlPSJidXR0
b24iIG9uY2xpY2s9InRvZ2dsZURyYXdpbmcoKSIgdmFsdWU9IlRvZ2dsZSBkcmF3aW5nIi8+Cis8
L3A+Cis8cD4KKyAgICA8dWw+CisgICAgICAgIDxsaT5MZWZ0OiBjYW52YXM8L2xpPgorICAgICAg
ICA8bGk+UmlnaHQ6IHZpZGVvPC9saT4KKyAgICAgICAgPGxpPlRvcCByZWN0YW5nbGUgc21hbGw6
IG9wYXF1ZTwvbGk+CisgICAgICAgIDxsaT5Cb3R0b20gcmVjdGFuZ2xlIGJpZzogNTAlIHRyYW5z
bHVjZW50PC9saT4KKyAgICAgICAgPGxpPkJhY2tncm91bmQ6IHRyYW5zcGFyZW50PC9saT4KKyAg
ICA8L3VsPgorPC9wPgorPHNjcmlwdD4KKwordmFyIGN0eDJEcyA9IFtdOworCit2YXIgZ2xzID0g
W107CisKK2Z1bmN0aW9uIGNyZWF0ZVRlc3RzKCkKK3sgCisgICAgbGV0IGdsQ2FzZXMgPSBbXTsK
KyAgICBmb3IgKGxldCBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIgb2YgW3RydWUsIGZhbHNlXSkgewor
ICAgICAgICBmb3IgKGxldCBhbHBoYSBvZiBbdHJ1ZSwgZmFsc2VdKSB7CisgICAgICAgICAgICBm
b3IgKGxldCBwcmVtdWx0aXBsaWVkQWxwaGEgb2YgW3RydWUsIGZhbHNlXSkgeworICAgICAgICAg
ICAgICAgIGdsQ2FzZXMucHVzaCh7CisgICAgICAgICAgICAgICAgICAgIHByZXNlcnZlRHJhd2lu
Z0J1ZmZlcjogcHJlc2VydmVEcmF3aW5nQnVmZmVyLCAKKyAgICAgICAgICAgICAgICAgICAgYWxw
aGE6IGFscGhhLCAKKyAgICAgICAgICAgICAgICAgICAgcHJlbXVsdGlwbGllZEFscGhhOiBwcmVt
dWx0aXBsaWVkQWxwaGEsCisgICAgICAgICAgICAgICAgICAgIGFudGlhbGlhczogZmFsc2UsCisg
ICAgICAgICAgICAgICAgICAgIGluRG9jdW1lbnQ6IHRydWUKKyAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBnbENhc2VzLnB1c2goeworICAg
ICAgICBwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6IGZhbHNlLCAKKyAgICAgICAgYWxwaGE6IHRydWUs
IAorICAgICAgICBwcmVtdWx0aXBsaWVkQWxwaGE6IHRydWUsCisgICAgICAgIGFudGlhbGlhczog
dHJ1ZSwKKyAgICAgICAgaW5Eb2N1bWVudDogdHJ1ZQorICAgIH0pOworICAgIGdsQ2FzZXMucHVz
aCh7CisgICAgICAgIHByZXNlcnZlRHJhd2luZ0J1ZmZlcjogZmFsc2UsIAorICAgICAgICBhbHBo
YTogdHJ1ZSwgCisgICAgICAgIHByZW11bHRpcGxpZWRBbHBoYTogdHJ1ZSwKKyAgICAgICAgYW50
aWFsaWFzOiBmYWxzZSwKKyAgICAgICAgaW5Eb2N1bWVudDogZmFsc2UKKyAgICB9KTsKKyAgICAK
KyAgICB2YXIgY3R4MkRDYXNlcyA9IFtdOworICAgIGZvciAobGV0IGluRG9jdW1lbnQgb2YgW3Ry
dWUsIGZhbHNlXSkgeworICAgICAgICBjdHgyRENhc2VzLnB1c2goeyBpbkRvY3VtZW50OiBpbkRv
Y3VtZW50IH0pOworICAgIH0KKyAgICAKKyAgICBmb3IgKGxldCBjIG9mIGdsQ2FzZXMpIHsKKyAg
ICAgICAgbGV0IGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChkKTsKKyAgICAgICAgbGV0IGggPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJoMyIpOworICAgICAgICBoLmlubmVyVGV4dCA9IGBXZWJHTCBjYXNlOiAke0pT
T04uc3RyaW5naWZ5KGMpfWA7CisgICAgICAgIGQuYXBwZW5kQ2hpbGQoaCk7CisgICAgICAgIGxl
dCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKKyAgICAgICAgaWYg
KGMuaW5Eb2N1bWVudCkKKyAgICAgICAgICAgIGQuYXBwZW5kQ2hpbGQoY2FudmFzKTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBsZXQgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOworICAgICAgICAgICAgcC5jbGFzc05hbWUgPSAicGxhY2Vob2xkZXIiOworICAgICAgICAg
ICAgZC5hcHBlbmRDaGlsZChwKTsKKyAgICAgICAgfQorICAgICAgICBsZXQgdiA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoInZpZGVvIik7CisgICAgICAgIHYuY29udHJvbHMgPSB0cnVlOworICAg
ICAgICB2LmF1dG9wbGF5ID0gdHJ1ZTsKKyAgICAgICAgZC5hcHBlbmRDaGlsZCh2KTsKKworICAg
ICAgICBsZXQgZ2wgPSBjYW52YXMuZ2V0Q29udGV4dCgid2ViZ2wyIiwgeworICAgICAgICAgICAg
cHJlc2VydmVEcmF3aW5nQnVmZmVyOiBjLnByZXNlcnZlRHJhd2luZ0J1ZmZlciwgCisgICAgICAg
ICAgICBhbHBoYTogYy5hbHBoYSwgCisgICAgICAgICAgICBwcmVtdWx0aXBsaWVkQWxwaGE6IGMu
cHJlbXVsdGlwbGllZEFscGhhLAorICAgICAgICAgICAgYW50aWFsaWFzOiBjLmFudGlhbGlhcwor
ICAgICAgICB9KTsKKyAgICAgICAgdi5zcmNPYmplY3QgPSBjYW52YXMuY2FwdHVyZVN0cmVhbSgp
OworICAgICAgICBnbHMucHVzaChnbCk7CisgICAgfQorICAgIAorICAgIGZvciAobGV0IGMgb2Yg
Y3R4MkRDYXNlcykgeworICAgICAgICBsZXQgZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOworICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGQpOworICAgICAgICBsZXQg
aCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImgzIik7CisgICAgICAgIGguaW5uZXJUZXh0ID0g
YENhbnZhcyBjYXNlOiAke0pTT04uc3RyaW5naWZ5KGMpfWA7CisgICAgICAgIGQuYXBwZW5kQ2hp
bGQoaCk7CisgICAgICAgIGxldCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52
YXMiKTsKKyAgICAgICAgaWYgKGMuaW5Eb2N1bWVudCkKKyAgICAgICAgICAgIGQuYXBwZW5kQ2hp
bGQoY2FudmFzKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBsZXQgcCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICAgICAgcC5jbGFzc05hbWUgPSAicGxhY2Vo
b2xkZXIiOworICAgICAgICAgICAgZC5hcHBlbmRDaGlsZChwKTsKKyAgICAgICAgfQorICAgICAg
ICBsZXQgdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInZpZGVvIik7CisgICAgICAgIHYuY29u
dHJvbHMgPSB0cnVlOworICAgICAgICB2LmF1dG9wbGF5ID0gdHJ1ZTsKKyAgICAgICAgZC5hcHBl
bmRDaGlsZCh2KTsKKyAgICAgICAgbGV0IGN0eDJEID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7
CisgICAgICAgIHYuc3JjT2JqZWN0ID0gY2FudmFzLmNhcHR1cmVTdHJlYW0oKTsKKyAgICAgICAg
Y3R4MkRzLnB1c2goY3R4MkQpOworICAgIH0KK30KKworZnVuY3Rpb24gZHJhd09uY2UoKQorewor
ICAgIGZvciAobGV0IGMgb2YgZ2xzKSB7CisgICAgICAgIGMuZW5hYmxlKGMuU0NJU1NPUl9URVNU
KTsKKyAgICAgICAgaWYgKGMuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKS5wcmVtdWx0aXBsaWVkQWxw
aGEpCisgICAgICAgICAgICBjLmNsZWFyQ29sb3IoMC4sIDAuNSwgMC4sIDAuNSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGMuY2xlYXJDb2xvcigwLiwgMS4sIDAuLCAwLjUpOworICAgICAg
ICBjLnNjaXNzb3IoMCwgMCwgMzAwLCA1MCk7CisgICAgICAgIGMuY2xlYXIoYy5DT0xPUl9CVUZG
RVJfQklUKTsKKyAgICAgICAgCisgICAgICAgIGMuc2Npc3NvcigxMjUsIDUwLCA1MCwgNTApOwor
ICAgICAgICBjLmNsZWFyQ29sb3IoMC4sIDEuLCAwLiwgMS4pOworICAgICAgICBjLmNsZWFyKGMu
Q09MT1JfQlVGRkVSX0JJVCk7CisgICAgICAgIGMuc2Npc3NvcigwLCAwLCAzMDAsIDUwKTsKKyAg
ICAgICAgYy5jbGVhcihjLkNPTE9SX0JVRkZFUl9CSVQpOworICAgICAgICAKKyAgICB9CisgICAg
Zm9yIChsZXQgYyBvZiBjdHgyRHMpIHsKKyAgICAgICAgYy5maWxsU3R5bGUgPSAicmdiYSgwLCAx
MjgsIDAsIDAuNSkiOworICAgICAgICBjLmZpbGxSZWN0KDAsIDEwMCwgMzAwLCA1MCk7CisgICAg
ICAgIGMuZmlsbFN0eWxlID0gInJnYmEoMCwgMjU1LCAwLCAxLikiOworICAgICAgICBjLmZpbGxS
ZWN0KDEyNSwgNTAsIDUwLCA1MCk7CisgICAgfQorfQorCitmdW5jdGlvbiBjbGVhck9uY2UoKQor
eworICAgIGNvbnNvbGUubG9nKCJjbGVhciIpOworICAgIGZvciAobGV0IGMgb2YgZ2xzKSB7Cisg
ICAgICAgIGMuY2xlYXJDb2xvcigwLiwgMC4sIDAuLCAwLik7CisgICAgICAgIGMuZGlzYWJsZShj
LlNDSVNTT1JfVEVTVCk7CisgICAgICAgIGMuY2xlYXIoYy5DT0xPUl9CVUZGRVJfQklUKTsKKyAg
ICB9CisgICAgZm9yIChsZXQgYyBvZiBjdHgyRHMpIHsKKyAgICAgICAgYy5jbGVhclJlY3QoMCwg
MCwgMzAwLCAxNTApOworICAgIH0KK30KKwordmFyIGlzVG9nZ2xpbmcgPSBmYWxzZTsKKworZnVu
Y3Rpb24gdG9nZ2xlRHJhd2luZygpCit7CisgICAgaWYgKGlzVG9nZ2xpbmcpIHsKKyAgICAgICAg
Y2xlYXJUaW1lb3V0KGlzVG9nZ2xpbmcpOworICAgICAgICBpc1RvZ2dsaW5nID0gZmFsc2U7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdmFyIGhhc0RyYXduID0gdHJ1ZTsKKyAgICBmdW5j
dGlvbiBmKCkgeworICAgICAgICBpZiAoaGFzRHJhd24pCisgICAgICAgICAgICBjbGVhck9uY2Uo
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZHJhd09uY2UoKTsKKyAgICAgICAgaGFzRHJh
d24gPSAhaGFzRHJhd247CisgICAgICAgIGlzVG9nZ2xpbmcgPSBzZXRUaW1lb3V0KGYsIDEwMDAp
OworICAgIH0KKyAgICBmKCk7Cit9CisKK2NyZWF0ZVRlc3RzKCk7CisKK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgIHdpbmRvdy50ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0
b2dnbGVEcmF3aW5nKCk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439597</attachid>
            <date>2021-09-29 05:19:00 -0700</date>
            <delta_ts>2021-09-29 11:22:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230613-20210929151858.patch</filename>
            <type>text/plain</type>
            <size>35452</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMjEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2E0ZDFmMDk0ZTBkZDZm
YmY4NzRkOWViMzRhMzRkYjIzYjkwNzg2Zi4uNDRiODViMWI4ODk3NTJkYjQ2MDlmNTM2OGJkMmUw
NTQzYTAwNjBhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIxLTA5LTI5ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0g
Y2FudmFzLmNhcHR1cmVTdHJlYW0oKSBmYWlscyBmb3IgV2ViR0wKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDYxMworICAgICAgICA8cmRhcjovLzgy
MzA3MjkzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlbW92ZSBwcmV2aW91cyBpbmNvcnJlY3QgYmVoYXZpb3Igb2YgdHVybmluZyBvbiAicHJlc2Vy
dmVzRHJhd2luZ0J1ZmZlciIKKyAgICAgICAgYW5kIHNhbXBsaW5nIHRoZSBkcmF3aW5nIGJ1ZmZl
ci4gVGhlIGRyYXdpbmcgYnVmZmVyIGlzIG5vdCB3aGF0IHNob3VsZAorICAgICAgICBldmVyIGJl
IHRvdWNoZWQsIHJhdGhlciBpdCdzIHRoZSBkaXNwbGF5IGJ1ZmZlciB0aGF0IHNob3VsZCBiZSBh
dmFpbGFibGUuCisKKyAgICAgICAgSW1wbGVtZW50IHNhbXBsaW5nIG9mIFdlYkdMIGRpc3BsYXkg
YnVmZmVyIGZvcgorICAgICAgICBtZWRpYSBzdHJlYW0gY2FwdHVyZS4gVGhlIHVwb24gc2FtcGxp
bmcsIG9idGFpbiBhIHNoYXJlZAorICAgICAgICByZWZlcmVuY2UgdG8gdGhlCisgICAgICAgIGRp
c3BsYXkgYnVmZmVyLCBwYXNzZXMgaXQgdG8gbWVkaWEgc2FtcGxlIGNvbnN1bWluZyBwcm9jZXNz
IGFuZCBtYXJrCisgICAgICAgIHRoZSBXZWJHTCBjb250ZXh0IGRpc3BsYXkgYnVmZmVyIG5vbi1l
bGlnaWJsZSBmb3IgcmVjeWNsaW5nIGFzCisgICAgICAgIG5ldyBkcmF3aW5nIGJ1ZmZlci4KKwor
ICAgICAgICBDdXJyZW50bHkgdGhlIGltcGxlbWVudGF0aW9uIGlzIGRpc3BsYXllZCBjb3JyZWN0
bHkgZm9yCisgICAgICAgIFdlYkdMIGNvbnRlbnRzIHRoYXQgaXMgcHJlbXVsdGlwbGllZC4gVW5w
cmVtdWx0aXBsaWVkCisgICAgICAgIGNvbnRlbnQgaXMgZml4ZWQgaW4gdGhlIGFzc29jaWF0ZWQg
YnVncy4KKworICAgICAgICBOb3RlOiB0aGVyZSBhcmUgYnVncyBwcmV2ZW50aW5nIHJvYnVzdCB1
c2Ugb2YgdGhlIEFQSSwKKyAgICAgICAgbGlzdGVkIGluIHRoZSBhc3NvY2lhdGVkIGJ1Z3MuIEFz
IHN1Y2gsIHRlc3RpbmcgaXMgbm90IGV4cGFuZGVkCisgICAgICAgIGluIHRoaXMgYnVnLgorCisg
ICAgICAgIFRlc3RlZCBieQorICAgICAgICBNYW51YWxUZXN0cy9tZWRpYXN0cmVhbS9tZWRpYXN0
cmVhbS1jYW52YXMtdG8tdmlkZW8uaHRtbCAoYWRkZWQpCisKKyAgICAgICAgaHR0cHM6Ly93ZWJy
dGMuZ2l0aHViLmlvL3NhbXBsZXMvc3JjL2NvbnRlbnQvY2FwdHVyZS9jYW52YXMtdmlkZW8vCisg
ICAgICAgIChSZWZyZXNoIHRoZSBwYWdlIG9yIGhpZGUgdGhlIHdpbmRvdyB1bnRpbCBNZWRpYVBs
YXllciBpbml0aWFsaXphdGlvbgorICAgICAgICBmbGFreW5lc3MgbGV0cyByZW5kZXJpbmcgaGFw
cGVuKQorCisgICAgICAgIFRoZSB0ZXN0IExheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vY2Fw
dHVyZVN0cmVhbS9jYW52YXMzZC5odG1sCisgICAgICAgIGNhbm5vdCB5ZXQgYmUgdXNlZCB0byB0
ZXN0IHRoZSBpbXBsZW1lbnRhdGlvbiBhcyB0aGUgcmVzdCBvZiB0aGUKKyAgICAgICAgY2FwdHVy
ZVN0cmVhbSgpIGFuZCBwbGF5YmFjayBpbXBsZW1lbnRhdGlvbiBpcyBzbyBmbGFreS4KKworICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OlNv
dXJjZTo6Y2FudmFzQ2hhbmdlZCk6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6dG9NZWRpYVNhbXBsZSk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwYWludENvbXBvc2l0
ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6aXNQcmVzZXJ2aW5nRHJhd2luZ0J1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBhaW50Q29tcG9zaXRlZFJlc3Vs
dHNUb01lZGlhU2FtcGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlSW1hZ2VTYW1wbGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJm
YWNlU3dhcENoYWluOjpwcmVzZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVz
dWx0c1RvTWVkaWFTYW1wbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW06CisgICAgICAgIChXZWJDb3Jl
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0
c1RvTWVkaWFTYW1wbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oOgor
CiAyMDIxLTA5LTI4ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAK
ICAgICAgICAgRmFjdG9yIG91dCByYXJlIG1lbWJlcnMgb2YgRm9udENyZWF0aW9uQ29udGV4dCBp
bnRvIEZvbnRDcmVhdGlvbkNvbnRleHRSYXJlRGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0
cmVhbVRyYWNrLmNwcAppbmRleCAwODgwOTMzNGE4MjBiZDhmNjI1YzkzMzAzNDJhZmI4OWE5NmFm
MjllLi40YjU2ZDljMWY5MWZlZGNmYjI2Y2RjNGIyZjBjN2ZlYTI2YjM1YzViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0
cmVhbVRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0Nh
bnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcApAQCAtMTUzLDE5ICsxNTMsNiBAQCB2b2lk
IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6OmNhbnZhc0NoYW5nZWQoQ2Fu
dmFzQmFzZSYgY2FudmFzLCBjbwogewogICAgIEFTU0VSVF9VTlVTRUQoY2FudmFzLCBtX2NhbnZh
cyA9PSAmY2FudmFzKTsKIAotI2lmIEVOQUJMRShXRUJHTCkKLSAgICAvLyBGSVhNRTogV2UgbmVl
ZCB0byBwcmVzZXJ2ZSBkcmF3aW5nIGJ1ZmZlciBhcyB3ZSBhcmUgY3VycmVudGx5IGdyYWJiaW5n
IGZyYW1lcyBhc3luY2hyb25vdXNseS4KLSAgICAvLyBXZSBzaG91bGQgaW5zdGVhZCBhZGQgYW4g
YW5jaG9yIHBvaW50IGZvciBib3RoIDJkIGFuZCAzZCBjb250ZXh0cyB3aGVyZSBjYW52YXMgd2ls
bCBhY3R1YWxseSBwYWludC4KLSAgICAvLyBBbmQgY2FsbCBjYW52YXMgb2JzZXJ2ZXJzIGZyb20g
dGhhdCBwb2ludC4KLSAgICBpZiAoaXM8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4oY2FudmFz
LnJlbmRlcmluZ0NvbnRleHQoKSkpIHsKLSAgICAgICAgYXV0byYgY29udGV4dCA9IGRvd25jYXN0
PFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+KCpjYW52YXMucmVuZGVyaW5nQ29udGV4dCgpKTsK
LSAgICAgICAgaWYgKCFjb250ZXh0LmlzUHJlc2VydmluZ0RyYXdpbmdCdWZmZXIoKSkgewotICAg
ICAgICAgICAgY2FudmFzLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIlR1cm5pbmcgZHJh
d2luZyBidWZmZXIgcHJlc2VydmF0aW9uIGZvciB0aGUgV2ViR0wgY2FudmFzIGJlaW5nIGNhcHR1
cmVkIl9zKTsKLSAgICAgICAgICAgIGNvbnRleHQuZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVy
KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKLQogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
dHJ5IHRvIGdlbmVyYXRlIHRoZSBmcmFtZSBhdCB0aGUgdGltZSB0aGUgc2NyZWVuIGlzIGJlaW5n
IHVwZGF0ZWQuCiAgICAgaWYgKG1fY2FwdHVyZUNhbnZhc1RpbWVyLmlzQWN0aXZlKCkpCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5k
ZXggNGNjMmIzNjc2NGNhYjQ3NzgyNDcyZWIxZjkxODEwMjI1ZDU1ZDY1Zi4uNjI5N2EwZGQyNjg4
YmI1Zjc4OWE5NDc4MzZkZjFkYWY2ZGJjNDIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5jcHAKQEAgLTc1OCw2ICs3NTgsMTMgQEAgUmVmUHRyPEltYWdlRGF0YT4g
SFRNTENhbnZhc0VsZW1lbnQ6OmdldEltYWdlRGF0YSgpCiBSZWZQdHI8TWVkaWFTYW1wbGU+IEhU
TUxDYW52YXNFbGVtZW50Ojp0b01lZGlhU2FtcGxlKCkKIHsKICNpZiBQTEFURk9STShDT0NPQSkg
fHwgVVNFKEdTVFJFQU1FUikKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgaWYgKGlzPFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U+KG1fY29udGV4dC5nZXQoKSkpIHsKKyAgICAgICAgaWYgKFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViQVBJU3RhdGlzdGljc0VuYWJs
ZWQoKSkKKyAgICAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5sb2dDYW52
YXNSZWFkKGRvY3VtZW50KCkpOworICAgICAgICByZXR1cm4gZG93bmNhc3Q8V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZT4oKm1fY29udGV4dCkucGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFT
YW1wbGUoKTsKKyAgICB9CisjZW5kaWYKICAgICBhdXRvKiBpbWFnZUJ1ZmZlciA9IGJ1ZmZlcigp
OwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmNwcAppbmRleCBjYWE2ZmMyOTk0OTQxNWJiNzhhMTExNDQyOGZiYWE2MGEzZDZmYWI0Li4y
ODRiMDU1Mzk5YmQwZDIzZmZhMDZjYjRiYjE3ZjdhNTZjMDRjZTEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNw
cApAQCAtMTM0LDYgKzEzNCwxMCBAQAogI2luY2x1ZGUgIk9mZnNjcmVlbkNhbnZhcy5oIgogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgi
CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSk7CkBAIC0xMzc1LDYgKzEzNzksMTUgQEAg
c3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cGFp
bnRSZW5kZXJpbmdSZXN1bHRzVG9QaXgKICAgICByZXR1cm4gbV9jb250ZXh0LT5wYWludFJlbmRl
cmluZ1Jlc3VsdHNUb1BpeGVsQnVmZmVyKCk7CiB9CiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQorUmVmUHRyPE1lZGlhU2FtcGxlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwYWludENv
bXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpCit7CisgICAgaWYgKGlzQ29udGV4dExvc3RP
clBlbmRpbmcoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fY29udGV4
dC0+cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKTsKK30KKyNlbmRpZgorCiBX
ZWJHTFRleHR1cmU6OlRleHR1cmVFeHRlbnNpb25GbGFnIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnRleHR1cmVFeHRlbnNpb25GbGFncygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFdlYkdMVGV4dHVyZTo6VGV4dHVyZUV4dGVuc2lvbkZsYWc+KChtX29lc1RleHR1cmVGbG9h
dExpbmVhciA/IFdlYkdMVGV4dHVyZTo6VGV4dHVyZUV4dGVuc2lvbkZsb2F0TGluZWFyRW5hYmxl
ZCA6IDApIHwgKG1fb2VzVGV4dHVyZUhhbGZGbG9hdExpbmVhciA/IFdlYkdMVGV4dHVyZTo6VGV4
dHVyZUV4dGVuc2lvbkhhbGZGbG9hdExpbmVhckVuYWJsZWQgOiAwKSk7CkBAIC0zOTUwLDE0ICsz
OTYzLDYgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpleHRlbnNpb25Jc0VuYWJs
ZWQoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjplbmFibGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKQotewot
ICAgIEFTU0VSVCghbV9hdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcik7Ci0gICAgbV9h
dHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlciA9IHRydWU7Ci0gICAgLy8gTXVzdCBzZW5k
IHRoaXMgbm90aWZpY2F0aW9uIGRvd24gdG8gdGhlIEdyYXBoaWNzQ29udGV4dEdMIGFzIHdlbGwu
Ci0gICAgbV9jb250ZXh0LT5lbmFibGVQcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKTsKLX0KLQogdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpoaW50KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gbW9kZSkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5o
CmluZGV4IDFiYjdmMWZmZGEyZGJhN2VhZDVmYTdiMjQzMjBhYzg2MTI0Nzg5NGUuLmZkYmM4ODRk
NTYzYjBmYjkzNDkzMDJkOTkzODY2YTg1NWNiZTRhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTEyOCw2
ICsxMjgsMTAgQEAgdXNpbmcgV2ViR0xDYW52YXMgPSBXVEY6OlZhcmlhbnQ8UmVmUHRyPEhUTUxD
YW52YXNFbGVtZW50PiwgUmVmUHRyPE9mZnNjcmVlbkNhbnYKIHVzaW5nIFdlYkdMQ2FudmFzID0g
V1RGOjpWYXJpYW50PFJlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4+OwogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorY2xhc3MgTWVkaWFTYW1wbGU7CisjZW5kaWYKKwogY2xhc3Mg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTDo6Q2xp
ZW50LCBwdWJsaWMgR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0LCBwcml2YXRlIEFjdGl2
aXR5U3RhdGVDaGFuZ2VPYnNlcnZlciB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlKTsKIHB1YmxpYzoKQEAgLTIzMywxMCArMjM3LDYgQEAgcHVi
bGljOgogICAgIGJvb2wgZXh0ZW5zaW9uSXNFbmFibGVkKGNvbnN0IFN0cmluZyYpOwogCiAgICAg
Ym9vbCBpc1ByZXNlcnZpbmdEcmF3aW5nQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1
dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcjsgfQotICAgIC8vIENvbmNlc3Npb24gdG8gY2FudmFz
IGNhcHR1cmUgQVBJLCB3aGljaCBtdXN0IGR5bmFtaWNhbGx5IGVuYWJsZQotICAgIC8vIHByZXNl
cnZlRHJhd2luZ0J1ZmZlci4gVGhpcyBjYW4gb25seSBiZSBjYWxsZWQgb25jZSwgd2hlbgotICAg
IC8vIGlzUHJlc2VydmluZ0RyYXdpbmdCdWZmZXIoKSByZXR1cm5zIGZhbHNlLgotICAgIHZvaWQg
ZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCk7CiAKICAgICBib29sIHByZXZlbnRCdWZmZXJD
bGVhckZvckluc3BlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fcHJldmVudEJ1ZmZlckNsZWFyRm9y
SW5zcGVjdG9yOyB9CiAgICAgdm9pZCBzZXRQcmV2ZW50QnVmZmVyQ2xlYXJGb3JJbnNwZWN0b3Io
Ym9vbCB2YWx1ZSkgeyBtX3ByZXZlbnRCdWZmZXJDbGVhckZvckluc3BlY3RvciA9IHZhbHVlOyB9
CkBAIC0zOTIsNiArMzkyLDkgQEAgcHVibGljOgogICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXlX
aXRoUGFpbnQoKSBmaW5hbDsKICAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFz
KCkgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gcGFpbnRSZW5kZXJpbmdS
ZXN1bHRzVG9QaXhlbEJ1ZmZlcigpOworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgUmVm
UHRyPE1lZGlhU2FtcGxlPiBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpOwor
I2VuZGlmCiAKICAgICB2b2lkIHJlbW92ZVNoYXJlZE9iamVjdChXZWJHTFNoYXJlZE9iamVjdCYp
OwogICAgIHZvaWQgcmVtb3ZlQ29udGV4dE9iamVjdChXZWJHTENvbnRleHRPYmplY3QmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEdMLmNwcAppbmRleCAzNmUzNDMxZjU2ZjA4Y2JhMjhkNjAwZWZlYTEzNTEyZGM4Mjk0Yjk4Li40
NmMyNmFlYmZhMDg2NTEyMjNlZGY5YjViYzI3YTg2Mjk2ZjhkZmY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBA
IC0zNjIsMTIgKzM2Miw2IEBAIEdyYXBoaWNzQ29udGV4dEdMOjpHcmFwaGljc0NvbnRleHRHTChH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMsIEdyYXBoaWNzCiB7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0R0w6OmVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpCi17Ci0gICAg
Ly8gQ2FudmFzIGNhcHR1cmUgc2hvdWxkIG5vdCBjYWxsIHRoaXMgdW5sZXNzIG5lY2Vzc2FyeS4K
LSAgICBBU1NFUlQoIW1fYXR0cnMucHJlc2VydmVEcmF3aW5nQnVmZmVyKTsKLSAgICBtX2F0dHJz
LnByZXNlcnZlRHJhd2luZ0J1ZmZlciA9IHRydWU7Ci19CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0
R0w6OmNvbXB1dGVGb3JtYXRBbmRUeXBlUGFyYW1ldGVycyhHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIHVuc2lnbmVkKiBjb21wb25lbnRzUGVyUGl4ZWwsIHVuc2lnbmVkKiBieXRlc1Bl
ckNvbXBvbmVudCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IDg1NGQ4MGE1ODIzNmFlMmZmNjY0ZTFiMjhlYzc3
OGViNjRhYjEwYWIuLmE2ZTNlNDRjODE5OWM1Y2RmNzRhOTNhYzZmNjE0ZmQzMDY1ODU3MzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0R0wuaApAQCAtNTksNyArNTksOSBAQCBjbGFzcyBQaXhlbEJ1ZmZlcjsKICNpZiBFTkFCTEUo
VklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCiBjbGFzcyBHcmFwaGljc0NvbnRleHRHTENWOwog
I2VuZGlmCi0KKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorY2xhc3MgTWVkaWFTYW1wbGU7Cisj
ZW5kaWYKIAogLy8gQmFzZSBjbGFzcyBmb3IgZ3JhcGhpY3MgY29udGV4dCBmb3IgaW1wbGVtZW50
aW5nIFdlYkdMIHJlbmRlcmluZyBtb2RlbC4KIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMIDogcHVi
bGljIFJlZkNvdW50ZWQ8R3JhcGhpY3NDb250ZXh0R0w+IHsKQEAgLTEyNDQsMTMgKzEyNDYsNiBA
QCBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGNvbnRleHRBdHRyaWJ1
dGVzKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyczsgfQogICAgIHZvaWQgc2V0Q29udGV4dEF0dHJp
YnV0ZXMoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRycykgeyBtX2F0dHJz
ID0gYXR0cnM7IH0KIAotICAgIC8vIEZJWE1FOiBUaGUgY2FsbGluZyBzaXRlIHNob3VsZCBiZSBm
aXhlZCwgdGhpcyBicmVha3MgdGhlIFdlYkdMIHNwZWMKLSAgICAvLyB3cnQgcHJlc2VydmVEcmF3
aW5nQnVmZmVyID09IGZhbHNlIGJlaGF2aW9yLgotICAgIC8vIENvbmNlc3Npb24gdG8gQ2FudmFz
IGNhcHR1cmVTdHJlYW0sIHdoaWNoIG5lZWRzIHRvIGR5bmFtaWNhbGx5IHNldAotICAgIC8vIHBy
ZXNlcnZlRHJhd2luZ0J1ZmZlciB0byB0cnVlIGluIG9yZGVyIHRvIGF2b2lkIGltcGxpY2l0IGNs
ZWFycy4KLSAgICAvLyBJbXBsZW1lbnRhdGlvbnMgZ2VuZXJhbGx5IGRvIG5vdCBzdXBwb3J0IHRv
Z2dsaW5nIHRoaXMgYml0IGFyYml0cmFyaWx5LgotICAgIHZpcnR1YWwgdm9pZCBlbmFibGVQcmVz
ZXJ2ZURyYXdpbmdCdWZmZXIoKTsKLQogICAgIC8vIFN1cHBvcnQgZm9yIGV4dGVuc2lvbnMuIFJl
dHVybnMgYSBub24tbnVsbCBvYmplY3QsIHRob3VnaCBub3QKICAgICAvLyBhbGwgbWV0aG9kcyBp
dCBjb250YWlucyBtYXkgbmVjZXNzYXJpbHkgYmUgc3VwcG9ydGVkIG9uIHRoZQogICAgIC8vIGN1
cnJlbnQgaGFyZHdhcmUuIE11c3QgY2FsbCBFeHRlbnNpb25zR0w6OnN1cHBvcnRzKCkgdG8KQEAg
LTEyOTQsNiArMTI4OSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZW5kZXJp
bmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXImKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9w
dGlvbmFsPFBpeGVsQnVmZmVyPiBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb1BpeGVsQnVmZmVyKCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1h
Z2VCdWZmZXImKSA9IDA7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxNZWRpYVNhbXBsZT4gcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKSA9
IDA7CisjZW5kaWYKIAogICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBiZSByZW1vdmVkLiBUaGUg
bGF5ZXIgc2hvdWxkIGJlIG1hcmtlZCBjb21wb3NpdGVkIGJ5CiAgICAgLy8gcHJlcGFyaW5nIGZv
ciBkaXNwbGF5LCBzbyB0aGF0IGNhbnZhcyBpbWFnZSBidWZmZXIgYW5kIHRoZSBsYXllciBhZ3Jl
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCmluZGV4IDc1ZWNiMWU5
ODY2NTM5MWE3ODBlMzA1YmQ4Y2U5YTVjNzMxODNhMWMuLjdhZWUzOGYzOWYzYjNkYWQ2MjQwODJk
YmJiOTA4NDQ2M2JjMzJhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZS5jcHAKQEAgLTk3LDEzICs5Nyw2IEBAIEdDR0xiaXRmaWVsZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5QmFzZTo6Z2V0QnVmZmVyc1RvQXV0b0NsZWFyKCkgY29uc3QKICAgICByZXR1cm4g
bV9idWZmZXJzVG9BdXRvQ2xlYXI7CiB9CiAKLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2U6OmVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpCi17Ci0gICAgLy8gUmVkZWNs
YXJlZCBmb3IgZXhwb3J0IHJlYXNvbnMuCi0gICAgLy8gRklYTUU6IFRoZSB3aG9sZSBmdW5jdGlv
biBzaG91bGQgYmUgcmVtb3ZlZC4KLSAgICBHcmFwaGljc0NvbnRleHRHTDo6ZW5hYmxlUHJlc2Vy
dmVEcmF3aW5nQnVmZmVyKCk7Ci19Ci0KIGJvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2U6OnN1cHBvcnRzKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICB3YWl0VW50aWxJbml0
aWFsaXplZCgpOwpAQCAtMTU2LDUgKzE0OSwxMiBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlOjpnZXRuVW5pZm9ybWl2RVhUKEdDR0x1aW50LCBHQ0dMaW50LCBHQ0dMcwog
ewogfQogI2VuZGlmCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiAhUExBVEZPUk0oQ09D
T0EpCitSZWZQdHI8TWVkaWFTYW1wbGU+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
OjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9NZWRpYVNhbXBsZSgpCit7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisjZW5kaWYKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlCYXNlLmgKaW5kZXggYmRkYTc4NWY2MGU1Zjc1Yjg0NmNmMGI2Y2ZhMjRhYTczZWU1ZDllYS4u
ZTllY2I4N2M3MGE1NDMwMDgyZjc0NmQ2MjZhMDUxZWJkYzY3MjUyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5QmFzZS5oCkBAIC02Nyw3ICs2Nyw2IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldEJ1ZmZlcnNUb0F1dG9DbGVhcihHQ0dMYml0ZmllbGQpIGZpbmFsOwogICAgIEdDR0xi
aXRmaWVsZCBnZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIG1h
cmtMYXllckNvbXBvc2l0ZWQoKSBmaW5hbDsKLSAgICB2b2lkIGVuYWJsZVByZXNlcnZlRHJhd2lu
Z0J1ZmZlcigpIGZpbmFsOwogCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9O
KQogICAgIEdyYXBoaWNzQ29udGV4dEdMQ1YqIGFzQ1YoKSBmaW5hbDsKQEAgLTgzLDYgKzgyLDkg
QEAgcHVibGljOgogICAgIHZvaWQgZ2V0blVuaWZvcm1mdkVYVChHQ0dMdWludCwgR0NHTGludCwg
R0NHTHNpemVpLCBHQ0dMZmxvYXQqKSBmaW5hbDsKICAgICB2b2lkIGdldG5Vbmlmb3JtaXZFWFQo
R0NHTHVpbnQsIEdDR0xpbnQsIEdDR0xzaXplaSwgR0NHTGludCopIGZpbmFsOwogI2VuZGlmCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBSZWZQdHI8TWVkaWFTYW1wbGU+IHBhaW50Q29t
cG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkgZmluYWw7CisjZW5kaWYKIAogcHJvdGVjdGVk
OgogICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIGF2YWlsYWJsZUV4dGVuc2lvbnMs
IGNvbnN0IFN0cmluZyYgcmVxdWVzdGFibGVFeHRlbnNpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxl
QVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKaW5kZXggNTQ1ZjBiZTFjNTBjYmZlNDE3MDE4MDM1
NmY4OGNlM2M1NTJjODZmNy4uMmViMDQ0OWE2MGRhOTJlMGI5ZDcyOGEzM2RiNzFiZmFmYjRiMGM5
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLmgKQEAgLTMw
LDYgKzMwLDggQEAKICNpbmNsdWRlIDxwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRh
dGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKK3VzaW5nIENWUGl4ZWxCdWZmZXJS
ZWYgPSBzdHJ1Y3QgX19DVkJ1ZmZlcio7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
UGl4ZWxCdWZmZXI7CkBAIC00MCw2ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1l
ZGlhU2FtcGxlQVZGT2JqQz4gY3JlYXRlKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZSwgQXRvbVN0
cmluZyB0cmFja0lEKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU2FtcGxlQVZGT2JqQyhz
YW1wbGUsIHRyYWNrSUQpKTsgfQogICAgIHN0YXRpYyBSZWY8TWVkaWFTYW1wbGVBVkZPYmpDPiBj
cmVhdGUoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlLCBWaWRlb1JvdGF0aW9uIHJvdGF0aW9uID0g
VmlkZW9Sb3RhdGlvbjo6Tm9uZSwgYm9vbCBtaXJyb3JlZCA9IGZhbHNlKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IE1lZGlhU2FtcGxlQVZGT2JqQyhzYW1wbGUsIHJvdGF0aW9uLCBtaXJyb3JlZCkp
OyB9CiAgICAgc3RhdGljIFJlZlB0cjxNZWRpYVNhbXBsZUFWRk9iakM+IGNyZWF0ZUltYWdlU2Ft
cGxlKFBpeGVsQnVmZmVyJiYpOworICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFTYW1wbGVBVkZPYmpD
PiBjcmVhdGVJbWFnZVNhbXBsZShSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4mJiwgVmlkZW9S
b3RhdGlvbiwgYm9vbCBtaXJyb3JlZCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9p
ZCBzZXRBc0Rpc3BsYXlJbW1lZGlhdGVseShNZWRpYVNhbXBsZSYpOwogICAgIHN0YXRpYyBSZXRh
aW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IGNsb25lU2FtcGxlQnVmZmVyQW5kU2V0QXNEaXNwbGF5
SW1tZWRpYXRlbHkoQ01TYW1wbGVCdWZmZXJSZWYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFTYW1wbGVBVkZPYmpDLm1tCmluZGV4IGE0Y2M4MjgwZWVjMjlmM2MxNmEzYjI1N2VlY2Vl
Mjk5ZDUwNmY5ZWEuLjdhMWEwMGZlOTAzZTc5NTcxMmFkMmVhM2FmZTUyMDk2YzdiNDRiYjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KQEAgLTk1LDI0
ICs5NSwzMyBAQCBSZWZQdHI8TWVkaWFTYW1wbGVBVkZPYmpDPiBNZWRpYVNhbXBsZUFWRk9iakM6
OmNyZWF0ZUltYWdlU2FtcGxlKFBpeGVsQnVmZmVyJiYgcAogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAgICAgQVNTRVJUX1VOVVNFRChzdGF0dXMsICFzdGF0dXMpOworICAgIHJldHVy
biBjcmVhdGVJbWFnZVNhbXBsZShXVEZNb3ZlKGN2UGl4ZWxCdWZmZXIpLCBWaWRlb1JvdGF0aW9u
OjpOb25lLCBmYWxzZSk7Cit9CiAKK1JlZlB0cjxNZWRpYVNhbXBsZUFWRk9iakM+IE1lZGlhU2Ft
cGxlQVZGT2JqQzo6Y3JlYXRlSW1hZ2VTYW1wbGUoUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+
JiYgcGl4ZWxCdWZmZXIsIFZpZGVvUm90YXRpb24gcm90YXRpb24sIGJvb2wgbWlycm9yZWQpCit7
CiAgICAgQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9uUmF3ID0g
bnVsbHB0cjsKLSAgICBzdGF0dXMgPSBQQUw6OkNNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0
ZUZvckltYWdlQnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIGN2UGl4ZWxCdWZmZXIuZ2V0KCks
ICZmb3JtYXREZXNjcmlwdGlvblJhdyk7Ci0gICAgQVNTRVJUKCFzdGF0dXMpOworICAgIGF1dG8g
c3RhdHVzID0gUEFMOjpDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGVGb3JJbWFnZUJ1ZmZl
cihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwaXhlbEJ1ZmZlci5nZXQoKSwgJmZvcm1hdERlc2NyaXB0
aW9uUmF3KTsKKyAgICBpZiAoc3RhdHVzIHx8ICFmb3JtYXREZXNjcmlwdGlvblJhdykgeworICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQogICAgIGF1dG8gZm9ybWF0RGVzY3JpcHRpb24gPSBhZG9wdENGKGZvcm1hdERlc2NyaXB0aW9u
UmF3KTsKIAogICAgIENNU2FtcGxlVGltaW5nSW5mbyBzYW1wbGVUaW1pbmdJbmZvcm1hdGlvbiA9
IHsgUEFMOjprQ01UaW1lSW52YWxpZCwgUEFMOjprQ01UaW1lSW52YWxpZCwgUEFMOjprQ01UaW1l
SW52YWxpZCB9OwogICAgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlclJhdyA9IG51bGxw
dHI7Ci0gICAgc3RhdHVzID0gUEFMOjpDTVNhbXBsZUJ1ZmZlckNyZWF0ZVJlYWR5V2l0aEltYWdl
QnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIGN2UGl4ZWxCdWZmZXIuZ2V0KCksIGZvcm1hdERl
c2NyaXB0aW9uLmdldCgpLCAmc2FtcGxlVGltaW5nSW5mb3JtYXRpb24sICZzYW1wbGVCdWZmZXJS
YXcpOwotICAgIEFTU0VSVCghc3RhdHVzKTsKKyAgICBzdGF0dXMgPSBQQUw6OkNNU2FtcGxlQnVm
ZmVyQ3JlYXRlUmVhZHlXaXRoSW1hZ2VCdWZmZXIoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGl4ZWxC
dWZmZXIuZ2V0KCksIGZvcm1hdERlc2NyaXB0aW9uLmdldCgpLCAmc2FtcGxlVGltaW5nSW5mb3Jt
YXRpb24sICZzYW1wbGVCdWZmZXJSYXcpOworICAgIGlmIChzdGF0dXMgfHwgIXNhbXBsZUJ1ZmZl
clJhdykgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQogICAgIGF1dG8gc2FtcGxlQnVmZmVyID0gYWRvcHRDRihzYW1wbGVCdWZm
ZXJSYXcpOwotCiAgICAgQ0ZBcnJheVJlZiBhdHRhY2htZW50c0FycmF5ID0gUEFMOjpDTVNhbXBs
ZUJ1ZmZlckdldFNhbXBsZUF0dGFjaG1lbnRzQXJyYXkoc2FtcGxlQnVmZmVyLmdldCgpLCB0cnVl
KTsKICAgICBmb3IgKENGSW5kZXggaSA9IDAsIGNvdW50ID0gQ0ZBcnJheUdldENvdW50KGF0dGFj
aG1lbnRzQXJyYXkpOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBDRk11dGFibGVEaWN0aW9u
YXJ5UmVmIGF0dGFjaG1lbnRzID0gY2hlY2tlZF9jZl9jYXN0PENGTXV0YWJsZURpY3Rpb25hcnlS
ZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoYXR0YWNobWVudHNBcnJheSwgaSkpOwogICAgICAg
ICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShhdHRhY2htZW50cywgUEFMOjprQ01TYW1wbGVBdHRhY2ht
ZW50S2V5X0Rpc3BsYXlJbW1lZGlhdGVseSwga0NGQm9vbGVhblRydWUpOwogICAgIH0KLSAgICBy
ZXR1cm4gY3JlYXRlKHNhbXBsZUJ1ZmZlci5nZXQoKSk7CisgICAgcmV0dXJuIGNyZWF0ZShzYW1w
bGVCdWZmZXIuZ2V0KCksIHJvdGF0aW9uLCBtaXJyb3JlZCk7CiB9CiAKIE1lZGlhVGltZSBNZWRp
YVNhbXBsZUFWRk9iakM6OnByZXNlbnRhdGlvblRpbWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1
cmZhY2VTd2FwQ2hhaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCmluZGV4IDljNDAyNzIx
ZGI1ZmQ2NDc4NmEyZTZhMmJhNGZlNDIwNGY2NTBiZjYuLjhkNGMzODhiN2YxZWMxZjU3MzdmZmM1
M2FlMDNmNzIwZWRmOTBlZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5jcHAKQEAgLTM3LDYgKzM3LDExIEBAIGNvbnN0IEdyYXBoaWNz
Q29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjpCdWZmZXImIEdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhCiAgICAgcmV0dXJuIG1fZGlzcGxheUJ1ZmZlcjsKIH0KIAordm9pZCBHcmFwaGlj
c0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6bWFya0Rpc3BsYXlCdWZmZXJJblVzZSgpCit7
CisgICAgbV9kaXNwbGF5QnVmZmVySW5Vc2UgPSB0cnVlOworfQorCiBHcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbjo6QnVmZmVyIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluOjpyZWN5Y2xlQnVmZmVyKCkKIHsKICAgICBpZiAobV9zcGFyZUJ1ZmZlci5zdXJmYWNl
KSB7CkBAIC01Niw2ICs2MSwxMCBAQCB2b2lkKiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3
YXBDaGFpbjo6ZGV0YWNoQ2xpZW50KCkKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VT
d2FwQ2hhaW46OnByZXNlbnQoQnVmZmVyJiYgYnVmZmVyKQogewogICAgIG1fc3BhcmVCdWZmZXIg
PSBzdGQ6OmV4Y2hhbmdlKG1fZGlzcGxheUJ1ZmZlciwgV1RGTW92ZShidWZmZXIpKTsKKyAgICBp
ZiAobV9kaXNwbGF5QnVmZmVySW5Vc2UpIHsKKyAgICAgICAgbV9kaXNwbGF5QnVmZmVySW5Vc2Ug
PSBmYWxzZTsKKyAgICAgICAgbV9zcGFyZUJ1ZmZlci5zdXJmYWNlLnJlc2V0KCk7CisgICAgfQog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hh
aW4uaAppbmRleCBlNDM3ZDdkZjBlZTg0MTM5ZWFmZTNlMmZkNzI3MTk4YjhmNjFhMDYxLi4zODc2
YWU3Mzc4ZDdkNzAzYzUzMTIzN2NjMmY1ZjBjOWNmZmU5NTdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmgKQEAgLTY3LDYgKzY3LDkgQEAg
cHVibGljOgogICAgIC8vIG5leHQgcHJlc2VudCwgcmVjeWNsZUJ1ZmZlciBvciBkZXRhY2hDbGll
bnQgY2FsbC4KICAgICB2aXJ0dWFsIGNvbnN0IEJ1ZmZlciYgZGlzcGxheUJ1ZmZlcigpIGNvbnN0
OwogCisgICAgLy8gTWFya3MgdGhlIGN1cnJlbnQgZGlzcGxheSBidWZmZXIgdG8gYmUgaW4gdXNl
IGFuZCBub3QgZWxpZ2JsZSB0byByZWN5Y2xpbmcuCisgICAgdm9pZCBtYXJrRGlzcGxheUJ1ZmZl
ckluVXNlKCk7CisKICAgICAvLyBEZXRhY2hlcyB0aGUgY2xpZW50IGFuZCByZXR1cm5zIHRoZSBj
dXJyZW50IGNvbnRlbnRzIGJ1ZmZlciBtZXRhZGF0YSBoYW5kbGUuCiAgICAgLy8gVGhlIGlmIG11
bHRpcGxlIGJ1ZmZlcnMgaGF2ZSBiZWVuIHN1Ym1pdHRlZCwgcmVjeWNsZUJ1ZmZlciBtdXN0IGhh
dmUgYmVlbiBjYWxsZWQgYmVmb3JlIGNhbGxpbmcKICAgICAvLyB0aGlzLgpAQCAtNzUsNiArNzgs
NyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgQnVmZmVyIG1fZGlzcGxheUJ1ZmZlcjsKICAg
ICBCdWZmZXIgbV9zcGFyZUJ1ZmZlcjsKKyAgICBib29sIG1fZGlzcGxheUJ1ZmZlckluVXNlID0g
ZmFsc2U7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5t
bQppbmRleCA3NTVjZDQ1ODdhNGRkNWNiMzEwNThlZTY4OTQ5NDRiZWVjNDg0ZTViLi5lNjcxMDRh
N2M3Y2IxMzkxZTU3N2FlYWNjZmI4N2YwMWNhZGVjM2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQ29jb2EubW0KQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoV0VC
R0wpCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgogCisjaW1wb3J0ICJDVlV0
aWxpdGllcy5oIgogI2ltcG9ydCAiRXh0ZW5zaW9uc0dMQU5HTEUuaCIKICNpbXBvcnQgIkdyYXBo
aWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdM
SU9TdXJmYWNlU3dhcENoYWluLmgiCkBAIC01MCw2ICs1MSwxMCBAQAogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dEdMQ1YuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNp
bmNsdWRlICJNZWRpYVNhbXBsZUFWRk9iakMuaCIKKyNlbmRpZgorCiBXVEZfV0VBS19MSU5LX0ZP
UkNFX0lNUE9SVChFR0xfSW5pdGlhbGl6ZSk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTg3
OCw2ICs4ODMsMjEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVsZWFzZUFsbFJl
c291cmNlc0lmVW51c2VkKCkKICAgICBTY29wZWRFR0xEZWZhdWx0RGlzcGxheTo6cmVsZWFzZUFs
bFJlc291cmNlc0lmVW51c2VkKCk7CiB9CiAKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorUmVm
UHRyPE1lZGlhU2FtcGxlPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRDb21wb3NpdGVk
UmVzdWx0c1RvTWVkaWFTYW1wbGUoKQoreworICAgIGF1dG8gJmRpc3BsYXlCdWZmZXIgPSBtX3N3
YXBDaGFpbi0+ZGlzcGxheUJ1ZmZlcigpOworICAgIGlmICghZGlzcGxheUJ1ZmZlci5zdXJmYWNl
IHx8ICFkaXNwbGF5QnVmZmVyLmhhbmRsZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
aWYgKGRpc3BsYXlCdWZmZXIuc3VyZmFjZS0+c2l6ZSgpICE9IGdldEludGVybmFsRnJhbWVidWZm
ZXJTaXplKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIG1fc3dhcENoYWluLT5tYXJr
RGlzcGxheUJ1ZmZlckluVXNlKCk7CisgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGNyZWF0ZUNWUGl4
ZWxCdWZmZXIoZGlzcGxheUJ1ZmZlci5zdXJmYWNlLT5zdXJmYWNlKCkpOworICAgIGlmICghcGl4
ZWxCdWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBNZWRpYVNhbXBs
ZUFWRk9iakM6OmNyZWF0ZUltYWdlU2FtcGxlKFdURk1vdmUoKnBpeGVsQnVmZmVyKSwgTWVkaWFT
YW1wbGVBVkZPYmpDOjpWaWRlb1JvdGF0aW9uOjpVcHNpZGVEb3duLCB0cnVlKTsKK30KKyNlbmRp
ZgogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW0KaW5kZXggMGM0MTQwMTViN2IwZjM0
YmIyOGJlMzQ1NTA5Yzc0MjllMzFkYWEzYy4uMTkzNGVmNWVmMzM2OWEyMzY5OTZiMmU2ZGUwZDc2
MzhiMTkxOWZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5QmFzZUNvY29hLm1tCkBAIC0zMiw2ICszMiwxMSBAQAogI2ltcG9ydCAiV2ViR0xMYXll
ci5oIgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KIAorI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisjaW1wb3J0ICJDVlV0aWxpdGllcy5oIgorI2ltcG9ydCAiTWVkaWFTYW1w
bGVBVkZPYmpDLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybUluaXRpYWxpemUoKQpAQCAtNjMs
NSArNjgsMjAgQEAgR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4mIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlOjpwbGF0Zm9ybVMKICAgICByZXR1cm4gW21fd2ViR0xM
YXllciBzd2FwQ2hhaW5dOwogfQogCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK1JlZlB0cjxN
ZWRpYVNhbXBsZT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2U6OnBhaW50Q29tcG9z
aXRlZFJlc3VsdHNUb01lZGlhU2FtcGxlKCkKK3sKKyAgICBhdXRvJiBzYyA9IHBsYXRmb3JtU3dh
cENoYWluKCk7CisgICAgYXV0byYgZGlzcGxheUJ1ZmZlciA9IHNjLmRpc3BsYXlCdWZmZXIoKTsK
KyAgICBpZiAoIWRpc3BsYXlCdWZmZXIuc3VyZmFjZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgc2MubWFya0Rpc3BsYXlCdWZmZXJJblVzZSgpOworICAgIGF1dG8gcGl4ZWxCdWZmZXIg
PSBjcmVhdGVDVlBpeGVsQnVmZmVyKGRpc3BsYXlCdWZmZXIuc3VyZmFjZS0+c3VyZmFjZSgpKTsK
KyAgICBpZiAoIXBpeGVsQnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1
cm4gTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGVJbWFnZVNhbXBsZShXVEZNb3ZlKCpwaXhlbEJ1
ZmZlciksIE1lZGlhU2FtcGxlQVZGT2JqQzo6VmlkZW9Sb3RhdGlvbjo6VXBzaWRlRG93biwgdHJ1
ZSk7Cit9CisjZW5kaWYKKwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmNwcAppbmRleCBlNjAzYzJiZjVmZmJhN2FmMmIzNDJlODBkNzY4NGEwOTcxNDEwZmViLi5m
OGIyMGFjNzZkMWJkZTlmM2EyODYwYWI5YTJjNDQ5N2U1YjYyN2Y0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTM0LDEzICszNCwxNiBAQAogI2luY2x1ZGUgIklt
YWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAi
UGl4ZWxCdWZmZXIuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZUFy
cmF5Lmg+CiAKICNpZiBVU0UoQVZGT1VOREFUSU9OKQogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dEdMQ1YuaCIKICNlbmRpZgogCi0jaW5jbHVkZSA8bWVtb3J5PgorI2lmICFQTEFURk9STShDT0NP
QSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgorI2Vu
ZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNzIsMTQgKzc1LDYgQEAgR0NHTGJpdGZp
ZWxkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKSBjb25z
dAogICAgIHJldHVybiBtX2J1ZmZlcnNUb0F1dG9DbGVhcjsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6ZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCkKLXsKLSAgICBHcmFw
aGljc0NvbnRleHRHTDo6ZW5hYmxlUHJlc2VydmVEcmF3aW5nQnVmZmVyKCk7Ci0gICAgLy8gQWZ0
ZXIgZHluYW1pY2FsbHkgdHJhbnNpdGlvbmluZyB0byBwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6dHJ1
ZQotICAgIC8vIGZvciBjYW52YXMgY2FwdHVyZSwgY2xlYXIgb3V0IGFueSBidWZmZXIgYXV0by1j
bGVhcmluZyBzdGF0ZS4KLSAgICBtX2J1ZmZlcnNUb0F1dG9DbGVhciA9IDA7Ci19Ci0KICNpZiAh
VVNFKEFOR0xFKQogYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRFJlc291
cmNlU2FmZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVy
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnQgdW5wYWNrQWxpZ25tZW50
KQogewpAQCAtMTcwLDYgKzE2NSwxMyBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9QaXhlbAogICAgIHJl
dHVybiByZXN1bHRzOwogfQogCisjaWYgIVBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorUmVmUHRyPE1lZGlhU2FtcGxlPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFp
bnRDb21wb3NpdGVkUmVzdWx0c1RvTWVkaWFTYW1wbGUoKQoreworICAgIHJldHVybiBudWxscHRy
OworfQorI2VuZGlmCisKIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpyZWFkUmVuZGVyaW5nUmVzdWx0c0ZvclBhaW50aW5nKCkKIHsKICAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApp
bmRleCBhMjk0ZTM1NjA0ZTc3ZmRlYmQ4ODQxYzU1OGQ5NDNlMzQ1OGExZmJlLi5mZTU5ZGViMDlk
ODhjZTdhZDU4YWQ1MjA5MGM0ZTU2MDRhMzdiMjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuaApAQCAtNDYwLDEzICs0NjAsMTUgQEAgcHVibGljOgogICAgIHZvaWQgcmVzZXRC
dWZmZXJzVG9BdXRvQ2xlYXIoKTsKICAgICB2b2lkIHNldEJ1ZmZlcnNUb0F1dG9DbGVhcihHQ0dM
Yml0ZmllbGQpIGZpbmFsOwogICAgIEdDR0xiaXRmaWVsZCBnZXRCdWZmZXJzVG9BdXRvQ2xlYXIo
KSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGVuYWJsZVByZXNlcnZlRHJhd2luZ0J1ZmZlcigpIGZp
bmFsOwogCiAgICAgdm9pZCBkaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90aWZpY2F0aW9uKCk7CiAK
ICAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyJikgZmlu
YWw7CiAgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gcGFpbnRSZW5kZXJpbmdSZXN1bHRz
VG9QaXhlbEJ1ZmZlcigpIGZpbmFsOwogICAgIHZvaWQgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1Rv
Q2FudmFzKEltYWdlQnVmZmVyJikgZmluYWw7CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAg
ICBSZWZQdHI8TWVkaWFTYW1wbGU+IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb01lZGlhU2FtcGxl
KCkgZmluYWw7CisjZW5kaWYKIAogICAgIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHJlYWRS
ZW5kZXJpbmdSZXN1bHRzRm9yUGFpbnRpbmcoKTsKICAgICBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVm
ZmVyPiByZWFkQ29tcG9zaXRlZFJlc3VsdHNGb3JQYWludGluZygpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQ2ODgyYTRk
ZjU2YmFiNWZjYmFmNTk2NzBiMWMxNzBlMzFmMmQwYTguLmI2MDRkNDQ0NDMwNjdjMWY2MjUwMDYx
Y2JkZWE4NTdlNjAwZDcxZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0wOS0yOSAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFt
IGNhbnZhcy5jYXB0dXJlU3RyZWFtKCkgZmFpbHMgZm9yIFdlYkdMCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA2MTMKKyAgICAgICAgPHJkYXI6Ly84
MjMwNzI5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgbmV3IGV4cGVjdGF0aW9ucywgYSB3YXJuaW5nIHdhcyByZW1vdmVkLgorICAgICAgICBD
T05TT0xFIE1FU1NBR0U6IFR1cm5pbmcgZHJhd2luZyBidWZmZXIgcHJlc2VydmF0aW9uIGZvciB0
aGUgV2ViR0wgY2FudmFzIGJlaW5nIGNhcHR1cmVkCisKKyAgICAgICAgKiBmYXN0L21lZGlhY2Fw
dHVyZWZyb21lbGVtZW50L0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbS13ZWJnbC1ldmVudHMtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vY2FwdHVyZVN0cmVhbS9jYW52
YXMzZC1leHBlY3RlZC50eHQ6CisKIDIwMjEtMDktMjggIEFyY2FkeSBHb2xkbWludHMtT3Jsb3Yg
IDxhZ29sZG1pbnRzQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dMSUJdIFVwZGF0ZSB0ZXN0IGV4
cGVjdGF0aW9ucyBhbmQgYmFzZWxpbmVzLiBVbnJldmlld2VkIHRlc3QgZ2FyZGVuaW5nLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYWNhcHR1cmVmcm9tZWxlbWVudC9DYW52YXND
YXB0dXJlTWVkaWFTdHJlYW0td2ViZ2wtZXZlbnRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvbWVkaWFjYXB0dXJlZnJvbWVsZW1lbnQvQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtLXdl
YmdsLWV2ZW50cy1leHBlY3RlZC50eHQKaW5kZXggNzQ0YWNhYTFjZTQ5MjQxN2JhMGJiZjJiNTA4
MzI0NzNlOTA5YTAxMi4uNTIxMTFiNTQzNDcxZTlhNzhkMmI4N2IzOTRjYzhiZTBkM2Q5NjlmOCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYWNhcHR1cmVmcm9tZWxlbWVudC9DYW52
YXNDYXB0dXJlTWVkaWFTdHJlYW0td2ViZ2wtZXZlbnRzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L21lZGlhY2FwdHVyZWZyb21lbGVtZW50L0NhbnZhc0NhcHR1cmVNZWRpYVN0
cmVhbS13ZWJnbC1ldmVudHMtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQ09OU09MRSBN
RVNTQUdFOiBUdXJuaW5nIGRyYXdpbmcgYnVmZmVyIHByZXNlcnZhdGlvbiBmb3IgdGhlIFdlYkdM
IGNhbnZhcyBiZWluZyBjYXB0dXJlZAogRXhlcmNpc2VzIHRoZSBwb3RlbnRpYWwgZXZlbnRzIG9u
IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbS4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9jYXB0dXJlU3RyZWFtL2Nh
bnZhczNkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vY2FwdHVy
ZVN0cmVhbS9jYW52YXMzZC1leHBlY3RlZC50eHQKaW5kZXggYjg0NmUzZDBjMDIxNmMwN2FmOWI0
NWJjMDQzZTE5YWQwZGQyYzYzYS4uNjAwODhlY2NlY2FlNDE5NTZlZjAxYzZjYjIxYjU4NDdiZGE3
NDVkNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9jYXB0dXJlU3Ry
ZWFtL2NhbnZhczNkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL2NhcHR1cmVTdHJlYW0vY2FudmFzM2QtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAot
Q09OU09MRSBNRVNTQUdFOiBUdXJuaW5nIGRyYXdpbmcgYnVmZmVyIHByZXNlcnZhdGlvbiBmb3Ig
dGhlIFdlYkdMIGNhbnZhcyBiZWluZyBjYXB0dXJlZAogCiAKIApkaWZmIC0tZ2l0IGEvQ2hhbmdl
TG9nIGIvQ2hhbmdlTG9nCmluZGV4IDg3YzcwMzliNTBiOTYyMGRkN2I0YTUzNTliNTFmYWI3ZDk4
NTNmMWQuLjc3MWUwZWMzMDk1NTU3NzNmNjVjM2FlYzhiMjI5ZjI2MDlmMTAwZTYgMTAwNjQ0Ci0t
LSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0wOS0y
OSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIE1lZGlh
U3RyZWFtIGNhbnZhcy5jYXB0dXJlU3RyZWFtKCkgZmFpbHMgZm9yIFdlYkdMCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA2MTMKKyAgICAgICAgPHJk
YXI6Ly84MjMwNzI5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgYSBtYW51YWwgdGVzdCB0byBpbnRlcmFjdCB3aXRoIG1lZGlhIHN0cmVhbQor
ICAgICAgICBjYXB0dXJlU3RyZWFtKCkgYmVoYXZpb3IgdW50aWwgdGhlIGltcGxlbWVudGF0aW9u
IGlzCisgICAgICAgIHRlc3RhYmxlLgorCisgICAgICAgICogTWFudWFsVGVzdHMvbWVkaWFzdHJl
YW0vbWVkaWFzdHJlYW0tY2FudmFzLXRvLXZpZGVvLmh0bWw6IEFkZGVkLgorCiAyMDIxLTA5LTI4
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1RLXVtXUEVdIEJ1bXAgbGlic291cDMgdmVyc2lvbiB0byAzLjAuMApkaWZmIC0tZ2l0IGEvTWFu
dWFsVGVzdHMvbWVkaWFzdHJlYW0vbWVkaWFzdHJlYW0tY2FudmFzLXRvLXZpZGVvLmh0bWwgYi9N
YW51YWxUZXN0cy9tZWRpYXN0cmVhbS9tZWRpYXN0cmVhbS1jYW52YXMtdG8tdmlkZW8uaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41NTEwMDY4OTBmYzQ4Mjg5ZGFiMDFhMjdjMjJmZThiZGUwNjc5NGNmCi0tLSAv
ZGV2L251bGwKKysrIGIvTWFudWFsVGVzdHMvbWVkaWFzdHJlYW0vbWVkaWFzdHJlYW0tY2FudmFz
LXRvLXZpZGVvLmh0bWwKQEAgLTAsMCArMSwxOTIgQEAKKzxodG1sPgorPGhlYWQ+CisgICAgPHN0
eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICB2aWRlbyB7IGJvcmRlcjogc29saWQgMXB4IGJsYWNr
OyB9CisgICAgY2FudmFzIHsgcGFkZGluZzogMXB4IH0KKyAgICAucGxhY2Vob2xkZXIgeworICAg
ICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgIGJvcmRlcjogMXB4IGRhc2hlZCBi
bGFjazsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBoZWlnaHQ6IDE1MHB4OworICAg
IH0KKyAgICA8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD4KKzxpbnB1dCB0eXBlPSJidXR0
b24iIG9uY2xpY2s9ImRyYXdPbmNlKCkiIHZhbHVlPSJEcmF3IG9uY2UiIC8+Cis8aW5wdXQgdHlw
ZT0iYnV0dG9uIiBvbmNsaWNrPSJjbGVhck9uY2UoKSIgdmFsdWU9IkNsZWFyIG9uY2UiIC8+Cis8
aW5wdXQgdHlwZT0iYnV0dG9uIiBvbmNsaWNrPSJ0b2dnbGVEcmF3aW5nKCkiIHZhbHVlPSJUb2dn
bGUgZHJhd2luZyIvPgorPC9wPgorPHA+CisgICAgPHVsPgorICAgICAgICA8bGk+TGVmdDogY2Fu
dmFzPC9saT4KKyAgICAgICAgPGxpPlJpZ2h0OiB2aWRlbzwvbGk+CisgICAgICAgIDxsaT5Ub3Ag
cmVjdGFuZ2xlIHNtYWxsOiBvcGFxdWU8L2xpPgorICAgICAgICA8bGk+Qm90dG9tIHJlY3Rhbmds
ZSBiaWc6IDUwJSB0cmFuc2x1Y2VudDwvbGk+CisgICAgICAgIDxsaT5CYWNrZ3JvdW5kOiB0cmFu
c3BhcmVudDwvbGk+CisgICAgPC91bD4KKzwvcD4KKzxzY3JpcHQ+CisKK3ZhciBjdHgyRHMgPSBb
XTsKKwordmFyIGdscyA9IFtdOworCitmdW5jdGlvbiBjcmVhdGVUZXN0cygpCit7CisgICAgbGV0
IGdsQ2FzZXMgPSBbXTsKKyAgICBmb3IgKGxldCBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIgb2YgW3Ry
dWUsIGZhbHNlXSkgeworICAgICAgICBmb3IgKGxldCBhbHBoYSBvZiBbdHJ1ZSwgZmFsc2VdKSB7
CisgICAgICAgICAgICBmb3IgKGxldCBwcmVtdWx0aXBsaWVkQWxwaGEgb2YgW3RydWUsIGZhbHNl
XSkgeworICAgICAgICAgICAgICAgIGdsQ2FzZXMucHVzaCh7CisgICAgICAgICAgICAgICAgICAg
IHByZXNlcnZlRHJhd2luZ0J1ZmZlcjogcHJlc2VydmVEcmF3aW5nQnVmZmVyLAorICAgICAgICAg
ICAgICAgICAgICBhbHBoYTogYWxwaGEsCisgICAgICAgICAgICAgICAgICAgIHByZW11bHRpcGxp
ZWRBbHBoYTogcHJlbXVsdGlwbGllZEFscGhhLAorICAgICAgICAgICAgICAgICAgICBhbnRpYWxp
YXM6IGZhbHNlLAorICAgICAgICAgICAgICAgICAgICBpbkRvY3VtZW50OiB0cnVlCisgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgZ2xDYXNl
cy5wdXNoKHsKKyAgICAgICAgcHJlc2VydmVEcmF3aW5nQnVmZmVyOiBmYWxzZSwKKyAgICAgICAg
YWxwaGE6IHRydWUsCisgICAgICAgIHByZW11bHRpcGxpZWRBbHBoYTogdHJ1ZSwKKyAgICAgICAg
YW50aWFsaWFzOiB0cnVlLAorICAgICAgICBpbkRvY3VtZW50OiB0cnVlCisgICAgfSk7CisgICAg
Z2xDYXNlcy5wdXNoKHsKKyAgICAgICAgcHJlc2VydmVEcmF3aW5nQnVmZmVyOiBmYWxzZSwKKyAg
ICAgICAgYWxwaGE6IHRydWUsCisgICAgICAgIHByZW11bHRpcGxpZWRBbHBoYTogdHJ1ZSwKKyAg
ICAgICAgYW50aWFsaWFzOiBmYWxzZSwKKyAgICAgICAgaW5Eb2N1bWVudDogZmFsc2UKKyAgICB9
KTsKKworICAgIHZhciBjdHgyRENhc2VzID0gW107CisgICAgZm9yIChsZXQgaW5Eb2N1bWVudCBv
ZiBbdHJ1ZSwgZmFsc2VdKSB7CisgICAgICAgIGN0eDJEQ2FzZXMucHVzaCh7IGluRG9jdW1lbnQ6
IGluRG9jdW1lbnQgfSk7CisgICAgfQorCisgICAgZm9yIChsZXQgYyBvZiBnbENhc2VzKSB7Cisg
ICAgICAgIGxldCBkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZCk7CisgICAgICAgIGxldCBoID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiaDMiKTsKKyAgICAgICAgaC5pbm5lclRleHQgPSBgV2ViR0wgY2FzZTogJHtK
U09OLnN0cmluZ2lmeShjKX1gOworICAgICAgICBkLmFwcGVuZENoaWxkKGgpOworICAgICAgICBs
ZXQgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CisgICAgICAgIGlm
IChjLmluRG9jdW1lbnQpCisgICAgICAgICAgICBkLmFwcGVuZENoaWxkKGNhbnZhcyk7CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgbGV0IHAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKKyAgICAgICAgICAgIHAuY2xhc3NOYW1lID0gInBsYWNlaG9sZGVyIjsKKyAgICAgICAg
ICAgIGQuYXBwZW5kQ2hpbGQocCk7CisgICAgICAgIH0KKyAgICAgICAgbGV0IHYgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJ2aWRlbyIpOworICAgICAgICB2LmNvbnRyb2xzID0gdHJ1ZTsKKyAg
ICAgICAgdi5hdXRvcGxheSA9IHRydWU7CisgICAgICAgIGQuYXBwZW5kQ2hpbGQodik7CisKKyAg
ICAgICAgbGV0IGdsID0gY2FudmFzLmdldENvbnRleHQoIndlYmdsMiIsIHsKKyAgICAgICAgICAg
IHByZXNlcnZlRHJhd2luZ0J1ZmZlcjogYy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIsCisgICAgICAg
ICAgICBhbHBoYTogYy5hbHBoYSwKKyAgICAgICAgICAgIHByZW11bHRpcGxpZWRBbHBoYTogYy5w
cmVtdWx0aXBsaWVkQWxwaGEsCisgICAgICAgICAgICBhbnRpYWxpYXM6IGMuYW50aWFsaWFzCisg
ICAgICAgIH0pOworICAgICAgICB2LnNyY09iamVjdCA9IGNhbnZhcy5jYXB0dXJlU3RyZWFtKCk7
CisgICAgICAgIGdscy5wdXNoKGdsKTsKKyAgICB9CisKKyAgICBmb3IgKGxldCBjIG9mIGN0eDJE
Q2FzZXMpIHsKKyAgICAgICAgbGV0IGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
KyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkKTsKKyAgICAgICAgbGV0IGggPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJoMyIpOworICAgICAgICBoLmlubmVyVGV4dCA9IGBDYW52
YXMgY2FzZTogJHtKU09OLnN0cmluZ2lmeShjKX1gOworICAgICAgICBkLmFwcGVuZENoaWxkKGgp
OworICAgICAgICBsZXQgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7
CisgICAgICAgIGlmIChjLmluRG9jdW1lbnQpCisgICAgICAgICAgICBkLmFwcGVuZENoaWxkKGNh
bnZhcyk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbGV0IHAgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgICAgIHAuY2xhc3NOYW1lID0gInBsYWNlaG9sZGVy
IjsKKyAgICAgICAgICAgIGQuYXBwZW5kQ2hpbGQocCk7CisgICAgICAgIH0KKyAgICAgICAgbGV0
IHYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ2aWRlbyIpOworICAgICAgICB2LmNvbnRyb2xz
ID0gdHJ1ZTsKKyAgICAgICAgdi5hdXRvcGxheSA9IHRydWU7CisgICAgICAgIGQuYXBwZW5kQ2hp
bGQodik7CisgICAgICAgIGxldCBjdHgyRCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOworICAg
ICAgICB2LnNyY09iamVjdCA9IGNhbnZhcy5jYXB0dXJlU3RyZWFtKCk7CisgICAgICAgIGN0eDJE
cy5wdXNoKGN0eDJEKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGRyYXdPbmNlKCkKK3sKKyAgICBm
b3IgKGxldCBjIG9mIGdscykgeworICAgICAgICBjLmVuYWJsZShjLlNDSVNTT1JfVEVTVCk7Cisg
ICAgICAgIGlmIChjLmdldENvbnRleHRBdHRyaWJ1dGVzKCkucHJlbXVsdGlwbGllZEFscGhhKQor
ICAgICAgICAgICAgYy5jbGVhckNvbG9yKDAuLCAwLjUsIDAuLCAwLjUpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBjLmNsZWFyQ29sb3IoMC4sIDEuLCAwLiwgMC41KTsKKyAgICAgICAgYy5z
Y2lzc29yKDAsIDAsIDMwMCwgNTApOworICAgICAgICBjLmNsZWFyKGMuQ09MT1JfQlVGRkVSX0JJ
VCk7CisKKyAgICAgICAgYy5zY2lzc29yKDEyNSwgNTAsIDUwLCA1MCk7CisgICAgICAgIGMuY2xl
YXJDb2xvcigwLiwgMS4sIDAuLCAxLik7CisgICAgICAgIGMuY2xlYXIoYy5DT0xPUl9CVUZGRVJf
QklUKTsKKyAgICAgICAgYy5zY2lzc29yKDAsIDAsIDMwMCwgNTApOworICAgICAgICBjLmNsZWFy
KGMuQ09MT1JfQlVGRkVSX0JJVCk7CisKKyAgICB9CisgICAgZm9yIChsZXQgYyBvZiBjdHgyRHMp
IHsKKyAgICAgICAgYy5maWxsU3R5bGUgPSAicmdiYSgwLCAxMjgsIDAsIDAuNSkiOworICAgICAg
ICBjLmZpbGxSZWN0KDAsIDEwMCwgMzAwLCA1MCk7CisgICAgICAgIGMuZmlsbFN0eWxlID0gInJn
YmEoMCwgMjU1LCAwLCAxLikiOworICAgICAgICBjLmZpbGxSZWN0KDEyNSwgNTAsIDUwLCA1MCk7
CisgICAgfQorfQorCitmdW5jdGlvbiBjbGVhck9uY2UoKQoreworICAgIGNvbnNvbGUubG9nKCJj
bGVhciIpOworICAgIGZvciAobGV0IGMgb2YgZ2xzKSB7CisgICAgICAgIGMuY2xlYXJDb2xvcigw
LiwgMC4sIDAuLCAwLik7CisgICAgICAgIGMuZGlzYWJsZShjLlNDSVNTT1JfVEVTVCk7CisgICAg
ICAgIGMuY2xlYXIoYy5DT0xPUl9CVUZGRVJfQklUKTsKKyAgICB9CisgICAgZm9yIChsZXQgYyBv
ZiBjdHgyRHMpIHsKKyAgICAgICAgYy5jbGVhclJlY3QoMCwgMCwgMzAwLCAxNTApOworICAgIH0K
K30KKwordmFyIGlzVG9nZ2xpbmcgPSBmYWxzZTsKKworZnVuY3Rpb24gdG9nZ2xlRHJhd2luZygp
Cit7CisgICAgaWYgKGlzVG9nZ2xpbmcpIHsKKyAgICAgICAgY2xlYXJUaW1lb3V0KGlzVG9nZ2xp
bmcpOworICAgICAgICBpc1RvZ2dsaW5nID0gZmFsc2U7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgdmFyIGhhc0RyYXduID0gdHJ1ZTsKKyAgICBmdW5jdGlvbiBmKCkgeworICAgICAgICBp
ZiAoaGFzRHJhd24pCisgICAgICAgICAgICBjbGVhck9uY2UoKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgZHJhd09uY2UoKTsKKyAgICAgICAgaGFzRHJhd24gPSAhaGFzRHJhd247CisgICAg
ICAgIGlzVG9nZ2xpbmcgPSBzZXRUaW1lb3V0KGYsIDEwMDApOworICAgIH0KKyAgICBmKCk7Cit9
CisKK2NyZWF0ZVRlc3RzKCk7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHdpbmRv
dy50ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0b2dnbGVEcmF3aW5nKCk7Cit9Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>