<?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>170325</bug_id>
          
          <creation_ts>2017-03-30 21:45:40 -0700</creation_ts>
          <short_desc>captureStream is getting black frames with webgl canvas</short_desc>
          <delta_ts>2020-07-22 11:25:30 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>211156</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1293088</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-03-30 21:45:40 -0700</bug_when>
    <thetext>captureStream is getting black frames with webgl canvas</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293089</commentid>
    <comment_count>1</comment_count>
      <attachid>305941</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-03-30 22:02:07 -0700</bug_when>
    <thetext>Created attachment 305941
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293090</commentid>
    <comment_count>2</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-03-30 22:03:06 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #0)
&gt; captureStream is getting black frames with webgl canvas

Regression is due to the timer introduced to not produce too many frames.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293188</commentid>
    <comment_count>3</comment_count>
      <attachid>305979</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-03-31 09:58:06 -0700</bug_when>
    <thetext>Created attachment 305979
Fixing release builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293325</commentid>
    <comment_count>4</comment_count>
      <attachid>305979</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-03-31 15:08:14 -0700</bug_when>
    <thetext>Comment on attachment 305979
Fixing release builds

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

&gt; Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp:136
&gt; +    if (canvas.renderingContext() &amp;&amp; canvas.renderingContext()-&gt;isWebGL())
&gt; +        static_cast&lt;WebGLRenderingContextBase*&gt;(canvas.renderingContext())-&gt;preserveDrawingBuffer();

Doing this does have a negative performance effect on the WebGL context. Maybe until we have the recording synced with the endPaint, we should print a warning to the console saying this might be slow (if the context wasn&apos;t already created with preserveDrawingBuffer = true)

&gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.h:210
&gt; +    void preserveDrawingBuffer() { m_attributes.preserveDrawingBuffer = true; }

I think this should be setPreserveDrawingBuffer(bool), with a preserveDrawingBuffer() getter.

&gt; Source/WebCore/testing/Internals.h:590
&gt; +    std::optional&lt;TrackFramePromise&gt; m_nextFramePromise;

Maybe m_nextTrackFramePromise?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293350</commentid>
    <comment_count>5</comment_count>
      <attachid>306023</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-03-31 16:08:56 -0700</bug_when>
    <thetext>Created attachment 306023
Updated according review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293651</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-04-03 08:57:25 -0700</bug_when>
    <thetext>(In reply to Dean Jackson from comment #4)
&gt; Comment on attachment 305979 [details]
&gt; Fixing release builds
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=305979&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp:136
&gt; &gt; +    if (canvas.renderingContext() &amp;&amp; canvas.renderingContext()-&gt;isWebGL())
&gt; &gt; +        static_cast&lt;WebGLRenderingContextBase*&gt;(canvas.renderingContext())-&gt;preserveDrawingBuffer();
&gt; 
&gt; Doing this does have a negative performance effect on the WebGL context.
&gt; Maybe until we have the recording synced with the endPaint, we should print
&gt; a warning to the console saying this might be slow (if the context wasn&apos;t
&gt; already created with preserveDrawingBuffer = true)

Added

&gt; 
&gt; &gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.h:210
&gt; &gt; +    void preserveDrawingBuffer() { m_attributes.preserveDrawingBuffer = true; }
&gt; 
&gt; I think this should be setPreserveDrawingBuffer(bool), with a
&gt; preserveDrawingBuffer() getter.

OK

&gt; &gt; Source/WebCore/testing/Internals.h:590
&gt; &gt; +    std::optional&lt;TrackFramePromise&gt; m_nextFramePromise;
&gt; 
&gt; Maybe m_nextTrackFramePromise?

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293654</commentid>
    <comment_count>7</comment_count>
      <attachid>306076</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-04-03 09:18:41 -0700</bug_when>
    <thetext>Created attachment 306076
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293655</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-04-03 09:19:45 -0700</bug_when>
    <thetext>Thanks for the review.

&gt; Doing this does have a negative performance effect on the WebGL context.
&gt; Maybe until we have the recording synced with the endPaint, we should print
&gt; a warning to the console saying this might be slow (if the context wasn&apos;t
&gt; already created with preserveDrawingBuffer = true)

I added the log message and added a test to cover &quot;preserveDrawingBuffer = true&quot; case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293664</commentid>
    <comment_count>9</comment_count>
      <attachid>306076</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-03 09:59:44 -0700</bug_when>
    <thetext>Comment on attachment 306076
Patch for landing

Clearing flags on attachment: 306076

Committed r214806: &lt;http://trac.webkit.org/changeset/214806&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293665</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-03 09:59:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305941</attachid>
            <date>2017-03-30 22:02:07 -0700</date>
            <delta_ts>2017-03-31 09:58:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170325-20170330220206.patch</filename>
            <type>text/plain</type>
            <size>29514</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmNjYWFjZTM0MjY4ZTA1
MjJlMGZkMWQxMWI1MjA3YzRiYTAzN2E5My4uZGFlY2VkY2RiYTNiOTJiYTFjZDE4YzAzY2M4MGU0
MTY0OGNhNWJjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDE3LTAzLTMwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBjYXB0dXJlU3RyZWFtIGlz
IGdldHRpbmcgYmxhY2sgZnJhbWVzIHdpdGggd2ViZ2wgY2FudmFzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzAzMjUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L21lZGlhc3RyZWFtL2Nh
cHR1cmVTdHJlYW0vY2FudmFzM2QuaHRtbAorCisgICAgICAgIENoYW5naW5nIHRoZSB3ZWJnbCBj
b250ZXh0IHRvIHNhdmUgYnVmZmVycyBpbiBjYXNlIHRoZSBjYW52YXMgaXMgY2FwdHVyZWQuCisg
ICAgICAgIEFkZGluZyBhIGNhbnZhcyBjaGFuZ2VkIG5vdGlmaWNhdGlvbiBpbiBjYXNlIG9mIGNs
ZWFyLgorICAgICAgICBJbiB0aGUgZnV0dXJlLCB3ZSBtaWdodCB3YW50IHRvIGNoYW5nZSB0aGlz
IG5vdGlmaWNhdGlvbiBhbmQgZG8gaXQgd2hlbiBlbmRQYWludCBvciBzaW1pbGFyIGlzIGNhbGxl
ZC4KKworICAgICAgICBBZGRpbmcgYW4gSW50ZXJuYWxzIEFQSSB0byBncmFiIHRoZSBSR0JBIGVx
dWl2YWxlbnQgb2YgdGhlIG5leHQgdHJhY2sgZnJhbWUuCisgICAgICAgIEZvciB0aGF0IHB1cnBv
c2UsIGFkZGluZyBhIGJ1bmNoIG9mIFdFQkNPUkVfRVhQT1JULgorCisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpTb3VyY2Up
OiBBZGRpbmcgY29uc3RyYWludHMgc3VwcG9ydCBzbyB0aGF0IHRyYWNrIHNldHRpbmdzCisgICAg
ICAgIGdldHRlciBhY3R1YWxseSB0cmFuc21pdHMgdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhl
IHNvdXJjZS4KKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNr
OjpTb3VyY2U6OmNhbnZhc0NoYW5nZWQpOiBlbnN1cmluZyB3ZWJnbCBjYW52YXMgY29udGV4dCBr
ZWVwIHRoZWlyIGRyYXdpbmcgYnVmZmVyLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFjay5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR3VhcmRlZE9i
amVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oOgorICAgICAgICAo
V2ViQ29yZTo6RGVmZXJyZWRQcm9taXNlOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRl
ZmVycmVkUHJvbWlzZTo6cmVqZWN0KToKKyAgICAgICAgKiBkb20vQWN0aXZlRE9NQ2FsbGJhY2su
aDoKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxDYW52YXNFbGVtZW50OjpjYXB0dXJlU3RyZWFtKToKKyAgICAgICAgKiBodG1sL0lt
YWdlRGF0YS5oOgorICAgICAgICAqIGh0bWwvSW1hZ2VEYXRhLmlkbDoKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpjbGVhcik6IGVuc3VyaW5nIGNhbnZhcyBvYnNlcnZlcnMgZ2V0
IG5vdGlmaWVkIGluIGNhc2Ugb2YgY2xlYXIgY2FsbHMuCisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6cHJlc2VydmVEcmF3aW5nQnVmZmVyKTogQWRkZWQgdG8gYWxsb3cg
Y2FudmFzIGNhcHR1cmUgdG8gdXBkYXRlIHRoaXMgcHJvcGVydHkuCisgICAgICAgICogcGxhdGZv
cm0vTWVkaWFTYW1wbGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpnZXRSR0JB
SW1hZ2VEYXRhKTogQWRkZWQgZm9yIGludGVybmFscyBBUEkuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2FtcGxlQVZGT2JqQy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6Z2V0UkdCQUltYWdlRGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOjpjb252ZXJ0KTog
SGVscGVyIHJvdXRpbmUgZm9yIGdldFJHQkFJbWFnZURhdGEuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oOgorICAgICAgICAoV2Vi
Q29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpzZXRTdXBwb3J0ZWRDb25zdHJhaW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OnNldFN1
cHBvcnRlZENvbnN0cmFpdHMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWTWVk
aWFDYXB0dXJlU291cmNlOjppbml0aWFsaXplU2V0dGluZ3MpOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVBdWRpb1NvdXJjZU93ci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVWaWRlb1NvdXJjZU93
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OmluaXRpYWxpemVT
ZXR0aW5ncyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxzOjpncmFiTmV4dE1lZGlhU3RyZWFtVHJhY2tGcmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKToKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwog
MjAxNy0wMy0yOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+IGFuZCBKb24gTGVl
IDxqb25sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIENsZWFuIHVwIFJUQ0RhdGFDaGFubmVsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1
cmVNZWRpYVN0cmVhbVRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwCmluZGV4IDY0NjJjNWIyNGE4NTNh
ZDAzMmU5ODk5NjM1YmJjMTdhZjFiZWRlMzYuLjVhZDkxMDgyNGE2Yjc3Mjk5YTg0NzUxYTFkNjEw
ZDZjYWY2ODk4MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwCkBA
IC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2su
aCIKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuaCIKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKQEAgLTY3LDYg
KzY4LDEwIEBAIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6OlNvdXJjZShI
VE1MQ2FudmFzRWxlbWVudCYgY2FudmFzLCBzdGQ6Om9wCiB7CiAgICAgbV9zZXR0aW5ncy5zZXRX
aWR0aChjYW52YXMud2lkdGgoKSk7CiAgICAgbV9zZXR0aW5ncy5zZXRIZWlnaHQoY2FudmFzLmhl
aWdodCgpKTsKKyAgICBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMgY29u
c3RyYWludHM7CisgICAgY29uc3RyYWludHMuc2V0U3VwcG9ydHNXaWR0aCh0cnVlKTsKKyAgICBj
b25zdHJhaW50cy5zZXRTdXBwb3J0c0hlaWdodCh0cnVlKTsKKyAgICBtX3NldHRpbmdzLnNldFN1
cHBvcnRlZENvbnN0cmFpbnRzKGNvbnN0cmFpbnRzKTsKIH0KIAogdm9pZCBDYW52YXNDYXB0dXJl
TWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQpAQCAtMTI0LDYg
KzEyOSwxMiBAQCB2b2lkIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6OmNh
bnZhc0NoYW5nZWQoSFRNTENhbnZhc0VsZW1lbnQmIGNhbgogewogICAgIEFTU0VSVF9VTlVTRUQo
Y2FudmFzLCBtX2NhbnZhcyA9PSAmY2FudmFzKTsKIAorICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRv
IHByZXNlcnZlIGRyYXdpbmcgYnVmZmVyIGFzIHdlIGFyZSBjdXJyZW50bHkgZ3JhYmJpbmcgZnJh
bWVzIGFzeW5jaHJvbm91c2x5LgorICAgIC8vIFdlIHNob3VsZCBpbnN0ZWFkIGFkZCBhbiBhbmNo
b3IgcG9pbnQgZm9yIGJvdGggMmQgYW5kIDNkIGNvbnRleHRzIHdoZXJlIGNhbnZhcyB3aWxsIGFj
dHVhbGx5IHBhaW50LgorICAgIC8vIEFuZCBjYWxsIGNhbnZhcyBvYnNlcnZlcnMgZnJvbSB0aGF0
IHBvaW50LgorICAgIGlmIChjYW52YXMucmVuZGVyaW5nQ29udGV4dCgpICYmIGNhbnZhcy5yZW5k
ZXJpbmdDb250ZXh0KCktPmlzV2ViR0woKSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSo+KGNhbnZhcy5yZW5kZXJpbmdDb250ZXh0KCkpLT5wcmVzZXJ2ZURy
YXdpbmdCdWZmZXIoKTsKKwogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdHJ5IHRvIGdlbmVyYXRl
IHRoZSBmcmFtZSBhdCB0aGUgdGltZSB0aGUgc2NyZWVuIGlzIGJlaW5nIHVwZGF0ZWQuCiAgICAg
aWYgKG1fY2FudmFzQ2hhbmdlZFRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFjay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRy
YWNrLmgKaW5kZXggMDI3MThjZDk1ZmI3MTdmZTNjMGI3MGFhMDIzMzhiMGJhMGJhMTk1NC4uNWEw
OTgwMDNhM2ZmNTk3NDA1NjEzYmY2YmJiNTAzYTIyNDdjOWZkYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgKQEAgLTg5
LDcgKzg5LDcgQEAgcHVibGljOgogICAgICAgICBTdHJpbmcgZGV2aWNlSWQ7CiAgICAgICAgIFN0
cmluZyBncm91cElkOwogICAgIH07Ci0gICAgVHJhY2tTZXR0aW5ncyBnZXRTZXR0aW5ncygpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFRyYWNrU2V0dGluZ3MgZ2V0U2V0dGluZ3MoKSBjb25z
dDsKIAogICAgIHN0cnVjdCBUcmFja0NhcGFiaWxpdGllcyB7CiAgICAgICAgIHN0ZDo6b3B0aW9u
YWw8TG9uZ1JhbmdlPiB3aWR0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NR3VhcmRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01HdWFyZGVkT2JqZWN0LmgKaW5kZXggNzg1YzVkMTYwNjNiYjAxMTNhODY2YzcxNjBhNDY5MmMy
ZTg4MzU1Zi4uOGJmNDU5MTMxZDNlNjc0Yzk3YTY5NjkyMjdjYzNhZWJhNzc3MWZkNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HdWFyZGVkT2JqZWN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HdWFyZGVkT2JqZWN0LmgKQEAgLTMz
LDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBET01HdWFyZGVkT2Jq
ZWN0IDogcHVibGljIFJlZkNvdW50ZWQ8RE9NR3VhcmRlZE9iamVjdD4sIHB1YmxpYyBBY3RpdmVE
T01DYWxsYmFjayB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBET01HdWFyZGVkT2JqZWN0IDogcHVi
bGljIFJlZkNvdW50ZWQ8RE9NR3VhcmRlZE9iamVjdD4sIHB1YmxpYyBBY3RpdmVET01DYWxsYmFj
ayB7CiBwdWJsaWM6CiAgICAgfkRPTUd1YXJkZWRPYmplY3QoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaAppbmRleCBjMTg0YjhmM2Y3OGMzYjhiMzc5MTczNWE0
MGZiOTc4ZWI5MTEwMWZlLi4xNzAyN2YwNTE5OTQ3MDZmOWFjNDQxZDJmYmI0ZmRlODllMWFjYzM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaApAQCAtNTAsNyAr
NTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJlc29sdmUoKmV4ZWMsIHRvSlM8SURMVHlwZT4oKmV4
ZWMsICpnbG9iYWxPYmplY3QoKSwgc3RkOjpmb3J3YXJkPHR5cGVuYW1lIElETFR5cGU6OlBhcmFt
ZXRlclR5cGU+KHZhbHVlKSkpOwogICAgIH0KIAotICAgIHZvaWQgcmVzb2x2ZSgpCisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCByZXNvbHZlKCkKICAgICB7CiAgICAgICAgIGlmIChpc1N1c3BlbmRl
ZCgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCByZWplY3QoKTsKICAgICB2b2lkIHJlamVjdChzdGQ6Om51bGxwdHJfdCk7CiAgICAgdm9p
ZCByZWplY3QoRXhjZXB0aW9uJiYpOwotICAgIHZvaWQgcmVqZWN0KEV4Y2VwdGlvbkNvZGUsIGNv
bnN0IFN0cmluZyYgPSB7IH0pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVqZWN0KEV4Y2Vw
dGlvbkNvZGUsIGNvbnN0IFN0cmluZyYgPSB7IH0pOwogICAgIHZvaWQgcmVqZWN0KGNvbnN0IEpT
Qzo6UHJpdmF0ZU5hbWUmKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxiYWNrPgpAQCAt
MTIyLDcgKzEyMiw3IEBAIHByaXZhdGU6CiAKICAgICBKU0M6OkpTUHJvbWlzZURlZmVycmVkKiBk
ZWZlcnJlZCgpIGNvbnN0IHsgcmV0dXJuIGd1YXJkZWQoKTsgfQogCi0gICAgdm9pZCBjYWxsRnVu
Y3Rpb24oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb24sIEpTQzo6SlNWYWx1
ZSByZXNvbHV0aW9uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNhbGxGdW5jdGlvbihKU0M6
OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbiwgSlNDOjpKU1ZhbHVlIHJlc29sdXRp
b24pOwogICAgIHZvaWQgcmVzb2x2ZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1
ZSByZXNvbHV0aW9uKSB7IGNhbGxGdW5jdGlvbihzdGF0ZSwgZGVmZXJyZWQoKS0+cmVzb2x2ZSgp
LCByZXNvbHV0aW9uKTsgfQogICAgIHZvaWQgcmVqZWN0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwg
SlNDOjpKU1ZhbHVlIHJlc29sdXRpb24pIHsgY2FsbEZ1bmN0aW9uKHN0YXRlLCBkZWZlcnJlZCgp
LT5yZWplY3QoKSwgcmVzb2x1dGlvbik7IH0KIH07CkBAIC0yMTIsNyArMjEyLDcgQEAgUmVmPERl
ZmVycmVkUHJvbWlzZT4gY3JlYXRlRGVmZXJyZWRQcm9taXNlKEpTQzo6RXhlY1N0YXRlJiwgSlNE
T01XaW5kb3cmKTsKIHZvaWQgZnVsZmlsbFByb21pc2VXaXRoSlNPTihSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmLCBjb25zdCBTdHJpbmcmKTsKIHZvaWQgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZm
ZXIoUmVmPERlZmVycmVkUHJvbWlzZT4mJiwgQXJyYXlCdWZmZXIqKTsKIHZvaWQgZnVsZmlsbFBy
b21pc2VXaXRoQXJyYXlCdWZmZXIoUmVmPERlZmVycmVkUHJvbWlzZT4mJiwgY29uc3Qgdm9pZCos
IHNpemVfdCk7Ci12b2lkIHJlamVjdFByb21pc2VXaXRoRXhjZXB0aW9uSWZBbnkoSlNDOjpFeGVj
U3RhdGUmLCBKU0RPTUdsb2JhbE9iamVjdCYsIEpTQzo6SlNQcm9taXNlRGVmZXJyZWQmKTsKK1dF
QkNPUkVfRVhQT1JUIHZvaWQgcmVqZWN0UHJvbWlzZVdpdGhFeGNlcHRpb25JZkFueShKU0M6OkV4
ZWNTdGF0ZSYsIEpTRE9NR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1Byb21pc2VEZWZlcnJlZCYpOwog
SlNDOjpFbmNvZGVkSlNWYWx1ZSBjcmVhdGVSZWplY3RlZFByb21pc2VXaXRoVHlwZUVycm9yKEpT
Qzo6RXhlY1N0YXRlJiwgY29uc3QgU3RyaW5nJik7CiAKIHVzaW5nIFByb21pc2VGdW5jdGlvbiA9
IHZvaWQoSlNDOjpFeGVjU3RhdGUmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01DYWxsYmFjay5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0FjdGl2ZURPTUNhbGxiYWNrLmgKaW5kZXggNTY2YjQwYTFmMzZkZmI2NDRhYzY3NGQ0
OTU4MzRiZTQwYTI4MmVlYy4uMDQyODAyZDE4NzI3YTVlZThmMTE3MGQxMTdiODQwNTU5YzJhYTAz
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTUNhbGxiYWNrLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTUNhbGxiYWNrLmgKQEAgLTQ2LDcgKzQ2LDcg
QEAgcHVibGljOgogICAgIEFjdGl2ZURPTUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQpOwogICAgIHZpcnR1YWwgfkFjdGl2ZURPTUNhbGxiYWNrKCk7CiAKLSAgICBib29s
IGNhbkludm9rZUNhbGxiYWNrKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjYW5J
bnZva2VDYWxsYmFjaygpIGNvbnN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRleCA3ZDI5YWJhNzA4NzEy
Y2Q0NmQ4ZGUzNGEyYmY0MDBmNDYzZTA4MzJhLi41ODcxMjFiNWY2OTMyYWE2ZDAwNmEyYzA2ZGY3
ZTk4NDYzYWJlZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNw
cApAQCAtNjAzLDcgKzYwMyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxNZWRpYVN0cmVhbT4+IEhUTUxD
YW52YXNFbGVtZW50OjpjYXB0dXJlU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvCiAKICAgICBpZiAo
ZnJhbWVSZXF1ZXN0UmF0ZSAmJiBmcmFtZVJlcXVlc3RSYXRlLnZhbHVlKCkgPCAwKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uKE5PVF9TVVBQT1JURURfRVJSLCBBU0NJSUxpdGVyYWwoImZyYW1l
UmVxdWVzdFJhdGUgaXMgbmVnYXRpdmUiKSk7Ci0gICAgCisKICAgICBhdXRvIHRyYWNrID0gQ2Fu
dmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZShjb250ZXh0LCAqdGhpcywgV1RGTW92
ZShmcmFtZVJlcXVlc3RSYXRlKSk7CiAgICAgYXV0byBzdHJlYW0gPSAgTWVkaWFTdHJlYW06OmNy
ZWF0ZShjb250ZXh0KTsKICAgICBzdHJlYW0tPmFkZFRyYWNrKHRyYWNrKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lt
YWdlRGF0YS5oCmluZGV4IDZiODY3NjgwODQxZGEyZDE5ODgxZWE1ZWMwOWM0YTgzOTU5ZDYzMWQu
LjdiZjEzNWM3OWE0OGFiZmMyMDNkMGZjMWQ2N2ZiOTU0ZWUwZThjNzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9J
bWFnZURhdGEuaApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIEltYWdlRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPEltYWdlRGF0YT4geworY2xhc3MgV0VC
Q09SRV9FWFBPUlQgSW1hZ2VEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8SW1hZ2VEYXRhPiB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBjcmVhdGUodW5z
aWduZWQgc3csIHVuc2lnbmVkIHNoKTsKICAgICBzdGF0aWMgUmVmUHRyPEltYWdlRGF0YT4gY3Jl
YXRlKGNvbnN0IEludFNpemUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1h
Z2VEYXRhLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmlkbAppbmRleCAzNzY3
NWU0ZmE0Y2NlZTdkYWE4Mzg2YjYzN2JkNWE4MzhmNDAxYWExLi41ZTNmZGM5MmNhZmQwYThkZDVi
ODI3NTE2ZGJhNzcwYTA5ODVhOGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lt
YWdlRGF0YS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaWRsCkBAIC0z
MSw2ICszMSw3IEBACiAgICAgQ29uc3RydWN0b3IodW5zaWduZWQgbG9uZyBzdywgdW5zaWduZWQg
bG9uZyBzaCksCiAgICAgQ29uc3RydWN0b3JNYXlUaHJvd0V4Y2VwdGlvbiwKICAgICBDdXN0b21U
b0pTT2JqZWN0LAorICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAogICAgIEV4cG9zZWQ9
KFdpbmRvdyxXb3JrZXIpLAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGludGVy
ZmFjZSBJbWFnZURhdGEgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggYjU2ZDgxZjgzOGJiZTFiMDA3YzMzMjQ5ZTY2
MzA3ODM1OWRlMTQ1Yi4uODFmMTU1MjAxODA0MGY5MDVkZmZmNDU4MWM4M2I1MjUwYjBjMTQxNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuY3BwCkBAIC00NzAsNyArNDcwLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmNsZWFyKEdDM0RiaXRmaWVsZCBtYXNrKQogICAgIH0KICAgICBpZiAoIWNsZWFySWZDb21wb3Np
dGVkKG1hc2spKQogICAgICAgICBtX2NvbnRleHQtPmNsZWFyKG1hc2spOwotICAgIG1hcmtDb250
ZXh0Q2hhbmdlZCgpOworICAgIG1hcmtDb250ZXh0Q2hhbmdlZEFuZE5vdGlmeUNhbnZhc09ic2Vy
dmVyKCk7CiB9CiAKIFdlYkdMQW55IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVy
KEdDM0RlbnVtIHBuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IGVhN2VmNDNkNGU5ZTExNGViZDgwN2I4
OTRmNTQ0NWQyMmJmNDgyZjYuLjdmODIzODhhMGY5Y2ExNDRmNTQ1MTMxODdlOWViYTcwMTZjMGQw
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmgKQEAgLTIwNyw2ICsyMDcsOCBAQCBwdWJsaWM6CiAgICAgV2ViR0xB
bnkgZ2V0VmVydGV4QXR0cmliKEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwbmFtZSk7CiAgICAg
bG9uZyBsb25nIGdldFZlcnRleEF0dHJpYk9mZnNldChHQzNEdWludCBpbmRleCwgR0MzRGVudW0g
cG5hbWUpOwogCisgICAgdm9pZCBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKSB7IG1fYXR0cmlidXRl
cy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIgPSB0cnVlOyB9CisKICAgICB2aXJ0dWFsIHZvaWQgaGlu
dChHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIG1vZGUpID0gMDsKICAgICBHQzNEYm9vbGVhbiBp
c0J1ZmZlcihXZWJHTEJ1ZmZlciopOwogICAgIGJvb2wgaXNDb250ZXh0TG9zdCgpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgKaW5kZXggZThhN2I1ODVhZDFjMmNhMDBm
OWM2ZGM4ZjJlMjMzODZkN2I4ZTk2Yi4uNTMyMTI0MDc2ZWFhMGNmZDZkYWI5ZTBkMDNlNDdiNjZl
NDY4NTM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCkBAIC0yNyw2ICsy
Nyw3IEBACiAjZGVmaW5lIE1lZGlhU2FtcGxlX2gKIAogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgor
I2luY2x1ZGUgPHJ1bnRpbWUvVHlwZWRBcnJheXMuaD4KICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1l
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
aWNTdHJpbmcuaD4KQEAgLTY5LDYgKzcwLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgc3RkOjpw
YWlyPFJlZlB0cjxNZWRpYVNhbXBsZT4sIFJlZlB0cjxNZWRpYVNhbXBsZT4+IGRpdmlkZShjb25z
dCBNZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUpID0gMDsKICAgICB2aXJ0dWFsIFJlZjxNZWRp
YVNhbXBsZT4gY3JlYXRlTm9uRGlzcGxheWluZ0NvcHkoKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0
dWFsIFJlZlB0cjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRSR0JBSW1hZ2VEYXRhKCkgY29u
c3QgeyByZXR1cm4gbnVsbHB0cjsgfQorCiAgICAgZW51bSBTYW1wbGVGbGFncyB7CiAgICAgICAg
IE5vbmUgPSAwLAogICAgICAgICBJc1N5bmMgPSAxIDw8IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFTYW1wbGVBVkZPYmpD
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFT
YW1wbGVBVkZPYmpDLmgKaW5kZXggZmNkYjYxZTQxYzJhZmZhZjNmYWE2ZDJkZmJhODg2MjQ4MWMx
MzhhYy4uYmEzZGNiYjZkOGFjYmJkNjhjZjRhMzkwNWExMjI5NDhiYzM0NDZmZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2Ft
cGxlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9NZWRpYVNhbXBsZUFWRk9iakMuaApAQCAtNDEsNiArNDEsOCBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZlB0cjxNZWRpYVNhbXBsZUFWRk9iakM+IGNyZWF0ZUltYWdlU2FtcGxlKFJl
ZjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiYmLCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25l
ZCBsb25nIGhlaWdodCk7CiAgICAgc3RhdGljIFJlZlB0cjxNZWRpYVNhbXBsZUFWRk9iakM+IGNy
ZWF0ZUltYWdlU2FtcGxlKFZlY3Rvcjx1aW50OF90PiYmLCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1
bnNpZ25lZCBsb25nIGhlaWdodCk7CiAKKyAgICBSZWZQdHI8SlNDOjpVaW50OENsYW1wZWRBcnJh
eT4gZ2V0UkdCQUltYWdlRGF0YSgpIGNvbnN0IGZpbmFsOworCiBwcml2YXRlOgogICAgIE1lZGlh
U2FtcGxlQVZGT2JqQyhDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGUpCiAgICAgICAgIDogbV9zYW1w
bGUoc2FtcGxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1t
CmluZGV4IDExNThiYzUyOTFkYWVhMDllMzdiM2MyMjJjYzg1OTIzODAxNDFjZmIuLjE2ZDc1YmE5
OTdjOGY1ZDFkNzIwMjI4YzdmYzdkNjQ3MjlhZDJkNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2Jq
Qy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNv
bmZpZy5oIgogI2ltcG9ydCAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCiAKKyNpbXBvcnQgIlBpeGVs
QnVmZmVyQ29uZm9ybWVyQ1YuaCIKICNpbXBvcnQgPHd0Zi9QcmludFN0cmVhbS5oPgogCiAjaW1w
b3J0ICJDb3JlTWVkaWFTb2Z0TGluay5oIgpAQCAtMjY1LDQgKzI2NiwyOCBAQCBSZWY8TWVkaWFT
YW1wbGU+IE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlTm9uRGlzcGxheWluZ0NvcHkoKSBjb25z
dAogICAgIHJldHVybiBNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZShhZG9wdENGKG5ld1NhbXBs
ZUJ1ZmZlcikuZ2V0KCksIG1faWQpOwogfQogCitSZWZQdHI8SlNDOjpVaW50OENsYW1wZWRBcnJh
eT4gTWVkaWFTYW1wbGVBVkZPYmpDOjpnZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3QKK3sKKyAgICBj
b25zdCBPU1R5cGUgaW1hZ2VGb3JtYXQgPSBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJSR0JBOworICAg
IFJldGFpblB0cjxDRk51bWJlclJlZj4gaW1hZ2VGb3JtYXROdW1iZXIgPSBhZG9wdENGKENGTnVt
YmVyQ3JlYXRlKG51bGxwdHIsICBrQ0ZOdW1iZXJJbnRUeXBlLCAgJmltYWdlRm9ybWF0KSk7CisK
KyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gY29uZm9ybWVyT3B0aW9ucyA9
IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAxLCAma0NGVHlwZURpY3Rpb25h
cnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAg
Q0ZEaWN0aW9uYXJ5U2V0VmFsdWUoY29uZm9ybWVyT3B0aW9ucy5nZXQoKSwga0NWUGl4ZWxCdWZm
ZXJQaXhlbEZvcm1hdFR5cGVLZXksIGltYWdlRm9ybWF0TnVtYmVyLmdldCgpKTsKKyAgICBQaXhl
bEJ1ZmZlckNvbmZvcm1lckNWIHBpeGVsQnVmZmVyQ29uZm9ybWVyKGNvbmZvcm1lck9wdGlvbnMu
Z2V0KCkpOworCisgICAgYXV0byBwaXhlbEJ1ZmZlciA9IHN0YXRpY19jYXN0PENWUGl4ZWxCdWZm
ZXJSZWY+KENNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIobV9zYW1wbGUuZ2V0KCkpKTsKKyAg
ICBhdXRvIHJnYmFQaXhlbEJ1ZmZlciA9IHBpeGVsQnVmZmVyQ29uZm9ybWVyLmNvbnZlcnQocGl4
ZWxCdWZmZXIpOworICAgIGF1dG8gc3RhdHVzID0gQ1ZQaXhlbEJ1ZmZlckxvY2tCYXNlQWRkcmVz
cyhyZ2JhUGl4ZWxCdWZmZXIuZ2V0KCksIGtDVlBpeGVsQnVmZmVyTG9ja19SZWFkT25seSk7Cisg
ICAgQVNTRVJUKHN0YXR1cyA9PSBub0Vycik7CisKKyAgICB2b2lkKiBkYXRhID0gQ1ZQaXhlbEJ1
ZmZlckdldEJhc2VBZGRyZXNzT2ZQbGFuZShyZ2JhUGl4ZWxCdWZmZXIuZ2V0KCksIDApOworICAg
IHNpemVfdCBieXRlTGVuZ3RoID0gQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodChwaXhlbEJ1ZmZlcikg
KiBDVlBpeGVsQnVmZmVyR2V0V2lkdGgocGl4ZWxCdWZmZXIpICogNDsKKyAgICBhdXRvIHJlc3Vs
dCA9IEpTQzo6VWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShKU0M6OkFycmF5QnVmZmVyOjpjcmVh
dGUoZGF0YSwgYnl0ZUxlbmd0aCksIDAsIGJ5dGVMZW5ndGgpOworCisgICAgc3RhdHVzID0gQ1ZQ
aXhlbEJ1ZmZlclVubG9ja0Jhc2VBZGRyZXNzKHJnYmFQaXhlbEJ1ZmZlci5nZXQoKSwga0NWUGl4
ZWxCdWZmZXJMb2NrX1JlYWRPbmx5KTsKKyAgICBBU1NFUlQoc3RhdHVzID09IG5vRXJyKTsKKwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5jcHAKaW5k
ZXggMGI2NDdlZmY5ZDFkMzI1NWQ2YzBkNjA2OGMzMDhmYjgxYmQzOTJmMC4uODJjMWQ1NmRiZDIw
NzM1NThjYzZmZDQ2MGM5NDBlNDEzMzgwZDg1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5j
cHAKQEAgLTcyLDYgKzcyLDI0IEBAIHN0YXRpYyB2b2lkIENWUGl4ZWxCdWZmZXJSZWxlYXNlSW5m
b0NhbGxiYWNrKHZvaWQqIGluZm8pCiAgICAgQ0ZSZWxlYXNlKHBpeGVsQnVmZmVyKTsKIH0KIAor
UmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y6OmNvbnZl
cnQoQ1ZQaXhlbEJ1ZmZlclJlZiByYXdCdWZmZXIpCit7CisjaWYgVVNFKFZJREVPVE9PTEJPWCkK
KyAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gYnVmZmVyIHsgcmF3QnVmZmVyIH07CisK
KyAgICBpZiAoIVZUUGl4ZWxCdWZmZXJDb25mb3JtZXJJc0NvbmZvcm1hbnRQaXhlbEJ1ZmZlciht
X3BpeGVsQ29uZm9ybWVyLmdldCgpLCBidWZmZXIuZ2V0KCkpKSB7CisgICAgICAgIENWUGl4ZWxC
dWZmZXJSZWYgb3V0cHV0QnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgT1NTdGF0dXMgc3RhdHVz
ID0gVlRQaXhlbEJ1ZmZlckNvbmZvcm1lckNvcHlDb25mb3JtZWRQaXhlbEJ1ZmZlcihtX3BpeGVs
Q29uZm9ybWVyLmdldCgpLCBidWZmZXIuZ2V0KCksIGZhbHNlLCAmb3V0cHV0QnVmZmVyKTsKKyAg
ICAgICAgaWYgKHN0YXR1cyAhPSBub0VyciB8fCAhb3V0cHV0QnVmZmVyKQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBhZG9wdENGKG91dHB1dEJ1ZmZlcik7Cisg
ICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmF3QnVmZmVyKTsKKyNlbmRpZgorICAgIHJl
dHVybiBudWxscHRyOworfQorCiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gUGl4ZWxCdWZmZXJDb25m
b3JtZXJDVjo6Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZiByYXdC
dWZmZXIpCiB7CiAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IGJ1ZmZlciB7IHJhd0J1
ZmZlciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3Yv
UGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oCmluZGV4IDc2ZWE4MWIyMDcxMDcwODIyYmRh
OGE4OGRiY2Y1NmZjNTIyZWU5YzAuLmQxN2JiM2MyMzI4NWMwOTQ2NjI1ZWU3YmRjNzBlYzIzNDFh
NjllYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1Bp
eGVsQnVmZmVyQ29uZm9ybWVyQ1YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgUGl4ZWxCdWZmZXJDb25mb3JtZXJDViB7CiBwdWJsaWM6CiAg
ICAgUGl4ZWxCdWZmZXJDb25mb3JtZXJDVihDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRlcyk7Cisg
ICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IGNvbnZlcnQoQ1ZQaXhlbEJ1ZmZlclJlZik7
CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVyKENW
UGl4ZWxCdWZmZXJSZWYpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MuaAppbmRleCBiNjEyZTMyNmE4ZTNiYzdlNmU3YmNkNmM0NGZiZTAxMDMxOTFmZDY3Li41YTRj
OWE1Mzc3YzBiMmNkNTJlZjQ1YjViMjZmNGI2MWExODNhNjU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3Mu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3MuaApAQCAtOTIsNyArOTIsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiBncm91cElkKCkgY29uc3QgeyByZXR1cm4gbV9ncm91cElkOyB9CiAgICAgdm9p
ZCBzZXRHcm91cElkKGNvbnN0IEF0b21pY1N0cmluZyYgZ3JvdXBJZCkgeyBtX2dyb3VwSWQgPSBn
cm91cElkOyB9CiAKLSAgICB2b2lkIHNldFN1cHBvcnRlZENvbnN0cmFpdHMoY29uc3QgUmVhbHRp
bWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJiBzdXBwb3J0ZWRDb25zdHJhaW50cykg
eyBtX3N1cHBvcnRlZENvbnN0cmFpbnRzID0gc3VwcG9ydGVkQ29uc3RyYWludHM7IH0KKyAgICB2
b2lkIHNldFN1cHBvcnRlZENvbnN0cmFpbnRzKGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBw
b3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMpIHsgbV9zdXBwb3J0ZWRDb25z
dHJhaW50cyA9IHN1cHBvcnRlZENvbnN0cmFpbnRzOyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbQppbmRleCBkZTJmOGNiNjEy
MGY2NWVkN2ZlYjBiMWZkOWQ4YzNmMmJjN2Y3NzJmLi41NjY4YWEwMTY5NDdhZDBjMDRjMTgzNWQ5
M2EzNzQ3OWY0OGMzMDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tCkBAIC0yMDQs
NyArMjA0LDcgQEAgdm9pZCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6Y29tbWl0Q29uZmlndXJhdGlv
bigpCiB2b2lkIEFWTWVkaWFDYXB0dXJlU291cmNlOjppbml0aWFsaXplU2V0dGluZ3MoKQogewog
ICAgIGlmIChtX2N1cnJlbnRTZXR0aW5ncy5kZXZpY2VJZCgpLmlzRW1wdHkoKSkKLSAgICAgICAg
bV9jdXJyZW50U2V0dGluZ3Muc2V0U3VwcG9ydGVkQ29uc3RyYWl0cyhzdXBwb3J0ZWRDb25zdHJh
aW50cygpKTsKKyAgICAgICAgbV9jdXJyZW50U2V0dGluZ3Muc2V0U3VwcG9ydGVkQ29uc3RyYWlu
dHMoc3VwcG9ydGVkQ29uc3RyYWludHMoKSk7CiAKICAgICBtX2N1cnJlbnRTZXR0aW5ncy5zZXRE
ZXZpY2VJZChpZCgpKTsKICAgICB1cGRhdGVTZXR0aW5ncyhtX2N1cnJlbnRTZXR0aW5ncyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRj
L1JlYWx0aW1lQXVkaW9Tb3VyY2VPd3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVBdWRpb1NvdXJjZU93ci5oCmluZGV4IDIzNDlmMDUx
YjBmMzZjMzQ0MzhlNDMyZmE3MzhiMjEwN2U5NDkyOTguLmNhYjcwNTA4NGI5NGNmYzhlN2IxOWY3
ZDdlODIzMjY4Y2JjZWY0NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVBdWRpb1NvdXJjZU93ci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVBdWRpb1Nv
dXJjZU93ci5oCkBAIC01OSw3ICs1OSw3IEBAIFJlYWx0aW1lQXVkaW9Tb3VyY2VPd3IoY29uc3Qg
U3RyaW5nJiBpZCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBTCiBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCBpbml0aWFsaXplU2V0dGluZ3MoKSBmaW5hbCB7CiAgICAgICAgIGlm
IChtX2N1cnJlbnRTZXR0aW5ncy5kZXZpY2VJZCgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1f
Y3VycmVudFNldHRpbmdzLnNldFN1cHBvcnRlZENvbnN0cmFpdHMoc3VwcG9ydGVkQ29uc3RyYWlu
dHMoKSk7CisgICAgICAgICAgICBtX2N1cnJlbnRTZXR0aW5ncy5zZXRTdXBwb3J0ZWRDb25zdHJh
aW50cyhzdXBwb3J0ZWRDb25zdHJhaW50cygpKTsKIAogICAgICAgICBtX2N1cnJlbnRTZXR0aW5n
cy5zZXREZXZpY2VJZChpZCgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lVmlkZW9Tb3VyY2VPd3IuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVW
aWRlb1NvdXJjZU93ci5oCmluZGV4IGRjNjZhM2UyYjk2MTM2MGU4ODZiM2QwNmNiZWQ5MTMxMzJm
YjE0NTQuLjQxOGVmODRhNzFhNTczNDdlODVkMzUyODM2OWUyNzljN2E2NmY0NTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRp
bWVWaWRlb1NvdXJjZU93ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL29wZW53ZWJydGMvUmVhbHRpbWVWaWRlb1NvdXJjZU93ci5oCkBAIC01OSw3ICs1OSw3IEBA
IFJlYWx0aW1lVmlkZW9Tb3VyY2VPd3IoY29uc3QgU3RyaW5nJiBpZCwgUmVhbHRpbWVNZWRpYVNv
dXJjZTo6VHlwZSB0eXBlLCBjb25zdCBTCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBpbml0aWFsaXpl
U2V0dGluZ3MoKSBmaW5hbCB7CiAgICAgICAgIGlmIChtX2N1cnJlbnRTZXR0aW5ncy5kZXZpY2VJ
ZCgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1fY3VycmVudFNldHRpbmdzLnNldFN1cHBvcnRl
ZENvbnN0cmFpdHMoc3VwcG9ydGVkQ29uc3RyYWludHMoKSk7CisgICAgICAgICAgICBtX2N1cnJl
bnRTZXR0aW5ncy5zZXRTdXBwb3J0ZWRDb25zdHJhaW50cyhzdXBwb3J0ZWRDb25zdHJhaW50cygp
KTsKIAogICAgICAgICBtX2N1cnJlbnRTZXR0aW5ncy5zZXREZXZpY2VJZChpZCgpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlh
U291cmNlLmNwcAppbmRleCA3N2M5NzE0OGExMDczZmZmYWZhMDZjYjAzOTk5NDBmODU0ZjZiMmQ4
Li43NzkwY2U5ZTJiOTVkNWFlZTM2YzE3NTg1MWEzZmY5ODI5MWUxY2M4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNl
LmNwcApAQCAtOTgsNyArOTgsNyBAQCBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxp
dGllcz4gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OmNhcGFiaWxpdGllcygpCiB2b2lkIE1vY2tS
ZWFsdGltZU1lZGlhU291cmNlOjppbml0aWFsaXplU2V0dGluZ3MoKQogewogICAgIGlmIChtX2N1
cnJlbnRTZXR0aW5ncy5kZXZpY2VJZCgpLmlzRW1wdHkoKSkgewotICAgICAgICBtX2N1cnJlbnRT
ZXR0aW5ncy5zZXRTdXBwb3J0ZWRDb25zdHJhaXRzKHN1cHBvcnRlZENvbnN0cmFpbnRzKCkpOwor
ICAgICAgICBtX2N1cnJlbnRTZXR0aW5ncy5zZXRTdXBwb3J0ZWRDb25zdHJhaW50cyhzdXBwb3J0
ZWRDb25zdHJhaW50cygpKTsKICAgICAgICAgbV9jdXJyZW50U2V0dGluZ3Muc2V0RGV2aWNlSWQo
aWQoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggMDFl
ZWNiODdjODFlNjliMTAxZmE0NThjOTMwZjZjMjVkNzkyMjQ5NC4uMzk0ZDg4N2ZlMTRjODZhMjQz
ZjQ2M2U0ODk1MmUxNWM4Zjk4MTIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cApAQCAtODQsNiArODQsNyBAQAogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNp
bmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50ZXJuYWxTZXR0aW5ncy5oIgorI2luY2x1
ZGUgIkpTSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKICNpbmNsdWRlICJMaWJX
ZWJSVENQcm92aWRlci5oIgogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgpAQCAtMzg3MSw2ICszODcy
LDMzIEBAIHZvaWQgSW50ZXJuYWxzOjpvYnNlcnZlTWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVh
bVRyYWNrJiB0cmFjaykKICAgICBtX3RyYWNrID0gJnRyYWNrOwogICAgIG1fdHJhY2stPnNvdXJj
ZSgpLmFkZE9ic2VydmVyKCp0aGlzKTsKIH0KKwordm9pZCBJbnRlcm5hbHM6OmdyYWJOZXh0TWVk
aWFTdHJlYW1UcmFja0ZyYW1lKFRyYWNrRnJhbWVQcm9taXNlJiYgcHJvbWlzZSkKK3sKKyAgICBt
X25leHRGcmFtZVByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpOworfQorCit2b2lkIEludGVybmFs
czo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKK3sKKyAgICBtX3Ry
YWNrVmlkZW9TYW1wbGVDb3VudCsrOworICAgIGlmICghbV9uZXh0RnJhbWVQcm9taXNlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBhdXRvIHZpZGVvU2V0dGluZ3MgPSBtX3RyYWNrLT5nZXRTZXR0
aW5ncygpOworICAgIGlmICghdmlkZW9TZXR0aW5ncy53aWR0aCB8fCAhdmlkZW9TZXR0aW5ncy5o
ZWlnaHQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gcmdiYSA9IHNhbXBsZS5nZXRSR0JB
SW1hZ2VEYXRhKCk7CisgICAgaWYgKCFyZ2JhKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBp
bWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShyZ2JhLnJlbGVhc2VOb25OdWxsKCksICp2aWRl
b1NldHRpbmdzLndpZHRoLCAqdmlkZW9TZXR0aW5ncy5oZWlnaHQpOworICAgIGlmICghaW1hZ2VE
YXRhLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICBtX25leHRGcmFtZVByb21pc2UtPnJlc29sdmUo
aW1hZ2VEYXRhLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLnJlbGVhc2VOb25OdWxsKCkpOworICAgIGVs
c2UKKyAgICAgICAgbV9uZXh0RnJhbWVQcm9taXNlLT5yZWplY3QoaW1hZ2VEYXRhLmV4Y2VwdGlv
bigpLmNvZGUoKSk7CisgICAgbV9uZXh0RnJhbWVQcm9taXNlID0gc3RkOjpudWxsb3B0OworfQor
CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgKaW5kZXggZDY3YmM2MTRjN2Q1ZGExZDNmNTUwMDk1M2ViYjk5ZmE2NDFjZjE5Yi4uMmQ0
OTlmNTgyYmY5YjcxYmE3YzEyYTAyYjU5OWE3Y2MwZjJmY2QwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oCkBAIC0yOSw5ICsyOSwxMSBAQAogI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgi
CiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKICNp
bmNsdWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3Vy
Y2UuaCIKICNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi9P
cHRpb25hbC5oPgogCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCiAjaW5jbHVkZSAiTWVkaWFT
ZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXIuaCIKQEAgLTU0LDYgKzU2LDcgQEAgY2xhc3MgSFRN
TElucHV0RWxlbWVudDsKIGNsYXNzIEhUTUxMaW5rRWxlbWVudDsKIGNsYXNzIEhUTUxNZWRpYUVs
ZW1lbnQ7CiBjbGFzcyBIVE1MU2VsZWN0RWxlbWVudDsKK2NsYXNzIEltYWdlRGF0YTsKIGNsYXNz
IEluc3BlY3RvclN0dWJGcm9udGVuZDsKIGNsYXNzIEludGVybmFsU2V0dGluZ3M7CiBjbGFzcyBN
YWxsb2NTdGF0aXN0aWNzOwpAQCAtNTU3LDYgKzU2MCw4IEBAIHB1YmxpYzoKICAgICB1bnNpZ25l
ZCBsb25nIHRyYWNrQXVkaW9TYW1wbGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhY2tBdWRp
b1NhbXBsZUNvdW50OyB9CiAgICAgdW5zaWduZWQgbG9uZyB0cmFja1ZpZGVvU2FtcGxlQ291bnQo
KSBjb25zdCB7IHJldHVybiBtX3RyYWNrVmlkZW9TYW1wbGVDb3VudDsgfQogICAgIHZvaWQgb2Jz
ZXJ2ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1UcmFjayYpOworICAgIHVzaW5nIFRyYWNr
RnJhbWVQcm9taXNlID0gRE9NUHJvbWlzZTxJRExJbnRlcmZhY2U8SW1hZ2VEYXRhPj47CisgICAg
dm9pZCBncmFiTmV4dE1lZGlhU3RyZWFtVHJhY2tGcmFtZShUcmFja0ZyYW1lUHJvbWlzZSYmKTsK
ICNlbmRpZgogCiBwcml2YXRlOgpAQCAtNTY4LDEyICs1NzMsMTMgQEAgcHJpdmF0ZToKIAogICAg
IC8vIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyIEFQSQogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCi0gICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYpIGZpbmFs
IHsgbV90cmFja1ZpZGVvU2FtcGxlQ291bnQrKzsgfQorICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFp
bGFibGUoTWVkaWFTYW1wbGUmKSBmaW5hbDsKICAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJs
ZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIGZpbmFsIHsgbV90cmFja0F1ZGlvU2FtcGxlQ291
bnQrKzsgfQogCiAgICAgdW5zaWduZWQgbG9uZyBtX3RyYWNrVmlkZW9TYW1wbGVDb3VudCB7IDAg
fTsKICAgICB1bnNpZ25lZCBsb25nIG1fdHJhY2tBdWRpb1NhbXBsZUNvdW50IHsgMCB9OwogICAg
IFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBtX3RyYWNrOworICAgIHN0ZDo6b3B0aW9uYWw8VHJh
Y2tGcmFtZVByb21pc2U+IG1fbmV4dEZyYW1lUHJvbWlzZTsKICNlbmRpZgogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPEluc3BlY3RvclN0dWJGcm9udGVuZD4gbV9pbnNwZWN0b3JGcm9udGVuZDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCA1ODFhZTM0ZDc1ZjU4YzMyYWRkMTFj
NGE5MDJlNDViN2FhODgwNmYxLi5hYWZiMGEyZDM0YzNjZjJhZDBiMDZkN2EyZjgwOTkzZDhhOGE5
NjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC01MjEsNiArNTIxLDcg
QEAgZW51bSBFdmVudFRocm90dGxpbmdCZWhhdmlvciB7CiAgICAgW0NvbmRpdGlvbmFsPVdFQkdM
XSB2b2lkIHNpbXVsYXRlV2ViR0xDb250ZXh0Q2hhbmdlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlIGNvbnRleHQpOwogCiAgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTV0gdm9pZCBvYnNl
cnZlTWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVRyYWNrIHRyYWNrKTsKKyAgICBbQ29uZGl0
aW9uYWw9TUVESUFfU1RSRUFNXSBQcm9taXNlPEltYWdlRGF0YT4gZ3JhYk5leHRNZWRpYVN0cmVh
bVRyYWNrRnJhbWUoKTsKICAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNXSByZWFkb25seSBh
dHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB0cmFja0F1ZGlvU2FtcGxlQ291bnQ7CiAgICAgW0NvbmRp
dGlvbmFsPU1FRElBX1NUUkVBTV0gcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgdHJh
Y2tWaWRlb1NhbXBsZUNvdW50OwogfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxMmFmZDRhNTFlNzJmNjU4NzIwZTU2OWMw
NWRkZjM4YjU5ZGFlN2ZkLi41NmY5NGI3NTlhMzM5ZTIxOWE2NzQ3OTZjMGRmZDAxZGVjYjNmZmEz
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMTUgQEAKIDIwMTctMDMtMzAgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCisgICAgICAgIGNhcHR1cmVTdHJlYW0gaXMgZ2V0dGluZyBibGFjayBm
cmFtZXMgd2l0aCB3ZWJnbCBjYW52YXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3MDMyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9jYXB0dXJlU3RyZWFtL2NhbnZhczNk
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9jYXB0dXJl
U3RyZWFtL2NhbnZhczNkLmh0bWw6IEFkZGVkLgorCisyMDE3LTAzLTMwICBZb3Vlbm4gRmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KKwogICAgICAgICB3ZWJydGMvdmlkZW8tc3RhdHMuaHRtbCBh
bmQgd2VicnRjL3ZpZGVvLXJlcGxhY2UtdHJhY2suaHRtbCBhcmUgZmxha3kKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDI5NAogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2NhcHR1cmVTdHJlYW0vY2FudmFzM2QtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9jYXB0dXJlU3RyZWFtL2Nh
bnZhczNkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMjExOTA2YjE3MTY0NDViYzRkMDE5NDEz
ZmUwMjY1M2Y1YmE0YmI1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YXN0cmVhbS9jYXB0dXJlU3RyZWFtL2NhbnZhczNkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQg
QEAKKyAKKworUEFTUyBjYXB0dXJlU3RyZWFtIHdpdGggM2QgY29udGV4dCBkcmF3aW5nIAorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2NhcHR1cmVTdHJlYW0vY2Fu
dmFzM2QuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vY2FwdHVyZVN0cmVhbS9j
YW52YXMzZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhNGFhYmJkN2U5MjU1MWE5ZDkzNmMyZmJhMjUwNGIz
ZWY2MTcyMTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L2NhcHR1cmVTdHJlYW0vY2FudmFzM2QuaHRtbApAQCAtMCwwICsxLDU4IEBACis8IURPQ1RZUEUg
SFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKyAgICA8aGVhZD4K
KyAgICAgICAgPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD00MDBweCBoZWlnaHQ9NDAwcHg+PC9j
YW52YXM+CisgICAgICAgIDx2aWRlbyBpZD0idmlkZW8iIGNvbnRyb2xzIGF1dG9wbGF5IHdpZHRo
PTQwMHB4IGhlaWdodD00MDBweD48L3ZpZGVvPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cisg
ICAgICAgIDxzY3JpcHQ+CisKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y2FudmFzIik7Cit2YXIgdmlkZW8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8iKTsK
KwordmFyIGdyZWVuID0gdHJ1ZTsKK2Z1bmN0aW9uIG1vZGlmeUNhbnZhcygpCit7CisgICAgdmFy
IGdsID0gY2FudmFzLmdldENvbnRleHQoJ3dlYmdsJyk7CisgICAgZ2wuY2xlYXJDb2xvcigwLCBn
cmVlbiA/IDEgOiAwLCAwLCAxKTsKKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTsK
KworICAgIGdyZWVuID0gIWdyZWVuOworCisgICAgc2V0VGltZW91dChtb2RpZnlDYW52YXMsIDUw
MCk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrR3JlZW5QaXhlbCh2YWx1ZSwgY3B0cikKK3sKKyAgICB2
YXIgaW5kZXggPSBjcHRyICUgNDsKKyAgICBpZiAoaW5kZXggPT0gMCkKKyAgICAgICAgcmV0dXJu
IHZhbHVlID09IDA7CisgICAgaWYgKGluZGV4ID09IDEpCisgICAgICAgIHJldHVybiB2YWx1ZSA9
PSAyNTU7CisgICAgaWYgKGluZGV4ID09IDIpCisgICAgICAgIHJldHVybiB2YWx1ZSA9PSAwOwor
ICAgIGlmIChpbmRleCA9PSAzKQorICAgICAgICByZXR1cm4gdmFsdWUgPT0gMjU1OworfQorCitw
cm9taXNlX3Rlc3QoKHRlc3QpID0+IHsKKyAgICB2YXIgc3RyZWFtID0gY2FudmFzLmNhcHR1cmVT
dHJlYW0oKTsKKyAgICB2aWRlby5zcmNPYmplY3QgPSBzdHJlYW07CisKKyAgICBpZiAoIXdpbmRv
dy5pbnRlcm5hbHMpCisgICAgICAgIHZhciBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7Cisg
ICAgZWxzZSB7CisgICAgICAgIGludGVybmFscy5vYnNlcnZlTWVkaWFTdHJlYW1UcmFjayhzdHJl
YW0uZ2V0VmlkZW9UcmFja3MoKVswXSk7CisgICAgICAgIHZhciBwcm9taXNlID0gaW50ZXJuYWxz
LmdyYWJOZXh0TWVkaWFTdHJlYW1UcmFja0ZyYW1lKCkudGhlbigoZGF0YSkgPT4geworICAgICAg
ICAgICAgZGF0YS5kYXRhLmZvckVhY2goKHZhbHVlLCBjcHRyKSA9PiB7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0X3RydWUoY2hlY2tHcmVlblBpeGVsKHZhbHVlLCBjcHRyKSwgImV4cGVjdGluZyB2
YWx1ZSAiICsgY3B0ciArICIgdG8gYmUgcGFydCBvZiBhIGdyZWVuIHBpeGVsIik7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfSkKKyAgICB9CisKKyAgICBtb2RpZnlDYW52YXMoKTsKKyAgICBy
ZXR1cm4gcHJvbWlzZTsKK30sICJjYXB0dXJlU3RyZWFtIHdpdGggM2QgY29udGV4dCBkcmF3aW5n
Iik7CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305979</attachid>
            <date>2017-03-31 09:58:06 -0700</date>
            <delta_ts>2017-03-31 16:08:55 -0700</delta_ts>
            <desc>Fixing release builds</desc>
            <filename>bug-170325-20170331095820.patch</filename>
            <type>text/plain</type>
            <size>29523</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWE1YjhhOTJjM2U4ZWYy
NDY4ZmNjOWYyNmI2OWUyNzE1OThiNmQzMi4uNDdjNjliYWIxMGNmNzAxZTFhNGU0ZDJkNzNmNTM1
YjRhMzZiMjRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDE3LTAzLTMxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBjYXB0dXJlU3RyZWFtIGlz
IGdldHRpbmcgYmxhY2sgZnJhbWVzIHdpdGggd2ViZ2wgY2FudmFzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzAzMjUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L21lZGlhc3RyZWFtL2Nh
cHR1cmVTdHJlYW0vY2FudmFzM2QuaHRtbAorCisgICAgICAgIENoYW5naW5nIHRoZSB3ZWJnbCBj
b250ZXh0IHRvIHNhdmUgYnVmZmVycyBpbiBjYXNlIHRoZSBjYW52YXMgaXMgY2FwdHVyZWQuCisg
ICAgICAgIEFkZGluZyBhIGNhbnZhcyBjaGFuZ2VkIG5vdGlmaWNhdGlvbiBpbiBjYXNlIG9mIGNs
ZWFyLgorICAgICAgICBJbiB0aGUgZnV0dXJlLCB3ZSBtaWdodCB3YW50IHRvIGNoYW5nZSB0aGlz
IG5vdGlmaWNhdGlvbiBhbmQgZG8gaXQgd2hlbiBlbmRQYWludCBvciBzaW1pbGFyIGlzIGNhbGxl
ZC4KKworICAgICAgICBBZGRpbmcgYW4gSW50ZXJuYWxzIEFQSSB0byBncmFiIHRoZSBSR0JBIGVx
dWl2YWxlbnQgb2YgdGhlIG5leHQgdHJhY2sgZnJhbWUuCisgICAgICAgIEZvciB0aGF0IHB1cnBv
c2UsIGFkZGluZyBhIGJ1bmNoIG9mIFdFQkNPUkVfRVhQT1JULgorCisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpTb3VyY2Up
OiBBZGRpbmcgY29uc3RyYWludHMgc3VwcG9ydCBzbyB0aGF0IHRyYWNrIHNldHRpbmdzCisgICAg
ICAgIGdldHRlciBhY3R1YWxseSB0cmFuc21pdHMgdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhl
IHNvdXJjZS4KKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNr
OjpTb3VyY2U6OmNhbnZhc0NoYW5nZWQpOiBlbnN1cmluZyB3ZWJnbCBjYW52YXMgY29udGV4dCBr
ZWVwIHRoZWlyIGRyYXdpbmcgYnVmZmVyLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFjay5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR3VhcmRlZE9i
amVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oOgorICAgICAgICAo
V2ViQ29yZTo6RGVmZXJyZWRQcm9taXNlOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRl
ZmVycmVkUHJvbWlzZTo6cmVqZWN0KToKKyAgICAgICAgKiBkb20vQWN0aXZlRE9NQ2FsbGJhY2su
aDoKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxDYW52YXNFbGVtZW50OjpjYXB0dXJlU3RyZWFtKToKKyAgICAgICAgKiBodG1sL0lt
YWdlRGF0YS5oOgorICAgICAgICAqIGh0bWwvSW1hZ2VEYXRhLmlkbDoKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpjbGVhcik6IGVuc3VyaW5nIGNhbnZhcyBvYnNlcnZlcnMgZ2V0
IG5vdGlmaWVkIGluIGNhc2Ugb2YgY2xlYXIgY2FsbHMuCisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6cHJlc2VydmVEcmF3aW5nQnVmZmVyKTogQWRkZWQgdG8gYWxsb3cg
Y2FudmFzIGNhcHR1cmUgdG8gdXBkYXRlIHRoaXMgcHJvcGVydHkuCisgICAgICAgICogcGxhdGZv
cm0vTWVkaWFTYW1wbGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpnZXRSR0JB
SW1hZ2VEYXRhKTogQWRkZWQgZm9yIGludGVybmFscyBBUEkuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2FtcGxlQVZGT2JqQy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6Z2V0UkdCQUltYWdlRGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOjpjb252ZXJ0KTog
SGVscGVyIHJvdXRpbmUgZm9yIGdldFJHQkFJbWFnZURhdGEuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oOgorICAgICAgICAoV2Vi
Q29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpzZXRTdXBwb3J0ZWRDb25zdHJhaW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OnNldFN1
cHBvcnRlZENvbnN0cmFpdHMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWTWVk
aWFDYXB0dXJlU291cmNlOjppbml0aWFsaXplU2V0dGluZ3MpOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVBdWRpb1NvdXJjZU93ci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVWaWRlb1NvdXJjZU93
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OmluaXRpYWxpemVT
ZXR0aW5ncyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxzOjpncmFiTmV4dE1lZGlhU3RyZWFtVHJhY2tGcmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKToKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwog
MjAxNy0wMy0zMSAgUm9tYWluIEJlbGxlc3NvcnQgIDxyb21haW4uYmVsbGVzc29ydEBjcmYuY2Fu
b24uZnI+CiAKICAgICAgICAgW1JlYWRhYmxlIFN0cmVhbXMgQVBJXSBJbXBsZW1lbnQgY2xvbmVB
cnJheUJ1ZmZlciBpbiBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2su
Y3BwCmluZGV4IDY0NjJjNWIyNGE4NTNhZDAzMmU5ODk5NjM1YmJjMTdhZjFiZWRlMzYuLjVhZDkx
MDgyNGE2Yjc3Mjk5YTg0NzUxYTFkNjEwZDZjYWY2ODk4MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVy
ZU1lZGlhU3RyZWFtVHJhY2suY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiQ2FudmFz
Q2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaCIKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5o
IgorI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIKIAogI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCiAKQEAgLTY3LDYgKzY4LDEwIEBAIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVh
bVRyYWNrOjpTb3VyY2U6OlNvdXJjZShIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzLCBzdGQ6Om9w
CiB7CiAgICAgbV9zZXR0aW5ncy5zZXRXaWR0aChjYW52YXMud2lkdGgoKSk7CiAgICAgbV9zZXR0
aW5ncy5zZXRIZWlnaHQoY2FudmFzLmhlaWdodCgpKTsKKyAgICBSZWFsdGltZU1lZGlhU291cmNl
U3VwcG9ydGVkQ29uc3RyYWludHMgY29uc3RyYWludHM7CisgICAgY29uc3RyYWludHMuc2V0U3Vw
cG9ydHNXaWR0aCh0cnVlKTsKKyAgICBjb25zdHJhaW50cy5zZXRTdXBwb3J0c0hlaWdodCh0cnVl
KTsKKyAgICBtX3NldHRpbmdzLnNldFN1cHBvcnRlZENvbnN0cmFpbnRzKGNvbnN0cmFpbnRzKTsK
IH0KIAogdm9pZCBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpzdGFydFBy
b2R1Y2luZ0RhdGEoKQpAQCAtMTI0LDYgKzEyOSwxMiBAQCB2b2lkIENhbnZhc0NhcHR1cmVNZWRp
YVN0cmVhbVRyYWNrOjpTb3VyY2U6OmNhbnZhc0NoYW5nZWQoSFRNTENhbnZhc0VsZW1lbnQmIGNh
bgogewogICAgIEFTU0VSVF9VTlVTRUQoY2FudmFzLCBtX2NhbnZhcyA9PSAmY2FudmFzKTsKIAor
ICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIHByZXNlcnZlIGRyYXdpbmcgYnVmZmVyIGFzIHdlIGFy
ZSBjdXJyZW50bHkgZ3JhYmJpbmcgZnJhbWVzIGFzeW5jaHJvbm91c2x5LgorICAgIC8vIFdlIHNo
b3VsZCBpbnN0ZWFkIGFkZCBhbiBhbmNob3IgcG9pbnQgZm9yIGJvdGggMmQgYW5kIDNkIGNvbnRl
eHRzIHdoZXJlIGNhbnZhcyB3aWxsIGFjdHVhbGx5IHBhaW50LgorICAgIC8vIEFuZCBjYWxsIGNh
bnZhcyBvYnNlcnZlcnMgZnJvbSB0aGF0IHBvaW50LgorICAgIGlmIChjYW52YXMucmVuZGVyaW5n
Q29udGV4dCgpICYmIGNhbnZhcy5yZW5kZXJpbmdDb250ZXh0KCktPmlzV2ViR0woKSkKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSo+KGNhbnZhcy5yZW5kZXJp
bmdDb250ZXh0KCkpLT5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIoKTsKKwogICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgdHJ5IHRvIGdlbmVyYXRlIHRoZSBmcmFtZSBhdCB0aGUgdGltZSB0aGUgc2NyZWVu
IGlzIGJlaW5nIHVwZGF0ZWQuCiAgICAgaWYgKG1fY2FudmFzQ2hhbmdlZFRpbWVyLmlzQWN0aXZl
KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgKaW5kZXggMDI3MThjZDk1ZmI3MTdmZTNjMGI3
MGFhMDIzMzhiMGJhMGJhMTk1NC4uNWEwOTgwMDNhM2ZmNTk3NDA1NjEzYmY2YmJiNTAzYTIyNDdj
OWZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrLmgKQEAgLTg5LDcgKzg5LDcgQEAgcHVibGljOgogICAgICAgICBTdHJp
bmcgZGV2aWNlSWQ7CiAgICAgICAgIFN0cmluZyBncm91cElkOwogICAgIH07Ci0gICAgVHJhY2tT
ZXR0aW5ncyBnZXRTZXR0aW5ncygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFRyYWNrU2V0
dGluZ3MgZ2V0U2V0dGluZ3MoKSBjb25zdDsKIAogICAgIHN0cnVjdCBUcmFja0NhcGFiaWxpdGll
cyB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8TG9uZ1JhbmdlPiB3aWR0aDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR3VhcmRlZE9iamVjdC5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HdWFyZGVkT2JqZWN0LmgKaW5kZXggNzg1YzVkMTYw
NjNiYjAxMTNhODY2YzcxNjBhNDY5MmMyZTg4MzU1Zi4uOGJmNDU5MTMxZDNlNjc0Yzk3YTY5Njky
MjdjYzNhZWJhNzc3MWZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01HdWFyZGVkT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01HdWFyZGVkT2JqZWN0LmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBET01HdWFyZGVkT2JqZWN0IDogcHVibGljIFJlZkNvdW50ZWQ8RE9NR3VhcmRl
ZE9iamVjdD4sIHB1YmxpYyBBY3RpdmVET01DYWxsYmFjayB7CitjbGFzcyBXRUJDT1JFX0VYUE9S
VCBET01HdWFyZGVkT2JqZWN0IDogcHVibGljIFJlZkNvdW50ZWQ8RE9NR3VhcmRlZE9iamVjdD4s
IHB1YmxpYyBBY3RpdmVET01DYWxsYmFjayB7CiBwdWJsaWM6CiAgICAgfkRPTUd1YXJkZWRPYmpl
Y3QoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9t
aXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaAppbmRleCBj
MTg0YjhmM2Y3OGMzYjhiMzc5MTczNWE0MGZiOTc4ZWI5MTEwMWZlLi4xNzAyN2YwNTE5OTQ3MDZm
OWFjNDQxZDJmYmI0ZmRlODllMWFjYzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVByb21pc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVByb21pc2UuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJlc29sdmUo
KmV4ZWMsIHRvSlM8SURMVHlwZT4oKmV4ZWMsICpnbG9iYWxPYmplY3QoKSwgc3RkOjpmb3J3YXJk
PHR5cGVuYW1lIElETFR5cGU6OlBhcmFtZXRlclR5cGU+KHZhbHVlKSkpOwogICAgIH0KIAotICAg
IHZvaWQgcmVzb2x2ZSgpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNvbHZlKCkKICAgICB7
CiAgICAgICAgIGlmIChpc1N1c3BlbmRlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtODgs
NyArODgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWplY3QoKTsKICAgICB2b2lkIHJlamVjdChz
dGQ6Om51bGxwdHJfdCk7CiAgICAgdm9pZCByZWplY3QoRXhjZXB0aW9uJiYpOwotICAgIHZvaWQg
cmVqZWN0KEV4Y2VwdGlvbkNvZGUsIGNvbnN0IFN0cmluZyYgPSB7IH0pOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcmVqZWN0KEV4Y2VwdGlvbkNvZGUsIGNvbnN0IFN0cmluZyYgPSB7IH0pOwog
ICAgIHZvaWQgcmVqZWN0KGNvbnN0IEpTQzo6UHJpdmF0ZU5hbWUmKTsKIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENhbGxiYWNrPgpAQCAtMTIyLDcgKzEyMiw3IEBAIHByaXZhdGU6CiAKICAgICBK
U0M6OkpTUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCgpIGNvbnN0IHsgcmV0dXJuIGd1YXJkZWQo
KTsgfQogCi0gICAgdm9pZCBjYWxsRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFs
dWUgZnVuY3Rpb24sIEpTQzo6SlNWYWx1ZSByZXNvbHV0aW9uKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNhbGxGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSBmdW5jdGlv
biwgSlNDOjpKU1ZhbHVlIHJlc29sdXRpb24pOwogICAgIHZvaWQgcmVzb2x2ZShKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSByZXNvbHV0aW9uKSB7IGNhbGxGdW5jdGlvbihzdGF0
ZSwgZGVmZXJyZWQoKS0+cmVzb2x2ZSgpLCByZXNvbHV0aW9uKTsgfQogICAgIHZvaWQgcmVqZWN0
KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHJlc29sdXRpb24pIHsgY2FsbEZ1
bmN0aW9uKHN0YXRlLCBkZWZlcnJlZCgpLT5yZWplY3QoKSwgcmVzb2x1dGlvbik7IH0KIH07CkBA
IC0yMTIsNyArMjEyLDcgQEAgUmVmPERlZmVycmVkUHJvbWlzZT4gY3JlYXRlRGVmZXJyZWRQcm9t
aXNlKEpTQzo6RXhlY1N0YXRlJiwgSlNET01XaW5kb3cmKTsKIHZvaWQgZnVsZmlsbFByb21pc2VX
aXRoSlNPTihSZWY8RGVmZXJyZWRQcm9taXNlPiYmLCBjb25zdCBTdHJpbmcmKTsKIHZvaWQgZnVs
ZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIoUmVmPERlZmVycmVkUHJvbWlzZT4mJiwgQXJyYXlC
dWZmZXIqKTsKIHZvaWQgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIoUmVmPERlZmVycmVk
UHJvbWlzZT4mJiwgY29uc3Qgdm9pZCosIHNpemVfdCk7Ci12b2lkIHJlamVjdFByb21pc2VXaXRo
RXhjZXB0aW9uSWZBbnkoSlNDOjpFeGVjU3RhdGUmLCBKU0RPTUdsb2JhbE9iamVjdCYsIEpTQzo6
SlNQcm9taXNlRGVmZXJyZWQmKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgcmVqZWN0UHJvbWlzZVdp
dGhFeGNlcHRpb25JZkFueShKU0M6OkV4ZWNTdGF0ZSYsIEpTRE9NR2xvYmFsT2JqZWN0JiwgSlND
OjpKU1Byb21pc2VEZWZlcnJlZCYpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBjcmVhdGVSZWplY3Rl
ZFByb21pc2VXaXRoVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgU3RyaW5nJik7CiAK
IHVzaW5nIFByb21pc2VGdW5jdGlvbiA9IHZvaWQoSlNDOjpFeGVjU3RhdGUmLCBSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01D
YWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTUNhbGxiYWNrLmgKaW5kZXgg
NTY2YjQwYTFmMzZkZmI2NDRhYzY3NGQ0OTU4MzRiZTQwYTI4MmVlYy4uMDQyODAyZDE4NzI3YTVl
ZThmMTE3MGQxMTdiODQwNTU5YzJhYTAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0FjdGl2ZURPTUNhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTUNh
bGxiYWNrLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIEFjdGl2ZURPTUNhbGxiYWNr
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpOwogICAgIHZpcnR1YWwgfkFjdGl2ZURP
TUNhbGxiYWNrKCk7CiAKLSAgICBib29sIGNhbkludm9rZUNhbGxiYWNrKCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBjYW5JbnZva2VDYWxsYmFjaygpIGNvbnN0OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50
LmNwcAppbmRleCA3ZDI5YWJhNzA4NzEyY2Q0NmQ4ZGUzNGEyYmY0MDBmNDYzZTA4MzJhLi41ODcx
MjFiNWY2OTMyYWE2ZDAwNmEyYzA2ZGY3ZTk4NDYzYWJlZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcApAQCAtNjAzLDcgKzYwMyw3IEBAIEV4Y2VwdGlvbk9y
PFJlZjxNZWRpYVN0cmVhbT4+IEhUTUxDYW52YXNFbGVtZW50OjpjYXB0dXJlU3RyZWFtKFNjcmlw
dEV4ZWN1dGlvbkNvCiAKICAgICBpZiAoZnJhbWVSZXF1ZXN0UmF0ZSAmJiBmcmFtZVJlcXVlc3RS
YXRlLnZhbHVlKCkgPCAwKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uKE5PVF9TVVBQT1JURURf
RVJSLCBBU0NJSUxpdGVyYWwoImZyYW1lUmVxdWVzdFJhdGUgaXMgbmVnYXRpdmUiKSk7Ci0gICAg
CisKICAgICBhdXRvIHRyYWNrID0gQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0
ZShjb250ZXh0LCAqdGhpcywgV1RGTW92ZShmcmFtZVJlcXVlc3RSYXRlKSk7CiAgICAgYXV0byBz
dHJlYW0gPSAgTWVkaWFTdHJlYW06OmNyZWF0ZShjb250ZXh0KTsKICAgICBzdHJlYW0tPmFkZFRy
YWNrKHRyYWNrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCmluZGV4IDZiODY3NjgwODQxZGEyZDE5
ODgxZWE1ZWMwOWM0YTgzOTU5ZDYzMWQuLjdiZjEzNWM3OWE0OGFiZmMyMDNkMGZjMWQ2N2ZiOTU0
ZWUwZThjNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaApAQCAtMzQsNyArMzQsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEltYWdlRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVk
PEltYWdlRGF0YT4geworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSW1hZ2VEYXRhIDogcHVibGljIFJl
ZkNvdW50ZWQ8SW1hZ2VEYXRhPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJl
ZjxJbWFnZURhdGE+PiBjcmVhdGUodW5zaWduZWQgc3csIHVuc2lnbmVkIHNoKTsKICAgICBzdGF0
aWMgUmVmUHRyPEltYWdlRGF0YT4gY3JlYXRlKGNvbnN0IEludFNpemUmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VEYXRhLmlkbAppbmRleCAzNzY3NWU0ZmE0Y2NlZTdkYWE4Mzg2YjYzN2JkNWE4MzhmNDAx
YWExLi41ZTNmZGM5MmNhZmQwYThkZDViODI3NTE2ZGJhNzcwYTA5ODVhOGUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9JbWFnZURhdGEuaWRsCkBAIC0zMSw2ICszMSw3IEBACiAgICAgQ29uc3RydWN0b3IodW5z
aWduZWQgbG9uZyBzdywgdW5zaWduZWQgbG9uZyBzaCksCiAgICAgQ29uc3RydWN0b3JNYXlUaHJv
d0V4Y2VwdGlvbiwKICAgICBDdXN0b21Ub0pTT2JqZWN0LAorICAgIEV4cG9ydE1hY3JvPVdFQkNP
UkVfRVhQT1JULAogICAgIEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpLAogICAgIEltcGxlbWVudGF0
aW9uTGFja3NWVGFibGUsCiBdIGludGVyZmFjZSBJbWFnZURhdGEgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggYjU2
ZDgxZjgzOGJiZTFiMDA3YzMzMjQ5ZTY2MzA3ODM1OWRlMTQ1Yi4uODFmMTU1MjAxODA0MGY5MDVk
ZmZmNDU4MWM4M2I1MjUwYjBjMTQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC00NzAsNyArNDcwLDcgQEAgdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyKEdDM0RiaXRmaWVsZCBtYXNrKQogICAgIH0K
ICAgICBpZiAoIWNsZWFySWZDb21wb3NpdGVkKG1hc2spKQogICAgICAgICBtX2NvbnRleHQtPmNs
ZWFyKG1hc2spOwotICAgIG1hcmtDb250ZXh0Q2hhbmdlZCgpOworICAgIG1hcmtDb250ZXh0Q2hh
bmdlZEFuZE5vdGlmeUNhbnZhc09ic2VydmVyKCk7CiB9CiAKIFdlYkdMQW55IFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKEdDM0RlbnVtIHBuYW1lKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4
IGVhN2VmNDNkNGU5ZTExNGViZDgwN2I4OTRmNTQ0NWQyMmJmNDgyZjYuLjdmODIzODhhMGY5Y2Ex
NDRmNTQ1MTMxODdlOWViYTcwMTZjMGQwMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTIwNyw2ICsyMDcs
OCBAQCBwdWJsaWM6CiAgICAgV2ViR0xBbnkgZ2V0VmVydGV4QXR0cmliKEdDM0R1aW50IGluZGV4
LCBHQzNEZW51bSBwbmFtZSk7CiAgICAgbG9uZyBsb25nIGdldFZlcnRleEF0dHJpYk9mZnNldChH
QzNEdWludCBpbmRleCwgR0MzRGVudW0gcG5hbWUpOwogCisgICAgdm9pZCBwcmVzZXJ2ZURyYXdp
bmdCdWZmZXIoKSB7IG1fYXR0cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIgPSB0cnVlOyB9
CisKICAgICB2aXJ0dWFsIHZvaWQgaGludChHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIG1vZGUp
ID0gMDsKICAgICBHQzNEYm9vbGVhbiBpc0J1ZmZlcihXZWJHTEJ1ZmZlciopOwogICAgIGJvb2wg
aXNDb250ZXh0TG9zdCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTWVkaWFTYW1wbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmgK
aW5kZXggZThhN2I1ODVhZDFjMmNhMDBmOWM2ZGM4ZjJlMjMzODZkN2I4ZTk2Yi4uNTMyMTI0MDc2
ZWFhMGNmZDZkYWI5ZTBkMDNlNDdiNjZlNDY4NTM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
ZWRpYVNhbXBsZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIE1lZGlhU2FtcGxlX2gKIAog
I2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvVHlwZWRBcnJheXMuaD4K
ICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KQEAgLTY5LDYgKzcwLDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgc3RkOjpwYWlyPFJlZlB0cjxNZWRpYVNhbXBsZT4sIFJlZlB0cjxN
ZWRpYVNhbXBsZT4+IGRpdmlkZShjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUpID0g
MDsKICAgICB2aXJ0dWFsIFJlZjxNZWRpYVNhbXBsZT4gY3JlYXRlTm9uRGlzcGxheWluZ0NvcHko
KSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0dWFsIFJlZlB0cjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5
PiBnZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQorCiAgICAgZW51
bSBTYW1wbGVGbGFncyB7CiAgICAgICAgIE5vbmUgPSAwLAogICAgICAgICBJc1N5bmMgPSAxIDw8
IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vTWVkaWFTYW1wbGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vTWVkaWFTYW1wbGVBVkZPYmpDLmgKaW5kZXggZmNkYjYxZTQxYzJh
ZmZhZjNmYWE2ZDJkZmJhODg2MjQ4MWMxMzhhYy4uYmEzZGNiYjZkOGFjYmJkNjhjZjRhMzkwNWEx
MjI5NDhiYzM0NDZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL01lZGlhU2FtcGxlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNhbXBsZUFWRk9iakMuaApAQCAt
NDEsNiArNDEsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxNZWRpYVNhbXBsZUFWRk9i
akM+IGNyZWF0ZUltYWdlU2FtcGxlKFJlZjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiYmLCB1bnNp
Z25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCk7CiAgICAgc3RhdGljIFJlZlB0
cjxNZWRpYVNhbXBsZUFWRk9iakM+IGNyZWF0ZUltYWdlU2FtcGxlKFZlY3Rvcjx1aW50OF90PiYm
LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCk7CiAKKyAgICBSZWZQ
dHI8SlNDOjpVaW50OENsYW1wZWRBcnJheT4gZ2V0UkdCQUltYWdlRGF0YSgpIGNvbnN0IGZpbmFs
OworCiBwcml2YXRlOgogICAgIE1lZGlhU2FtcGxlQVZGT2JqQyhDTVNhbXBsZUJ1ZmZlclJlZiBz
YW1wbGUpCiAgICAgICAgIDogbV9zYW1wbGUoc2FtcGxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZP
YmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCmluZGV4IDExNThiYzUyOTFkYWVhMDllMzdiM2MyMjJj
Yzg1OTIzODAxNDFjZmIuLjE3ODY0YWQyYThiYzI4Y2RiODFmNmJhYmNhZTcyZjRkYmI1YWVmMzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KQEAgLTI2
LDYgKzI2LDggQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiTWVkaWFTYW1wbGVBVkZP
YmpDLmgiCiAKKyNpbXBvcnQgIlBpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaCIKKyNpbXBvcnQgPHJ1
bnRpbWUvVHlwZWRBcnJheUlubGluZXMuaD4KICNpbXBvcnQgPHd0Zi9QcmludFN0cmVhbS5oPgog
CiAjaW1wb3J0ICJDb3JlTWVkaWFTb2Z0TGluay5oIgpAQCAtMjY1LDQgKzI2NywyOCBAQCBSZWY8
TWVkaWFTYW1wbGU+IE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlTm9uRGlzcGxheWluZ0NvcHko
KSBjb25zdAogICAgIHJldHVybiBNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZShhZG9wdENGKG5l
d1NhbXBsZUJ1ZmZlcikuZ2V0KCksIG1faWQpOwogfQogCitSZWZQdHI8SlNDOjpVaW50OENsYW1w
ZWRBcnJheT4gTWVkaWFTYW1wbGVBVkZPYmpDOjpnZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3QKK3sK
KyAgICBjb25zdCBPU1R5cGUgaW1hZ2VGb3JtYXQgPSBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJSR0JB
OworICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4gaW1hZ2VGb3JtYXROdW1iZXIgPSBhZG9wdENG
KENGTnVtYmVyQ3JlYXRlKG51bGxwdHIsICBrQ0ZOdW1iZXJJbnRUeXBlLCAgJmltYWdlRm9ybWF0
KSk7CisKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gY29uZm9ybWVyT3B0
aW9ucyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAxLCAma0NGVHlwZURp
Y3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7
CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoY29uZm9ybWVyT3B0aW9ucy5nZXQoKSwga0NWUGl4
ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXksIGltYWdlRm9ybWF0TnVtYmVyLmdldCgpKTsKKyAg
ICBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWIHBpeGVsQnVmZmVyQ29uZm9ybWVyKGNvbmZvcm1lck9w
dGlvbnMuZ2V0KCkpOworCisgICAgYXV0byBwaXhlbEJ1ZmZlciA9IHN0YXRpY19jYXN0PENWUGl4
ZWxCdWZmZXJSZWY+KENNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIobV9zYW1wbGUuZ2V0KCkp
KTsKKyAgICBhdXRvIHJnYmFQaXhlbEJ1ZmZlciA9IHBpeGVsQnVmZmVyQ29uZm9ybWVyLmNvbnZl
cnQocGl4ZWxCdWZmZXIpOworICAgIGF1dG8gc3RhdHVzID0gQ1ZQaXhlbEJ1ZmZlckxvY2tCYXNl
QWRkcmVzcyhyZ2JhUGl4ZWxCdWZmZXIuZ2V0KCksIGtDVlBpeGVsQnVmZmVyTG9ja19SZWFkT25s
eSk7CisgICAgQVNTRVJUKHN0YXR1cyA9PSBub0Vycik7CisKKyAgICB2b2lkKiBkYXRhID0gQ1ZQ
aXhlbEJ1ZmZlckdldEJhc2VBZGRyZXNzT2ZQbGFuZShyZ2JhUGl4ZWxCdWZmZXIuZ2V0KCksIDAp
OworICAgIHNpemVfdCBieXRlTGVuZ3RoID0gQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodChwaXhlbEJ1
ZmZlcikgKiBDVlBpeGVsQnVmZmVyR2V0V2lkdGgocGl4ZWxCdWZmZXIpICogNDsKKyAgICBhdXRv
IHJlc3VsdCA9IEpTQzo6VWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShKU0M6OkFycmF5QnVmZmVy
OjpjcmVhdGUoZGF0YSwgYnl0ZUxlbmd0aCksIDAsIGJ5dGVMZW5ndGgpOworCisgICAgc3RhdHVz
ID0gQ1ZQaXhlbEJ1ZmZlclVubG9ja0Jhc2VBZGRyZXNzKHJnYmFQaXhlbEJ1ZmZlci5nZXQoKSwg
a0NWUGl4ZWxCdWZmZXJMb2NrX1JlYWRPbmx5KTsKKyAgICBBU1NFUlQoc3RhdHVzID09IG5vRXJy
KTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5j
cHAKaW5kZXggMGI2NDdlZmY5ZDFkMzI1NWQ2YzBkNjA2OGMzMDhmYjgxYmQzOTJmMC4uODJjMWQ1
NmRiZDIwNzM1NThjYzZmZDQ2MGM5NDBlNDEzMzgwZDg1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3Jt
ZXJDVi5jcHAKQEAgLTcyLDYgKzcyLDI0IEBAIHN0YXRpYyB2b2lkIENWUGl4ZWxCdWZmZXJSZWxl
YXNlSW5mb0NhbGxiYWNrKHZvaWQqIGluZm8pCiAgICAgQ0ZSZWxlYXNlKHBpeGVsQnVmZmVyKTsK
IH0KIAorUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y6
OmNvbnZlcnQoQ1ZQaXhlbEJ1ZmZlclJlZiByYXdCdWZmZXIpCit7CisjaWYgVVNFKFZJREVPVE9P
TEJPWCkKKyAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gYnVmZmVyIHsgcmF3QnVmZmVy
IH07CisKKyAgICBpZiAoIVZUUGl4ZWxCdWZmZXJDb25mb3JtZXJJc0NvbmZvcm1hbnRQaXhlbEJ1
ZmZlcihtX3BpeGVsQ29uZm9ybWVyLmdldCgpLCBidWZmZXIuZ2V0KCkpKSB7CisgICAgICAgIENW
UGl4ZWxCdWZmZXJSZWYgb3V0cHV0QnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgT1NTdGF0dXMg
c3RhdHVzID0gVlRQaXhlbEJ1ZmZlckNvbmZvcm1lckNvcHlDb25mb3JtZWRQaXhlbEJ1ZmZlciht
X3BpeGVsQ29uZm9ybWVyLmdldCgpLCBidWZmZXIuZ2V0KCksIGZhbHNlLCAmb3V0cHV0QnVmZmVy
KTsKKyAgICAgICAgaWYgKHN0YXR1cyAhPSBub0VyciB8fCAhb3V0cHV0QnVmZmVyKQorICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBhZG9wdENGKG91dHB1dEJ1ZmZl
cik7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmF3QnVmZmVyKTsKKyNlbmRpZgor
ICAgIHJldHVybiBudWxscHRyOworfQorCiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gUGl4ZWxCdWZm
ZXJDb25mb3JtZXJDVjo6Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJl
ZiByYXdCdWZmZXIpCiB7CiAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IGJ1ZmZlciB7
IHJhd0J1ZmZlciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oCmluZGV4IDc2ZWE4MWIyMDcxMDcw
ODIyYmRhOGE4OGRiY2Y1NmZjNTIyZWU5YzAuLmQxN2JiM2MyMzI4NWMwOTQ2NjI1ZWU3YmRjNzBl
YzIzNDFhNjllYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgKQEAgLTM3LDYgKzM3LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUGl4ZWxCdWZmZXJDb25mb3JtZXJDViB7CiBwdWJs
aWM6CiAgICAgUGl4ZWxCdWZmZXJDb25mb3JtZXJDVihDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRl
cyk7CisgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IGNvbnZlcnQoQ1ZQaXhlbEJ1ZmZl
clJlZik7CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZUltYWdlRnJvbVBpeGVsQnVm
ZmVyKENWUGl4ZWxCdWZmZXJSZWYpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3MuaAppbmRleCBiNjEyZTMyNmE4ZTNiYzdlNmU3YmNkNmM0NGZiZTAxMDMxOTFmZDY3
Li41YTRjOWE1Mzc3YzBiMmNkNTJlZjQ1YjViMjZmNGI2MWExODNhNjU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3MuaApAQCAtOTIsNyArOTIsNyBAQCBwdWJsaWM6CiAgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBncm91cElkKCkgY29uc3QgeyByZXR1cm4gbV9ncm91cElkOyB9CiAg
ICAgdm9pZCBzZXRHcm91cElkKGNvbnN0IEF0b21pY1N0cmluZyYgZ3JvdXBJZCkgeyBtX2dyb3Vw
SWQgPSBncm91cElkOyB9CiAKLSAgICB2b2lkIHNldFN1cHBvcnRlZENvbnN0cmFpdHMoY29uc3Qg
UmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJiBzdXBwb3J0ZWRDb25zdHJh
aW50cykgeyBtX3N1cHBvcnRlZENvbnN0cmFpbnRzID0gc3VwcG9ydGVkQ29uc3RyYWludHM7IH0K
KyAgICB2b2lkIHNldFN1cHBvcnRlZENvbnN0cmFpbnRzKGNvbnN0IFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMpIHsgbV9zdXBwb3J0
ZWRDb25zdHJhaW50cyA9IHN1cHBvcnRlZENvbnN0cmFpbnRzOyB9CiAKICAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBSZWFsdGltZU1lZGlh
U291cmNlU2V0dGluZ3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbQppbmRleCBkZTJm
OGNiNjEyMGY2NWVkN2ZlYjBiMWZkOWQ4YzNmMmJjN2Y3NzJmLi41NjY4YWEwMTY5NDdhZDBjMDRj
MTgzNWQ5M2EzNzQ3OWY0OGMzMDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tCkBA
IC0yMDQsNyArMjA0LDcgQEAgdm9pZCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6Y29tbWl0Q29uZmln
dXJhdGlvbigpCiB2b2lkIEFWTWVkaWFDYXB0dXJlU291cmNlOjppbml0aWFsaXplU2V0dGluZ3Mo
KQogewogICAgIGlmIChtX2N1cnJlbnRTZXR0aW5ncy5kZXZpY2VJZCgpLmlzRW1wdHkoKSkKLSAg
ICAgICAgbV9jdXJyZW50U2V0dGluZ3Muc2V0U3VwcG9ydGVkQ29uc3RyYWl0cyhzdXBwb3J0ZWRD
b25zdHJhaW50cygpKTsKKyAgICAgICAgbV9jdXJyZW50U2V0dGluZ3Muc2V0U3VwcG9ydGVkQ29u
c3RyYWludHMoc3VwcG9ydGVkQ29uc3RyYWludHMoKSk7CiAKICAgICBtX2N1cnJlbnRTZXR0aW5n
cy5zZXREZXZpY2VJZChpZCgpKTsKICAgICB1cGRhdGVTZXR0aW5ncyhtX2N1cnJlbnRTZXR0aW5n
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVu
d2VicnRjL1JlYWx0aW1lQXVkaW9Tb3VyY2VPd3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVBdWRpb1NvdXJjZU93ci5oCmluZGV4IDIz
NDlmMDUxYjBmMzZjMzQ0MzhlNDMyZmE3MzhiMjEwN2U5NDkyOTguLmNhYjcwNTA4NGI5NGNmYzhl
N2IxOWY3ZDdlODIzMjY4Y2JjZWY0NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVBdWRpb1NvdXJjZU93ci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVB
dWRpb1NvdXJjZU93ci5oCkBAIC01OSw3ICs1OSw3IEBAIFJlYWx0aW1lQXVkaW9Tb3VyY2VPd3Io
Y29uc3QgU3RyaW5nJiBpZCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBT
CiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBpbml0aWFsaXplU2V0dGluZ3MoKSBmaW5hbCB7CiAgICAg
ICAgIGlmIChtX2N1cnJlbnRTZXR0aW5ncy5kZXZpY2VJZCgpLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgIG1fY3VycmVudFNldHRpbmdzLnNldFN1cHBvcnRlZENvbnN0cmFpdHMoc3VwcG9ydGVkQ29u
c3RyYWludHMoKSk7CisgICAgICAgICAgICBtX2N1cnJlbnRTZXR0aW5ncy5zZXRTdXBwb3J0ZWRD
b25zdHJhaW50cyhzdXBwb3J0ZWRDb25zdHJhaW50cygpKTsKIAogICAgICAgICBtX2N1cnJlbnRT
ZXR0aW5ncy5zZXREZXZpY2VJZChpZCgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lVmlkZW9Tb3VyY2VP
d3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVh
bHRpbWVWaWRlb1NvdXJjZU93ci5oCmluZGV4IGRjNjZhM2UyYjk2MTM2MGU4ODZiM2QwNmNiZWQ5
MTMxMzJmYjE0NTQuLjQxOGVmODRhNzFhNTczNDdlODVkMzUyODM2OWUyNzljN2E2NmY0NTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMv
UmVhbHRpbWVWaWRlb1NvdXJjZU93ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVWaWRlb1NvdXJjZU93ci5oCkBAIC01OSw3ICs1
OSw3IEBAIFJlYWx0aW1lVmlkZW9Tb3VyY2VPd3IoY29uc3QgU3RyaW5nJiBpZCwgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBTCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBpbml0
aWFsaXplU2V0dGluZ3MoKSBmaW5hbCB7CiAgICAgICAgIGlmIChtX2N1cnJlbnRTZXR0aW5ncy5k
ZXZpY2VJZCgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1fY3VycmVudFNldHRpbmdzLnNldFN1
cHBvcnRlZENvbnN0cmFpdHMoc3VwcG9ydGVkQ29uc3RyYWludHMoKSk7CisgICAgICAgICAgICBt
X2N1cnJlbnRTZXR0aW5ncy5zZXRTdXBwb3J0ZWRDb25zdHJhaW50cyhzdXBwb3J0ZWRDb25zdHJh
aW50cygpKTsKIAogICAgICAgICBtX2N1cnJlbnRTZXR0aW5ncy5zZXREZXZpY2VJZChpZCgpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVN
ZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGlt
ZU1lZGlhU291cmNlLmNwcAppbmRleCA3N2M5NzE0OGExMDczZmZmYWZhMDZjYjAzOTk5NDBmODU0
ZjZiMmQ4Li43NzkwY2U5ZTJiOTVkNWFlZTM2YzE3NTg1MWEzZmY5ODI5MWUxY2M4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlh
U291cmNlLmNwcApAQCAtOTgsNyArOTgsNyBAQCBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNh
cGFiaWxpdGllcz4gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OmNhcGFiaWxpdGllcygpCiB2b2lk
IE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjppbml0aWFsaXplU2V0dGluZ3MoKQogewogICAgIGlm
IChtX2N1cnJlbnRTZXR0aW5ncy5kZXZpY2VJZCgpLmlzRW1wdHkoKSkgewotICAgICAgICBtX2N1
cnJlbnRTZXR0aW5ncy5zZXRTdXBwb3J0ZWRDb25zdHJhaXRzKHN1cHBvcnRlZENvbnN0cmFpbnRz
KCkpOworICAgICAgICBtX2N1cnJlbnRTZXR0aW5ncy5zZXRTdXBwb3J0ZWRDb25zdHJhaW50cyhz
dXBwb3J0ZWRDb25zdHJhaW50cygpKTsKICAgICAgICAgbV9jdXJyZW50U2V0dGluZ3Muc2V0RGV2
aWNlSWQoaWQoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5k
ZXggNjcyYjRkNDM5NDg3NzhlOWI3YWYyNmVlODUyMmJkN2UwOTVhOWMzYy4uYjE5MmQzYjY0MzA0
MzYxYjM5NTA2MWJmNTUzN2NiMDg2MmU0MmVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcApAQCAtODUsNiArODUsNyBAQAogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMu
aCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50ZXJuYWxTZXR0aW5ncy5oIgor
I2luY2x1ZGUgIkpTSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKICNpbmNsdWRl
ICJMaWJXZWJSVENQcm92aWRlci5oIgogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgpAQCAtMzkyMSw2
ICszOTIyLDMzIEBAIHZvaWQgSW50ZXJuYWxzOjpvYnNlcnZlTWVkaWFTdHJlYW1UcmFjayhNZWRp
YVN0cmVhbVRyYWNrJiB0cmFjaykKICAgICBtX3RyYWNrID0gJnRyYWNrOwogICAgIG1fdHJhY2st
PnNvdXJjZSgpLmFkZE9ic2VydmVyKCp0aGlzKTsKIH0KKwordm9pZCBJbnRlcm5hbHM6OmdyYWJO
ZXh0TWVkaWFTdHJlYW1UcmFja0ZyYW1lKFRyYWNrRnJhbWVQcm9taXNlJiYgcHJvbWlzZSkKK3sK
KyAgICBtX25leHRGcmFtZVByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpOworfQorCit2b2lkIElu
dGVybmFsczo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKK3sKKyAg
ICBtX3RyYWNrVmlkZW9TYW1wbGVDb3VudCsrOworICAgIGlmICghbV9uZXh0RnJhbWVQcm9taXNl
KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHZpZGVvU2V0dGluZ3MgPSBtX3RyYWNrLT5n
ZXRTZXR0aW5ncygpOworICAgIGlmICghdmlkZW9TZXR0aW5ncy53aWR0aCB8fCAhdmlkZW9TZXR0
aW5ncy5oZWlnaHQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gcmdiYSA9IHNhbXBsZS5n
ZXRSR0JBSW1hZ2VEYXRhKCk7CisgICAgaWYgKCFyZ2JhKQorICAgICAgICByZXR1cm47CisgICAg
YXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShyZ2JhLnJlbGVhc2VOb25OdWxsKCks
ICp2aWRlb1NldHRpbmdzLndpZHRoLCAqdmlkZW9TZXR0aW5ncy5oZWlnaHQpOworICAgIGlmICgh
aW1hZ2VEYXRhLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICBtX25leHRGcmFtZVByb21pc2UtPnJl
c29sdmUoaW1hZ2VEYXRhLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLnJlbGVhc2VOb25OdWxsKCkpOwor
ICAgIGVsc2UKKyAgICAgICAgbV9uZXh0RnJhbWVQcm9taXNlLT5yZWplY3QoaW1hZ2VEYXRhLmV4
Y2VwdGlvbigpLmNvZGUoKSk7CisgICAgbV9uZXh0RnJhbWVQcm9taXNlID0gc3RkOjpudWxsb3B0
OworfQorCiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmgKaW5kZXggNDUwZmI0MjNlMGZkYWVmZDNmYzUzMWFkZDg5MDNiZDM2NjBiMDRi
Yi4uNjAwN2EzZTBhNDlhNDBmZmU0ODZmZWMzNWMxYTA4NmYyODc5MWE5OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oCkBAIC0yOSw5ICsyOSwxMSBAQAogI2luY2x1ZGUgIkNTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2Vy
dmVyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2Uu
aCIKICNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVk
aWFTb3VyY2UuaCIKICNpbmNsdWRlIDxydW50aW1lL0Zsb2F0MzJBcnJheS5oPgorI2luY2x1ZGUg
PHd0Zi9PcHRpb25hbC5oPgogCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCiAjaW5jbHVkZSAi
TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXIuaCIKQEAgLTU0LDYgKzU2LDcgQEAgY2xh
c3MgSFRNTElucHV0RWxlbWVudDsKIGNsYXNzIEhUTUxMaW5rRWxlbWVudDsKIGNsYXNzIEhUTUxN
ZWRpYUVsZW1lbnQ7CiBjbGFzcyBIVE1MU2VsZWN0RWxlbWVudDsKK2NsYXNzIEltYWdlRGF0YTsK
IGNsYXNzIEluc3BlY3RvclN0dWJGcm9udGVuZDsKIGNsYXNzIEludGVybmFsU2V0dGluZ3M7CiBj
bGFzcyBNYWxsb2NTdGF0aXN0aWNzOwpAQCAtNTY1LDYgKzU2OCw4IEBAIHB1YmxpYzoKICAgICB1
bnNpZ25lZCBsb25nIHRyYWNrQXVkaW9TYW1wbGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJh
Y2tBdWRpb1NhbXBsZUNvdW50OyB9CiAgICAgdW5zaWduZWQgbG9uZyB0cmFja1ZpZGVvU2FtcGxl
Q291bnQoKSBjb25zdCB7IHJldHVybiBtX3RyYWNrVmlkZW9TYW1wbGVDb3VudDsgfQogICAgIHZv
aWQgb2JzZXJ2ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1UcmFjayYpOworICAgIHVzaW5n
IFRyYWNrRnJhbWVQcm9taXNlID0gRE9NUHJvbWlzZTxJRExJbnRlcmZhY2U8SW1hZ2VEYXRhPj47
CisgICAgdm9pZCBncmFiTmV4dE1lZGlhU3RyZWFtVHJhY2tGcmFtZShUcmFja0ZyYW1lUHJvbWlz
ZSYmKTsKICNlbmRpZgogCiBwcml2YXRlOgpAQCAtNTc2LDEyICs1ODEsMTMgQEAgcHJpdmF0ZToK
IAogICAgIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyIEFQSQogI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCi0gICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYp
IGZpbmFsIHsgbV90cmFja1ZpZGVvU2FtcGxlQ291bnQrKzsgfQorICAgIHZvaWQgdmlkZW9TYW1w
bGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmKSBmaW5hbDsKICAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2
YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0
IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIGZpbmFsIHsgbV90cmFja0F1ZGlvU2Ft
cGxlQ291bnQrKzsgfQogCiAgICAgdW5zaWduZWQgbG9uZyBtX3RyYWNrVmlkZW9TYW1wbGVDb3Vu
dCB7IDAgfTsKICAgICB1bnNpZ25lZCBsb25nIG1fdHJhY2tBdWRpb1NhbXBsZUNvdW50IHsgMCB9
OwogICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBtX3RyYWNrOworICAgIHN0ZDo6b3B0aW9u
YWw8VHJhY2tGcmFtZVByb21pc2U+IG1fbmV4dEZyYW1lUHJvbWlzZTsKICNlbmRpZgogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvclN0dWJGcm9udGVuZD4gbV9pbnNwZWN0b3JGcm9udGVu
ZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBmODVmNjI1MTU2NGZiMzNj
YWYyNTQwNmZjMWM5NDE0YWU2OTc4MWVhLi4wOTk1ZmViM2RlY2Y1MzZmNzk1Y2NmNzQ4NTUxOGEw
NjQ0ZDNkYjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC01MjcsNiAr
NTI3LDcgQEAgZW51bSBFdmVudFRocm90dGxpbmdCZWhhdmlvciB7CiAgICAgW0NvbmRpdGlvbmFs
PVdFQkdMXSB2b2lkIHNpbXVsYXRlV2ViR0xDb250ZXh0Q2hhbmdlZChXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlIGNvbnRleHQpOwogCiAgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTV0gdm9p
ZCBvYnNlcnZlTWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVRyYWNrIHRyYWNrKTsKKyAgICBb
Q29uZGl0aW9uYWw9TUVESUFfU1RSRUFNXSBQcm9taXNlPEltYWdlRGF0YT4gZ3JhYk5leHRNZWRp
YVN0cmVhbVRyYWNrRnJhbWUoKTsKICAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNXSByZWFk
b25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB0cmFja0F1ZGlvU2FtcGxlQ291bnQ7CiAgICAg
W0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTV0gcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxv
bmcgdHJhY2tWaWRlb1NhbXBsZUNvdW50OwogfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5MWUzZjg2NmFlNDY3NzBiODg2
YTJiMTc2M2M2NzEzNWExZjY3MjZkLi5jYjBiMzRjYjFiMjA1N2Y4NjhiY2ZkZDRhNzk2MmQ4ZTE4
YTc4ZmZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTctMDMtMzEgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIGNhcHR1cmVTdHJlYW0gaXMgZ2V0dGluZyBi
bGFjayBmcmFtZXMgd2l0aCB3ZWJnbCBjYW52YXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDMyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9jYXB0dXJlU3RyZWFtL2Nh
bnZhczNkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9j
YXB0dXJlU3RyZWFtL2NhbnZhczNkLmh0bWw6IEFkZGVkLgorCiAyMDE3LTAzLTMxICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
IEdUSysgZ2FyZGVuaW5nLiBVcGRhdGUgZXhwZWN0YXRpb25zIG9mIHNldmVyYWwgdGVzdHMuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2NhcHR1cmVTdHJlYW0vY2Fu
dmFzM2QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9jYXB0dXJl
U3RyZWFtL2NhbnZhczNkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMjExOTA2YjE3MTY0NDVi
YzRkMDE5NDEzZmUwMjY1M2Y1YmE0YmI1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYXN0cmVhbS9jYXB0dXJlU3RyZWFtL2NhbnZhczNkLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDQgQEAKKyAKKworUEFTUyBjYXB0dXJlU3RyZWFtIHdpdGggM2QgY29udGV4dCBkcmF3
aW5nIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2NhcHR1cmVT
dHJlYW0vY2FudmFzM2QuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vY2FwdHVy
ZVN0cmVhbS9jYW52YXMzZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhNGFhYmJkN2U5MjU1MWE5ZDkzNmMy
ZmJhMjUwNGIzZWY2MTcyMTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc3RyZWFtL2NhcHR1cmVTdHJlYW0vY2FudmFzM2QuaHRtbApAQCAtMCwwICsxLDU4IEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKyAg
ICA8aGVhZD4KKyAgICAgICAgPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD00MDBweCBoZWlnaHQ9
NDAwcHg+PC9jYW52YXM+CisgICAgICAgIDx2aWRlbyBpZD0idmlkZW8iIGNvbnRyb2xzIGF1dG9w
bGF5IHdpZHRoPTQwMHB4IGhlaWdodD00MDBweD48L3ZpZGVvPgorICAgICAgICA8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisKK3ZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY2FudmFzIik7Cit2YXIgdmlkZW8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
dmlkZW8iKTsKKwordmFyIGdyZWVuID0gdHJ1ZTsKK2Z1bmN0aW9uIG1vZGlmeUNhbnZhcygpCit7
CisgICAgdmFyIGdsID0gY2FudmFzLmdldENvbnRleHQoJ3dlYmdsJyk7CisgICAgZ2wuY2xlYXJD
b2xvcigwLCBncmVlbiA/IDEgOiAwLCAwLCAxKTsKKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZG
RVJfQklUKTsKKworICAgIGdyZWVuID0gIWdyZWVuOworCisgICAgc2V0VGltZW91dChtb2RpZnlD
YW52YXMsIDUwMCk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrR3JlZW5QaXhlbCh2YWx1ZSwgY3B0cikK
K3sKKyAgICB2YXIgaW5kZXggPSBjcHRyICUgNDsKKyAgICBpZiAoaW5kZXggPT0gMCkKKyAgICAg
ICAgcmV0dXJuIHZhbHVlID09IDA7CisgICAgaWYgKGluZGV4ID09IDEpCisgICAgICAgIHJldHVy
biB2YWx1ZSA9PSAyNTU7CisgICAgaWYgKGluZGV4ID09IDIpCisgICAgICAgIHJldHVybiB2YWx1
ZSA9PSAwOworICAgIGlmIChpbmRleCA9PSAzKQorICAgICAgICByZXR1cm4gdmFsdWUgPT0gMjU1
OworfQorCitwcm9taXNlX3Rlc3QoKHRlc3QpID0+IHsKKyAgICB2YXIgc3RyZWFtID0gY2FudmFz
LmNhcHR1cmVTdHJlYW0oKTsKKyAgICB2aWRlby5zcmNPYmplY3QgPSBzdHJlYW07CisKKyAgICBp
ZiAoIXdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHZhciBwcm9taXNlID0gUHJvbWlzZS5yZXNv
bHZlKCk7CisgICAgZWxzZSB7CisgICAgICAgIGludGVybmFscy5vYnNlcnZlTWVkaWFTdHJlYW1U
cmFjayhzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXSk7CisgICAgICAgIHZhciBwcm9taXNlID0g
aW50ZXJuYWxzLmdyYWJOZXh0TWVkaWFTdHJlYW1UcmFja0ZyYW1lKCkudGhlbigoZGF0YSkgPT4g
eworICAgICAgICAgICAgZGF0YS5kYXRhLmZvckVhY2goKHZhbHVlLCBjcHRyKSA9PiB7CisgICAg
ICAgICAgICAgICAgYXNzZXJ0X3RydWUoY2hlY2tHcmVlblBpeGVsKHZhbHVlLCBjcHRyKSwgImV4
cGVjdGluZyB2YWx1ZSAiICsgY3B0ciArICIgdG8gYmUgcGFydCBvZiBhIGdyZWVuIHBpeGVsIik7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSkKKyAgICB9CisKKyAgICBtb2RpZnlDYW52YXMo
KTsKKyAgICByZXR1cm4gcHJvbWlzZTsKK30sICJjYXB0dXJlU3RyZWFtIHdpdGggM2QgY29udGV4
dCBkcmF3aW5nIik7CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306023</attachid>
            <date>2017-03-31 16:08:56 -0700</date>
            <delta_ts>2017-04-03 09:18:40 -0700</delta_ts>
            <desc>Updated according review</desc>
            <filename>bug-170325-20170331160856.patch</filename>
            <type>text/plain</type>
            <size>29957</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWE1YjhhOTJjM2U4ZWYy
NDY4ZmNjOWYyNmI2OWUyNzE1OThiNmQzMi4uNDdjNjliYWIxMGNmNzAxZTFhNGU0ZDJkNzNmNTM1
YjRhMzZiMjRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDE3LTAzLTMxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBjYXB0dXJlU3RyZWFtIGlz
IGdldHRpbmcgYmxhY2sgZnJhbWVzIHdpdGggd2ViZ2wgY2FudmFzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzAzMjUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L21lZGlhc3RyZWFtL2Nh
cHR1cmVTdHJlYW0vY2FudmFzM2QuaHRtbAorCisgICAgICAgIENoYW5naW5nIHRoZSB3ZWJnbCBj
b250ZXh0IHRvIHNhdmUgYnVmZmVycyBpbiBjYXNlIHRoZSBjYW52YXMgaXMgY2FwdHVyZWQuCisg
ICAgICAgIEFkZGluZyBhIGNhbnZhcyBjaGFuZ2VkIG5vdGlmaWNhdGlvbiBpbiBjYXNlIG9mIGNs
ZWFyLgorICAgICAgICBJbiB0aGUgZnV0dXJlLCB3ZSBtaWdodCB3YW50IHRvIGNoYW5nZSB0aGlz
IG5vdGlmaWNhdGlvbiBhbmQgZG8gaXQgd2hlbiBlbmRQYWludCBvciBzaW1pbGFyIGlzIGNhbGxl
ZC4KKworICAgICAgICBBZGRpbmcgYW4gSW50ZXJuYWxzIEFQSSB0byBncmFiIHRoZSBSR0JBIGVx
dWl2YWxlbnQgb2YgdGhlIG5leHQgdHJhY2sgZnJhbWUuCisgICAgICAgIEZvciB0aGF0IHB1cnBv
c2UsIGFkZGluZyBhIGJ1bmNoIG9mIFdFQkNPUkVfRVhQT1JULgorCisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpTb3VyY2Up
OiBBZGRpbmcgY29uc3RyYWludHMgc3VwcG9ydCBzbyB0aGF0IHRyYWNrIHNldHRpbmdzCisgICAg
ICAgIGdldHRlciBhY3R1YWxseSB0cmFuc21pdHMgdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhl
IHNvdXJjZS4KKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNr
OjpTb3VyY2U6OmNhbnZhc0NoYW5nZWQpOiBlbnN1cmluZyB3ZWJnbCBjYW52YXMgY29udGV4dCBr
ZWVwIHRoZWlyIGRyYXdpbmcgYnVmZmVyLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFjay5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR3VhcmRlZE9i
amVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oOgorICAgICAgICAo
V2ViQ29yZTo6RGVmZXJyZWRQcm9taXNlOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRl
ZmVycmVkUHJvbWlzZTo6cmVqZWN0KToKKyAgICAgICAgKiBkb20vQWN0aXZlRE9NQ2FsbGJhY2su
aDoKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxDYW52YXNFbGVtZW50OjpjYXB0dXJlU3RyZWFtKToKKyAgICAgICAgKiBodG1sL0lt
YWdlRGF0YS5oOgorICAgICAgICAqIGh0bWwvSW1hZ2VEYXRhLmlkbDoKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpjbGVhcik6IGVuc3VyaW5nIGNhbnZhcyBvYnNlcnZlcnMgZ2V0
IG5vdGlmaWVkIGluIGNhc2Ugb2YgY2xlYXIgY2FsbHMuCisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6cHJlc2VydmVEcmF3aW5nQnVmZmVyKTogQWRkZWQgdG8gYWxsb3cg
Y2FudmFzIGNhcHR1cmUgdG8gdXBkYXRlIHRoaXMgcHJvcGVydHkuCisgICAgICAgICogcGxhdGZv
cm0vTWVkaWFTYW1wbGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlOjpnZXRSR0JB
SW1hZ2VEYXRhKTogQWRkZWQgZm9yIGludGVybmFscyBBUEkuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2FtcGxlQVZGT2JqQy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2FtcGxlQVZGT2JqQzo6Z2V0UkdCQUltYWdlRGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOjpjb252ZXJ0KTog
SGVscGVyIHJvdXRpbmUgZm9yIGdldFJHQkFJbWFnZURhdGEuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oOgorICAgICAgICAoV2Vi
Q29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpzZXRTdXBwb3J0ZWRDb25zdHJhaW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OnNldFN1
cHBvcnRlZENvbnN0cmFpdHMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWTWVk
aWFDYXB0dXJlU291cmNlOjppbml0aWFsaXplU2V0dGluZ3MpOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVBdWRpb1NvdXJjZU93ci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVWaWRlb1NvdXJjZU93
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OmluaXRpYWxpemVT
ZXR0aW5ncyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxzOjpncmFiTmV4dE1lZGlhU3RyZWFtVHJhY2tGcmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKToKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwog
MjAxNy0wMy0zMSAgUm9tYWluIEJlbGxlc3NvcnQgIDxyb21haW4uYmVsbGVzc29ydEBjcmYuY2Fu
b24uZnI+CiAKICAgICAgICAgW1JlYWRhYmxlIFN0cmVhbXMgQVBJXSBJbXBsZW1lbnQgY2xvbmVB
cnJheUJ1ZmZlciBpbiBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2su
Y3BwCmluZGV4IDY0NjJjNWIyNGE4NTNhZDAzMmU5ODk5NjM1YmJjMTdhZjFiZWRlMzYuLjMwMDk2
NzJiMTAzNzdiMTUwMjlkYzQ5MGJiMTE1YzQ2MTI5NTZiYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVy
ZU1lZGlhU3RyZWFtVHJhY2suY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiQ2FudmFz
Q2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaCIKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5o
IgorI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIKIAogI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCiAKQEAgLTY3LDYgKzY4LDEwIEBAIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVh
bVRyYWNrOjpTb3VyY2U6OlNvdXJjZShIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzLCBzdGQ6Om9w
CiB7CiAgICAgbV9zZXR0aW5ncy5zZXRXaWR0aChjYW52YXMud2lkdGgoKSk7CiAgICAgbV9zZXR0
aW5ncy5zZXRIZWlnaHQoY2FudmFzLmhlaWdodCgpKTsKKyAgICBSZWFsdGltZU1lZGlhU291cmNl
U3VwcG9ydGVkQ29uc3RyYWludHMgY29uc3RyYWludHM7CisgICAgY29uc3RyYWludHMuc2V0U3Vw
cG9ydHNXaWR0aCh0cnVlKTsKKyAgICBjb25zdHJhaW50cy5zZXRTdXBwb3J0c0hlaWdodCh0cnVl
KTsKKyAgICBtX3NldHRpbmdzLnNldFN1cHBvcnRlZENvbnN0cmFpbnRzKGNvbnN0cmFpbnRzKTsK
IH0KIAogdm9pZCBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpzdGFydFBy
b2R1Y2luZ0RhdGEoKQpAQCAtMTI0LDYgKzEyOSwxNyBAQCB2b2lkIENhbnZhc0NhcHR1cmVNZWRp
YVN0cmVhbVRyYWNrOjpTb3VyY2U6OmNhbnZhc0NoYW5nZWQoSFRNTENhbnZhc0VsZW1lbnQmIGNh
bgogewogICAgIEFTU0VSVF9VTlVTRUQoY2FudmFzLCBtX2NhbnZhcyA9PSAmY2FudmFzKTsKIAor
ICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIHByZXNlcnZlIGRyYXdpbmcgYnVmZmVyIGFzIHdlIGFy
ZSBjdXJyZW50bHkgZ3JhYmJpbmcgZnJhbWVzIGFzeW5jaHJvbm91c2x5LgorICAgIC8vIFdlIHNo
b3VsZCBpbnN0ZWFkIGFkZCBhbiBhbmNob3IgcG9pbnQgZm9yIGJvdGggMmQgYW5kIDNkIGNvbnRl
eHRzIHdoZXJlIGNhbnZhcyB3aWxsIGFjdHVhbGx5IHBhaW50LgorICAgIC8vIEFuZCBjYWxsIGNh
bnZhcyBvYnNlcnZlcnMgZnJvbSB0aGF0IHBvaW50LgorICAgIGlmIChjYW52YXMucmVuZGVyaW5n
Q29udGV4dCgpICYmIGNhbnZhcy5yZW5kZXJpbmdDb250ZXh0KCktPmlzV2ViR0woKSkgeworICAg
ICAgICBhdXRvJiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSY+KCpjYW52YXMucmVuZGVyaW5nQ29udGV4dCgpKTsKKyAgICAgICAgaWYgKCFjb250ZXh0Lmlz
UHJlc2VydmluZ0RyYXdpbmdCdWZmZXIoKSkgeworICAgICAgICAgICAgY2FudmFzLmRvY3VtZW50
KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6V2Fy
bmluZywgQVNDSUlMaXRlcmFsKCJUdXJuaW5nIGRyYXdpbmcgYnVmZmVyIHByZXNlcnZhdGlvbiBm
b3IgdGhlIFdlYkdMIGNhbnZhcyBiZWluZyBjYXB0dXJlZCIpKTsKKyAgICAgICAgICAgIGNvbnRl
eHQuc2V0UHJlc2VydmVEcmF3aW5nQnVmZmVyKHRydWUpOworICAgICAgICB9CisgICAgfQorCiAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCB0cnkgdG8gZ2VuZXJhdGUgdGhlIGZyYW1lIGF0IHRoZSB0
aW1lIHRoZSBzY3JlZW4gaXMgYmVpbmcgdXBkYXRlZC4KICAgICBpZiAobV9jYW52YXNDaGFuZ2Vk
VGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaAppbmRleCAwMjcxOGNk
OTVmYjcxN2ZlM2MwYjcwYWEwMjMzOGIwYmEwYmExOTU0Li41YTA5ODAwM2EzZmY1OTc0MDU2MTNi
ZjZiYmI1MDNhMjI0N2M5ZmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaApAQCAtODksNyArODksNyBAQCBwdWJsaWM6
CiAgICAgICAgIFN0cmluZyBkZXZpY2VJZDsKICAgICAgICAgU3RyaW5nIGdyb3VwSWQ7CiAgICAg
fTsKLSAgICBUcmFja1NldHRpbmdzIGdldFNldHRpbmdzKCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgVHJhY2tTZXR0aW5ncyBnZXRTZXR0aW5ncygpIGNvbnN0OwogCiAgICAgc3RydWN0IFRy
YWNrQ2FwYWJpbGl0aWVzIHsKICAgICAgICAgc3RkOjpvcHRpb25hbDxMb25nUmFuZ2U+IHdpZHRo
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HdWFyZGVkT2Jq
ZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUd1YXJkZWRPYmplY3QuaApp
bmRleCA3ODVjNWQxNjA2M2JiMDExM2E4NjZjNzE2MGE0NjkyYzJlODgzNTVmLi44YmY0NTkxMzFk
M2U2NzRjOTdhNjk2OTIyN2NjM2FlYmE3NzcxZmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUd1YXJkZWRPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUd1YXJkZWRPYmplY3QuaApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIERPTUd1YXJkZWRPYmplY3QgOiBwdWJsaWMgUmVmQ291
bnRlZDxET01HdWFyZGVkT2JqZWN0PiwgcHVibGljIEFjdGl2ZURPTUNhbGxiYWNrIHsKK2NsYXNz
IFdFQkNPUkVfRVhQT1JUIERPTUd1YXJkZWRPYmplY3QgOiBwdWJsaWMgUmVmQ291bnRlZDxET01H
dWFyZGVkT2JqZWN0PiwgcHVibGljIEFjdGl2ZURPTUNhbGxiYWNrIHsKIHB1YmxpYzoKICAgICB+
RE9NR3VhcmRlZE9iamVjdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVByb21pc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJv
bWlzZS5oCmluZGV4IGMxODRiOGYzZjc4YzNiOGIzNzkxNzM1YTQwZmI5NzhlYjkxMTAxZmUuLjE3
MDI3ZjA1MTk5NDcwNmY5YWM0NDFkMmZiYjRmZGU4OWUxYWNjMzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgcmVzb2x2ZSgqZXhlYywgdG9KUzxJRExUeXBlPigqZXhlYywgKmdsb2JhbE9iamVjdCgp
LCBzdGQ6OmZvcndhcmQ8dHlwZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZT4odmFsdWUpKSk7
CiAgICAgfQogCi0gICAgdm9pZCByZXNvbHZlKCkKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJl
c29sdmUoKQogICAgIHsKICAgICAgICAgaWYgKGlzU3VzcGVuZGVkKCkpCiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC04OCw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlamVjdCgpOwogICAg
IHZvaWQgcmVqZWN0KHN0ZDo6bnVsbHB0cl90KTsKICAgICB2b2lkIHJlamVjdChFeGNlcHRpb24m
Jik7Ci0gICAgdm9pZCByZWplY3QoRXhjZXB0aW9uQ29kZSwgY29uc3QgU3RyaW5nJiA9IHsgfSk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWplY3QoRXhjZXB0aW9uQ29kZSwgY29uc3QgU3Ry
aW5nJiA9IHsgfSk7CiAgICAgdm9pZCByZWplY3QoY29uc3QgSlNDOjpQcml2YXRlTmFtZSYpOwog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGJhY2s+CkBAIC0xMjIsNyArMTIyLDcgQEAgcHJp
dmF0ZToKIAogICAgIEpTQzo6SlNQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkKCkgY29uc3QgeyBy
ZXR1cm4gZ3VhcmRlZCgpOyB9CiAKLSAgICB2b2lkIGNhbGxGdW5jdGlvbihKU0M6OkV4ZWNTdGF0
ZSYsIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbiwgSlNDOjpKU1ZhbHVlIHJlc29sdXRpb24pOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY2FsbEZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpK
U1ZhbHVlIGZ1bmN0aW9uLCBKU0M6OkpTVmFsdWUgcmVzb2x1dGlvbik7CiAgICAgdm9pZCByZXNv
bHZlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHJlc29sdXRpb24pIHsgY2Fs
bEZ1bmN0aW9uKHN0YXRlLCBkZWZlcnJlZCgpLT5yZXNvbHZlKCksIHJlc29sdXRpb24pOyB9CiAg
ICAgdm9pZCByZWplY3QoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgcmVzb2x1
dGlvbikgeyBjYWxsRnVuY3Rpb24oc3RhdGUsIGRlZmVycmVkKCktPnJlamVjdCgpLCByZXNvbHV0
aW9uKTsgfQogfTsKQEAgLTIxMiw3ICsyMTIsNyBAQCBSZWY8RGVmZXJyZWRQcm9taXNlPiBjcmVh
dGVEZWZlcnJlZFByb21pc2UoSlNDOjpFeGVjU3RhdGUmLCBKU0RPTVdpbmRvdyYpOwogdm9pZCBm
dWxmaWxsUHJvbWlzZVdpdGhKU09OKFJlZjxEZWZlcnJlZFByb21pc2U+JiYsIGNvbnN0IFN0cmlu
ZyYpOwogdm9pZCBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmLCBBcnJheUJ1ZmZlciopOwogdm9pZCBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZl
cihSZWY8RGVmZXJyZWRQcm9taXNlPiYmLCBjb25zdCB2b2lkKiwgc2l6ZV90KTsKLXZvaWQgcmVq
ZWN0UHJvbWlzZVdpdGhFeGNlcHRpb25JZkFueShKU0M6OkV4ZWNTdGF0ZSYsIEpTRE9NR2xvYmFs
T2JqZWN0JiwgSlNDOjpKU1Byb21pc2VEZWZlcnJlZCYpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBy
ZWplY3RQcm9taXNlV2l0aEV4Y2VwdGlvbklmQW55KEpTQzo6RXhlY1N0YXRlJiwgSlNET01HbG9i
YWxPYmplY3QmLCBKU0M6OkpTUHJvbWlzZURlZmVycmVkJik7CiBKU0M6OkVuY29kZWRKU1ZhbHVl
IGNyZWF0ZVJlamVjdGVkUHJvbWlzZVdpdGhUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBjb25z
dCBTdHJpbmcmKTsKIAogdXNpbmcgUHJvbWlzZUZ1bmN0aW9uID0gdm9pZChKU0M6OkV4ZWNTdGF0
ZSYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0FjdGl2ZURPTUNhbGxiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NQ2Fs
bGJhY2suaAppbmRleCA1NjZiNDBhMWYzNmRmYjY0NGFjNjc0ZDQ5NTgzNGJlNDBhMjgyZWVjLi4w
NDI4MDJkMTg3MjdhNWVlOGYxMTcwZDExN2I4NDA1NTljMmFhMDM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NQ2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQWN0aXZlRE9NQ2FsbGJhY2suaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgQWN0
aXZlRE9NQ2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCk7CiAgICAgdmly
dHVhbCB+QWN0aXZlRE9NQ2FsbGJhY2soKTsKIAotICAgIGJvb2wgY2FuSW52b2tlQ2FsbGJhY2so
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNhbkludm9rZUNhbGxiYWNrKCkgY29u
c3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IDdkMjlhYmE3MDg3MTJjZDQ2ZDhkZTM0YTJiZjQwMGY0
NjNlMDgzMmEuLjU4NzEyMWI1ZjY5MzJhYTZkMDA2YTJjMDZkZjdlOTg0NjNhYmVlZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC02MDMsNyArNjAzLDcg
QEAgRXhjZXB0aW9uT3I8UmVmPE1lZGlhU3RyZWFtPj4gSFRNTENhbnZhc0VsZW1lbnQ6OmNhcHR1
cmVTdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ28KIAogICAgIGlmIChmcmFtZVJlcXVlc3RSYXRlICYm
IGZyYW1lUmVxdWVzdFJhdGUudmFsdWUoKSA8IDApCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24o
Tk9UX1NVUFBPUlRFRF9FUlIsIEFTQ0lJTGl0ZXJhbCgiZnJhbWVSZXF1ZXN0UmF0ZSBpcyBuZWdh
dGl2ZSIpKTsKLSAgICAKKwogICAgIGF1dG8gdHJhY2sgPSBDYW52YXNDYXB0dXJlTWVkaWFTdHJl
YW1UcmFjazo6Y3JlYXRlKGNvbnRleHQsICp0aGlzLCBXVEZNb3ZlKGZyYW1lUmVxdWVzdFJhdGUp
KTsKICAgICBhdXRvIHN0cmVhbSA9ICBNZWRpYVN0cmVhbTo6Y3JlYXRlKGNvbnRleHQpOwogICAg
IHN0cmVhbS0+YWRkVHJhY2sodHJhY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9JbWFnZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmgKaW5kZXggNmI4
Njc2ODA4NDFkYTJkMTk4ODFlYTVlYzA5YzRhODM5NTlkNjMxZC4uN2JmMTM1Yzc5YTQ4YWJmYzIw
M2QwZmMxZDY3ZmI5NTRlZTBlOGM3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9J
bWFnZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCkBAIC0zNCw3
ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSW1hZ2VEYXRhIDogcHVi
bGljIFJlZkNvdW50ZWQ8SW1hZ2VEYXRhPiB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJbWFnZURh
dGEgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZURhdGE+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
RXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IGNyZWF0ZSh1bnNpZ25lZCBzdywgdW5zaWduZWQg
c2gpOwogICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUoY29uc3QgSW50U2l6ZSYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaWRsIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaWRsCmluZGV4IDM3Njc1ZTRmYTRjY2VlN2RhYTgzODZi
NjM3YmQ1YTgzOGY0MDFhYTEuLjVlM2ZkYzkyY2FmZDBhOGRkNWI4Mjc1MTZkYmE3NzBhMDk4NWE4
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5pZGwKQEAgLTMxLDYgKzMxLDcgQEAKICAgICBD
b25zdHJ1Y3Rvcih1bnNpZ25lZCBsb25nIHN3LCB1bnNpZ25lZCBsb25nIHNoKSwKICAgICBDb25z
dHJ1Y3Rvck1heVRocm93RXhjZXB0aW9uLAogICAgIEN1c3RvbVRvSlNPYmplY3QsCisgICAgRXhw
b3J0TWFjcm89V0VCQ09SRV9FWFBPUlQsCiAgICAgRXhwb3NlZD0oV2luZG93LFdvcmtlciksCiAg
ICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKIF0gaW50ZXJmYWNlIEltYWdlRGF0YSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmNwcAppbmRleCBiNTZkODFmODM4YmJlMWIwMDdjMzMyNDllNjYzMDc4MzU5ZGUxNDViLi44MWYx
NTUyMDE4MDQwZjkwNWRmZmY0NTgxYzgzYjUyNTBiMGMxNDE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTQ3MCw3
ICs0NzAsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXIoR0MzRGJpdGZpZWxk
IG1hc2spCiAgICAgfQogICAgIGlmICghY2xlYXJJZkNvbXBvc2l0ZWQobWFzaykpCiAgICAgICAg
IG1fY29udGV4dC0+Y2xlYXIobWFzayk7Ci0gICAgbWFya0NvbnRleHRDaGFuZ2VkKCk7CisgICAg
bWFya0NvbnRleHRDaGFuZ2VkQW5kTm90aWZ5Q2FudmFzT2JzZXJ2ZXIoKTsKIH0KIAogV2ViR0xB
bnkgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIoR0MzRGVudW0gcG5hbWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmgKaW5kZXggZWE3ZWY0M2Q0ZTllMTE0ZWJkODA3Yjg5NGY1NDQ1ZDIyYmY0ODJmNi4u
NGM4NzAyMjQyM2M2ODJkOTE4MmE2ZDU1ZTg0N2I1YTE0ZThjOTBlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApA
QCAtMjA3LDYgKzIwNyw5IEBAIHB1YmxpYzoKICAgICBXZWJHTEFueSBnZXRWZXJ0ZXhBdHRyaWIo
R0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBuYW1lKTsKICAgICBsb25nIGxvbmcgZ2V0VmVydGV4
QXR0cmliT2Zmc2V0KEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwbmFtZSk7CiAKKyAgICBib29s
IGlzUHJlc2VydmluZ0RyYXdpbmdCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXMu
cHJlc2VydmVEcmF3aW5nQnVmZmVyOyB9CisgICAgdm9pZCBzZXRQcmVzZXJ2ZURyYXdpbmdCdWZm
ZXIoYm9vbCB2YWx1ZSkgeyBtX2F0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyID0gdmFs
dWU7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBoaW50KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0g
bW9kZSkgPSAwOwogICAgIEdDM0Rib29sZWFuIGlzQnVmZmVyKFdlYkdMQnVmZmVyKik7CiAgICAg
Ym9vbCBpc0NvbnRleHRMb3N0KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NZWRpYVNhbXBsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1w
bGUuaAppbmRleCBlOGE3YjU4NWFkMWMyY2EwMGY5YzZkYzhmMmUyMzM4NmQ3YjhlOTZiLi41MzIx
MjQwNzZlYWEwY2ZkNmRhYjllMGQwM2U0N2I2NmU0Njg1MzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL01lZGlhU2FtcGxlLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgTWVkaWFTYW1wbGVf
aAogCiAjaW5jbHVkZSAiRmxvYXRTaXplLmgiCisjaW5jbHVkZSA8cnVudGltZS9UeXBlZEFycmF5
cy5oPgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgpAQCAtNjksNiArNzAsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBzdGQ6OnBhaXI8UmVmUHRyPE1lZGlhU2FtcGxlPiwgUmVm
UHRyPE1lZGlhU2FtcGxlPj4gZGl2aWRlKGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGlt
ZSkgPSAwOwogICAgIHZpcnR1YWwgUmVmPE1lZGlhU2FtcGxlPiBjcmVhdGVOb25EaXNwbGF5aW5n
Q29weSgpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwgUmVmUHRyPEpTQzo6VWludDhDbGFtcGVk
QXJyYXk+IGdldFJHQkFJbWFnZURhdGEoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CisKICAg
ICBlbnVtIFNhbXBsZUZsYWdzIHsKICAgICAgICAgTm9uZSA9IDAsCiAgICAgICAgIElzU3luYyA9
IDEgPDwgMCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9NZWRpYVNhbXBsZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNhbXBsZUFWRk9iakMuaAppbmRleCBmY2RiNjFl
NDFjMmFmZmFmM2ZhYTZkMmRmYmE4ODYyNDgxYzEzOGFjLi5iYTNkY2JiNmQ4YWNiYmQ2OGNmNGEz
OTA1YTEyMjk0OGJjMzQ0NmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFTYW1wbGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2FtcGxlQVZGT2JqQy5o
CkBAIC00MSw2ICs0MSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPE1lZGlhU2FtcGxl
QVZGT2JqQz4gY3JlYXRlSW1hZ2VTYW1wbGUoUmVmPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+JiYs
IHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KTsKICAgICBzdGF0aWMg
UmVmUHRyPE1lZGlhU2FtcGxlQVZGT2JqQz4gY3JlYXRlSW1hZ2VTYW1wbGUoVmVjdG9yPHVpbnQ4
X3Q+JiYsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KTsKIAorICAg
IFJlZlB0cjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiBnZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3Qg
ZmluYWw7CisKIHByaXZhdGU6CiAgICAgTWVkaWFTYW1wbGVBVkZPYmpDKENNU2FtcGxlQnVmZmVy
UmVmIHNhbXBsZSkKICAgICAgICAgOiBtX3NhbXBsZShzYW1wbGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBs
ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KaW5kZXggMTE1OGJjNTI5MWRhZWEwOWUzN2Iz
YzIyMmNjODU5MjM4MDE0MWNmYi4uMTc4NjRhZDJhOGJjMjhjZGI4MWY2YmFiY2FlNzJmNGRiYjVh
ZWYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbQpA
QCAtMjYsNiArMjYsOCBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJNZWRpYVNhbXBs
ZUFWRk9iakMuaCIKIAorI2ltcG9ydCAiUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oIgorI2ltcG9y
dCA8cnVudGltZS9UeXBlZEFycmF5SW5saW5lcy5oPgogI2ltcG9ydCA8d3RmL1ByaW50U3RyZWFt
Lmg+CiAKICNpbXBvcnQgIkNvcmVNZWRpYVNvZnRMaW5rLmgiCkBAIC0yNjUsNCArMjY3LDI4IEBA
IFJlZjxNZWRpYVNhbXBsZT4gTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGVOb25EaXNwbGF5aW5n
Q29weSgpIGNvbnN0CiAgICAgcmV0dXJuIE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlKGFkb3B0
Q0YobmV3U2FtcGxlQnVmZmVyKS5nZXQoKSwgbV9pZCk7CiB9CiAKK1JlZlB0cjxKU0M6OlVpbnQ4
Q2xhbXBlZEFycmF5PiBNZWRpYVNhbXBsZUFWRk9iakM6OmdldFJHQkFJbWFnZURhdGEoKSBjb25z
dAoreworICAgIGNvbnN0IE9TVHlwZSBpbWFnZUZvcm1hdCA9IGtDVlBpeGVsRm9ybWF0VHlwZV8z
MlJHQkE7CisgICAgUmV0YWluUHRyPENGTnVtYmVyUmVmPiBpbWFnZUZvcm1hdE51bWJlciA9IGFk
b3B0Q0YoQ0ZOdW1iZXJDcmVhdGUobnVsbHB0ciwgIGtDRk51bWJlckludFR5cGUsICAmaW1hZ2VG
b3JtYXQpKTsKKworICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiBjb25mb3Jt
ZXJPcHRpb25zID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDEsICZrQ0ZU
eXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFj
a3MpKTsKKyAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShjb25mb3JtZXJPcHRpb25zLmdldCgpLCBr
Q1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleSwgaW1hZ2VGb3JtYXROdW1iZXIuZ2V0KCkp
OworICAgIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1YgcGl4ZWxCdWZmZXJDb25mb3JtZXIoY29uZm9y
bWVyT3B0aW9ucy5nZXQoKSk7CisKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gc3RhdGljX2Nhc3Q8
Q1ZQaXhlbEJ1ZmZlclJlZj4oQ01TYW1wbGVCdWZmZXJHZXRJbWFnZUJ1ZmZlcihtX3NhbXBsZS5n
ZXQoKSkpOworICAgIGF1dG8gcmdiYVBpeGVsQnVmZmVyID0gcGl4ZWxCdWZmZXJDb25mb3JtZXIu
Y29udmVydChwaXhlbEJ1ZmZlcik7CisgICAgYXV0byBzdGF0dXMgPSBDVlBpeGVsQnVmZmVyTG9j
a0Jhc2VBZGRyZXNzKHJnYmFQaXhlbEJ1ZmZlci5nZXQoKSwga0NWUGl4ZWxCdWZmZXJMb2NrX1Jl
YWRPbmx5KTsKKyAgICBBU1NFUlQoc3RhdHVzID09IG5vRXJyKTsKKworICAgIHZvaWQqIGRhdGEg
PSBDVlBpeGVsQnVmZmVyR2V0QmFzZUFkZHJlc3NPZlBsYW5lKHJnYmFQaXhlbEJ1ZmZlci5nZXQo
KSwgMCk7CisgICAgc2l6ZV90IGJ5dGVMZW5ndGggPSBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KHBp
eGVsQnVmZmVyKSAqIENWUGl4ZWxCdWZmZXJHZXRXaWR0aChwaXhlbEJ1ZmZlcikgKiA0OworICAg
IGF1dG8gcmVzdWx0ID0gSlNDOjpVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlKEpTQzo6QXJyYXlC
dWZmZXI6OmNyZWF0ZShkYXRhLCBieXRlTGVuZ3RoKSwgMCwgYnl0ZUxlbmd0aCk7CisKKyAgICBz
dGF0dXMgPSBDVlBpeGVsQnVmZmVyVW5sb2NrQmFzZUFkZHJlc3MocmdiYVBpeGVsQnVmZmVyLmdl
dCgpLCBrQ1ZQaXhlbEJ1ZmZlckxvY2tfUmVhZE9ubHkpOworICAgIEFTU0VSVChzdGF0dXMgPT0g
bm9FcnIpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1l
ckNWLmNwcAppbmRleCAwYjY0N2VmZjlkMWQzMjU1ZDZjMGQ2MDY4YzMwOGZiODFiZDM5MmYwLi44
MmMxZDU2ZGJkMjA3MzU1OGNjNmZkNDYwYzk0MGU0MTMzODBkODVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNv
bmZvcm1lckNWLmNwcApAQCAtNzIsNiArNzIsMjQgQEAgc3RhdGljIHZvaWQgQ1ZQaXhlbEJ1ZmZl
clJlbGVhc2VJbmZvQ2FsbGJhY2sodm9pZCogaW5mbykKICAgICBDRlJlbGVhc2UocGl4ZWxCdWZm
ZXIpOwogfQogCitSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gUGl4ZWxCdWZmZXJDb25mb3Jt
ZXJDVjo6Y29udmVydChDVlBpeGVsQnVmZmVyUmVmIHJhd0J1ZmZlcikKK3sKKyNpZiBVU0UoVklE
RU9UT09MQk9YKQorICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBidWZmZXIgeyByYXdC
dWZmZXIgfTsKKworICAgIGlmICghVlRQaXhlbEJ1ZmZlckNvbmZvcm1lcklzQ29uZm9ybWFudFBp
eGVsQnVmZmVyKG1fcGl4ZWxDb25mb3JtZXIuZ2V0KCksIGJ1ZmZlci5nZXQoKSkpIHsKKyAgICAg
ICAgQ1ZQaXhlbEJ1ZmZlclJlZiBvdXRwdXRCdWZmZXIgPSBudWxscHRyOworICAgICAgICBPU1N0
YXR1cyBzdGF0dXMgPSBWVFBpeGVsQnVmZmVyQ29uZm9ybWVyQ29weUNvbmZvcm1lZFBpeGVsQnVm
ZmVyKG1fcGl4ZWxDb25mb3JtZXIuZ2V0KCksIGJ1ZmZlci5nZXQoKSwgZmFsc2UsICZvdXRwdXRC
dWZmZXIpOworICAgICAgICBpZiAoc3RhdHVzICE9IG5vRXJyIHx8ICFvdXRwdXRCdWZmZXIpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGFkb3B0Q0Yob3V0cHV0
QnVmZmVyKTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShyYXdCdWZmZXIpOworI2Vu
ZGlmCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIFJldGFpblB0cjxDR0ltYWdlUmVmPiBQaXhl
bEJ1ZmZlckNvbmZvcm1lckNWOjpjcmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihDVlBpeGVsQnVm
ZmVyUmVmIHJhd0J1ZmZlcikKIHsKICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gYnVm
ZmVyIHsgcmF3QnVmZmVyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgKaW5kZXggNzZlYTgxYjIw
NzEwNzA4MjJiZGE4YTg4ZGJjZjU2ZmM1MjJlZTljMC4uZDE3YmIzYzIzMjg1YzA5NDY2MjVlZTdi
ZGM3MGVjMjM0MWE2OWVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaApAQCAtMzcsNiArMzcs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWIHsK
IHB1YmxpYzoKICAgICBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWKENGRGljdGlvbmFyeVJlZiBhdHRy
aWJ1dGVzKTsKKyAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gY29udmVydChDVlBpeGVs
QnVmZmVyUmVmKTsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRlSW1hZ2VGcm9tUGl4
ZWxCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5ncy5oCmluZGV4IGI2MTJlMzI2YThlM2JjN2U2ZTdiY2Q2YzQ0ZmJlMDEwMzE5
MWZkNjcuLjVhNGM5YTUzNzdjMGIyY2Q1MmVmNDViNWIyNmY0YjYxYTE4M2E2NTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oCkBAIC05Miw3ICs5Miw3IEBAIHB1YmxpYzoKICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIGdyb3VwSWQoKSBjb25zdCB7IHJldHVybiBtX2dyb3VwSWQ7
IH0KICAgICB2b2lkIHNldEdyb3VwSWQoY29uc3QgQXRvbWljU3RyaW5nJiBncm91cElkKSB7IG1f
Z3JvdXBJZCA9IGdyb3VwSWQ7IH0KIAotICAgIHZvaWQgc2V0U3VwcG9ydGVkQ29uc3RyYWl0cyhj
b25zdCBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIHN1cHBvcnRlZENv
bnN0cmFpbnRzKSB7IG1fc3VwcG9ydGVkQ29uc3RyYWludHMgPSBzdXBwb3J0ZWRDb25zdHJhaW50
czsgfQorICAgIHZvaWQgc2V0U3VwcG9ydGVkQ29uc3RyYWludHMoY29uc3QgUmVhbHRpbWVNZWRp
YVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJiBzdXBwb3J0ZWRDb25zdHJhaW50cykgeyBtX3N1
cHBvcnRlZENvbnN0cmFpbnRzID0gc3VwcG9ydGVkQ29uc3RyYWludHM7IH0KIAogICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5ncyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tCmluZGV4
IGRlMmY4Y2I2MTIwZjY1ZWQ3ZmViMGIxZmQ5ZDhjM2YyYmM3Zjc3MmYuLjU2NjhhYTAxNjk0N2Fk
MGMwNGMxODM1ZDkzYTM3NDc5ZjQ4YzMwNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2Uu
bW0KQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIEFWTWVkaWFDYXB0dXJlU291cmNlOjpjb21taXRD
b25maWd1cmF0aW9uKCkKIHZvaWQgQVZNZWRpYUNhcHR1cmVTb3VyY2U6OmluaXRpYWxpemVTZXR0
aW5ncygpCiB7CiAgICAgaWYgKG1fY3VycmVudFNldHRpbmdzLmRldmljZUlkKCkuaXNFbXB0eSgp
KQotICAgICAgICBtX2N1cnJlbnRTZXR0aW5ncy5zZXRTdXBwb3J0ZWRDb25zdHJhaXRzKHN1cHBv
cnRlZENvbnN0cmFpbnRzKCkpOworICAgICAgICBtX2N1cnJlbnRTZXR0aW5ncy5zZXRTdXBwb3J0
ZWRDb25zdHJhaW50cyhzdXBwb3J0ZWRDb25zdHJhaW50cygpKTsKIAogICAgIG1fY3VycmVudFNl
dHRpbmdzLnNldERldmljZUlkKGlkKCkpOwogICAgIHVwZGF0ZVNldHRpbmdzKG1fY3VycmVudFNl
dHRpbmdzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L29wZW53ZWJydGMvUmVhbHRpbWVBdWRpb1NvdXJjZU93ci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZUF1ZGlvU291cmNlT3dyLmgKaW5k
ZXggMjM0OWYwNTFiMGYzNmMzNDQzOGU0MzJmYTczOGIyMTA3ZTk0OTI5OC4uY2FiNzA1MDg0Yjk0
Y2ZjOGU3YjE5ZjdkN2U4MjMyNjhjYmNlZjQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZUF1ZGlvU291cmNlT3dyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFs
dGltZUF1ZGlvU291cmNlT3dyLmgKQEAgLTU5LDcgKzU5LDcgQEAgUmVhbHRpbWVBdWRpb1NvdXJj
ZU93cihjb25zdCBTdHJpbmcmIGlkLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIGNv
bnN0IFMKIHByb3RlY3RlZDoKICAgICB2b2lkIGluaXRpYWxpemVTZXR0aW5ncygpIGZpbmFsIHsK
ICAgICAgICAgaWYgKG1fY3VycmVudFNldHRpbmdzLmRldmljZUlkKCkuaXNFbXB0eSgpKQotICAg
ICAgICAgICAgbV9jdXJyZW50U2V0dGluZ3Muc2V0U3VwcG9ydGVkQ29uc3RyYWl0cyhzdXBwb3J0
ZWRDb25zdHJhaW50cygpKTsKKyAgICAgICAgICAgIG1fY3VycmVudFNldHRpbmdzLnNldFN1cHBv
cnRlZENvbnN0cmFpbnRzKHN1cHBvcnRlZENvbnN0cmFpbnRzKCkpOwogCiAgICAgICAgIG1fY3Vy
cmVudFNldHRpbmdzLnNldERldmljZUlkKGlkKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVWaWRlb1Nv
dXJjZU93ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0
Yy9SZWFsdGltZVZpZGVvU291cmNlT3dyLmgKaW5kZXggZGM2NmEzZTJiOTYxMzYwZTg4NmIzZDA2
Y2JlZDkxMzEzMmZiMTQ1NC4uNDE4ZWY4NGE3MWE1NzM0N2U4NWQzNTI4MzY5ZTI3OWM3YTY2ZjQ1
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3Blbndl
YnJ0Yy9SZWFsdGltZVZpZGVvU291cmNlT3dyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZVZpZGVvU291cmNlT3dyLmgKQEAgLTU5
LDcgKzU5LDcgQEAgUmVhbHRpbWVWaWRlb1NvdXJjZU93cihjb25zdCBTdHJpbmcmIGlkLCBSZWFs
dGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IFMKIHByb3RlY3RlZDoKICAgICB2b2lk
IGluaXRpYWxpemVTZXR0aW5ncygpIGZpbmFsIHsKICAgICAgICAgaWYgKG1fY3VycmVudFNldHRp
bmdzLmRldmljZUlkKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgbV9jdXJyZW50U2V0dGluZ3Mu
c2V0U3VwcG9ydGVkQ29uc3RyYWl0cyhzdXBwb3J0ZWRDb25zdHJhaW50cygpKTsKKyAgICAgICAg
ICAgIG1fY3VycmVudFNldHRpbmdzLnNldFN1cHBvcnRlZENvbnN0cmFpbnRzKHN1cHBvcnRlZENv
bnN0cmFpbnRzKCkpOwogCiAgICAgICAgIG1fY3VycmVudFNldHRpbmdzLnNldERldmljZUlkKGlk
KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZU1lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2UuY3BwCmluZGV4IDc3Yzk3MTQ4YTEwNzNmZmZhZmEwNmNiMDM5OTk0
MGY4NTRmNmIyZDguLjc3OTBjZTllMmI5NWQ1YWVlMzZjMTc1ODUxYTNmZjk4MjkxZTFjYzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2UuY3BwCkBAIC05OCw3ICs5OCw3IEBAIFJlZlB0cjxSZWFsdGltZU1lZGlhU291
cmNlQ2FwYWJpbGl0aWVzPiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6Y2FwYWJpbGl0aWVzKCkK
IHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OmluaXRpYWxpemVTZXR0aW5ncygpCiB7CiAg
ICAgaWYgKG1fY3VycmVudFNldHRpbmdzLmRldmljZUlkKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IG1fY3VycmVudFNldHRpbmdzLnNldFN1cHBvcnRlZENvbnN0cmFpdHMoc3VwcG9ydGVkQ29uc3Ry
YWludHMoKSk7CisgICAgICAgIG1fY3VycmVudFNldHRpbmdzLnNldFN1cHBvcnRlZENvbnN0cmFp
bnRzKHN1cHBvcnRlZENvbnN0cmFpbnRzKCkpOwogICAgICAgICBtX2N1cnJlbnRTZXR0aW5ncy5z
ZXREZXZpY2VJZChpZCgpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAppbmRleCA2NzJiNGQ0Mzk0ODc3OGU5YjdhZjI2ZWU4NTIyYmQ3ZTA5NWE5YzNjLi5mZTBjZTI2
ZmYwNDlkMmIxNWJlMzE5ZTRiMDU0YzYyMDA4ZjJiZjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCkBAIC04NSw2ICs4NSw3IEBACiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0Fn
ZW50cy5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJJbnRlcm5hbFNldHRpbmdz
LmgiCisjaW5jbHVkZSAiSlNJbWFnZURhdGEuaCIKICNpbmNsdWRlICJMYW5ndWFnZS5oIgogI2lu
Y2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCkBAIC0z
OTIxLDYgKzM5MjIsMzMgQEAgdm9pZCBJbnRlcm5hbHM6Om9ic2VydmVNZWRpYVN0cmVhbVRyYWNr
KE1lZGlhU3RyZWFtVHJhY2smIHRyYWNrKQogICAgIG1fdHJhY2sgPSAmdHJhY2s7CiAgICAgbV90
cmFjay0+c291cmNlKCkuYWRkT2JzZXJ2ZXIoKnRoaXMpOwogfQorCit2b2lkIEludGVybmFsczo6
Z3JhYk5leHRNZWRpYVN0cmVhbVRyYWNrRnJhbWUoVHJhY2tGcmFtZVByb21pc2UmJiBwcm9taXNl
KQoreworICAgIG1fbmV4dFRyYWNrRnJhbWVQcm9taXNlID0gV1RGTW92ZShwcm9taXNlKTsKK30K
Kwordm9pZCBJbnRlcm5hbHM6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBzYW1w
bGUpCit7CisgICAgbV90cmFja1ZpZGVvU2FtcGxlQ291bnQrKzsKKyAgICBpZiAoIW1fbmV4dFRy
YWNrRnJhbWVQcm9taXNlKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHZpZGVvU2V0dGlu
Z3MgPSBtX3RyYWNrLT5nZXRTZXR0aW5ncygpOworICAgIGlmICghdmlkZW9TZXR0aW5ncy53aWR0
aCB8fCAhdmlkZW9TZXR0aW5ncy5oZWlnaHQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8g
cmdiYSA9IHNhbXBsZS5nZXRSR0JBSW1hZ2VEYXRhKCk7CisgICAgaWYgKCFyZ2JhKQorICAgICAg
ICByZXR1cm47CisgICAgYXV0byBpbWFnZURhdGEgPSBJbWFnZURhdGE6OmNyZWF0ZShyZ2JhLnJl
bGVhc2VOb25OdWxsKCksICp2aWRlb1NldHRpbmdzLndpZHRoLCAqdmlkZW9TZXR0aW5ncy5oZWln
aHQpOworICAgIGlmICghaW1hZ2VEYXRhLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICBtX25leHRU
cmFja0ZyYW1lUHJvbWlzZS0+cmVzb2x2ZShpbWFnZURhdGEucmVsZWFzZVJldHVyblZhbHVlKCku
cmVsZWFzZU5vbk51bGwoKSk7CisgICAgZWxzZQorICAgICAgICBtX25leHRUcmFja0ZyYW1lUHJv
bWlzZS0+cmVqZWN0KGltYWdlRGF0YS5leGNlcHRpb24oKS5jb2RlKCkpOworICAgIG1fbmV4dFRy
YWNrRnJhbWVQcm9taXNlID0gc3RkOjpudWxsb3B0OworfQorCiAjZW5kaWYKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggNDUwZmI0MjNl
MGZkYWVmZDNmYzUzMWFkZDg5MDNiZDM2NjBiMDRiYi4uYTViMmY1NDEwMTAwN2ZmNzlkNDMyNDli
ZDk1MGFkMDc2MTI5OTkwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0yOSw5
ICsyOSwxMSBAQAogI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oIgogI2lu
Y2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9u
T3IuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKICNpbmNsdWRlICJQYWdlQ29uc29sZUNs
aWVudC5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKICNpbmNsdWRlIDxydW50
aW1lL0Zsb2F0MzJBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiAjaWYgRU5B
QkxFKE1FRElBX1NFU1NJT04pCiAjaW5jbHVkZSAiTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJv
dmlkZXIuaCIKQEAgLTU0LDYgKzU2LDcgQEAgY2xhc3MgSFRNTElucHV0RWxlbWVudDsKIGNsYXNz
IEhUTUxMaW5rRWxlbWVudDsKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBjbGFzcyBIVE1MU2Vs
ZWN0RWxlbWVudDsKK2NsYXNzIEltYWdlRGF0YTsKIGNsYXNzIEluc3BlY3RvclN0dWJGcm9udGVu
ZDsKIGNsYXNzIEludGVybmFsU2V0dGluZ3M7CiBjbGFzcyBNYWxsb2NTdGF0aXN0aWNzOwpAQCAt
NTY1LDYgKzU2OCw4IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBsb25nIHRyYWNrQXVkaW9TYW1w
bGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhY2tBdWRpb1NhbXBsZUNvdW50OyB9CiAgICAg
dW5zaWduZWQgbG9uZyB0cmFja1ZpZGVvU2FtcGxlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3Ry
YWNrVmlkZW9TYW1wbGVDb3VudDsgfQogICAgIHZvaWQgb2JzZXJ2ZU1lZGlhU3RyZWFtVHJhY2so
TWVkaWFTdHJlYW1UcmFjayYpOworICAgIHVzaW5nIFRyYWNrRnJhbWVQcm9taXNlID0gRE9NUHJv
bWlzZTxJRExJbnRlcmZhY2U8SW1hZ2VEYXRhPj47CisgICAgdm9pZCBncmFiTmV4dE1lZGlhU3Ry
ZWFtVHJhY2tGcmFtZShUcmFja0ZyYW1lUHJvbWlzZSYmKTsKICNlbmRpZgogCiBwcml2YXRlOgpA
QCAtNTc2LDEyICs1ODEsMTMgQEAgcHJpdmF0ZToKIAogICAgIC8vIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6Ok9ic2VydmVyIEFQSQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgdm9pZCB2aWRl
b1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYpIGZpbmFsIHsgbV90cmFja1ZpZGVvU2FtcGxl
Q291bnQrKzsgfQorICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmKSBm
aW5hbDsKICAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBj
b25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBz
aXplX3QpIGZpbmFsIHsgbV90cmFja0F1ZGlvU2FtcGxlQ291bnQrKzsgfQogCiAgICAgdW5zaWdu
ZWQgbG9uZyBtX3RyYWNrVmlkZW9TYW1wbGVDb3VudCB7IDAgfTsKICAgICB1bnNpZ25lZCBsb25n
IG1fdHJhY2tBdWRpb1NhbXBsZUNvdW50IHsgMCB9OwogICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRy
YWNrPiBtX3RyYWNrOworICAgIHN0ZDo6b3B0aW9uYWw8VHJhY2tGcmFtZVByb21pc2U+IG1fbmV4
dFRyYWNrRnJhbWVQcm9taXNlOwogI2VuZGlmCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVj
dG9yU3R1YkZyb250ZW5kPiBtX2luc3BlY3RvckZyb250ZW5kOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsCmluZGV4IGY4NWY2MjUxNTY0ZmIzM2NhZjI1NDA2ZmMxYzk0MTRhZTY5Nzgx
ZWEuLjA5OTVmZWIzZGVjZjUzNmY3OTVjY2Y3NDg1NTE4YTA2NDRkM2RiNzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTUyNyw2ICs1MjcsNyBAQCBlbnVtIEV2ZW50VGhy
b3R0bGluZ0JlaGF2aW9yIHsKICAgICBbQ29uZGl0aW9uYWw9V0VCR0xdIHZvaWQgc2ltdWxhdGVX
ZWJHTENvbnRleHRDaGFuZ2VkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UgY29udGV4dCk7CiAK
ICAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNXSB2b2lkIG9ic2VydmVNZWRpYVN0cmVhbVRy
YWNrKE1lZGlhU3RyZWFtVHJhY2sgdHJhY2spOworICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJF
QU1dIFByb21pc2U8SW1hZ2VEYXRhPiBncmFiTmV4dE1lZGlhU3RyZWFtVHJhY2tGcmFtZSgpOwog
ICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU1dIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25l
ZCBsb25nIHRyYWNrQXVkaW9TYW1wbGVDb3VudDsKICAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RS
RUFNXSByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB0cmFja1ZpZGVvU2FtcGxlQ291
bnQ7CiB9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDkxZTNmODY2YWU0Njc3MGI4ODZhMmIxNzYzYzY3MTM1YTFmNjcyNmQu
LmNiMGIzNGNiMWIyMDU3Zjg2OGJjZmRkNGE3OTYyZDhlMThhNzhmZmMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAxNy0wMy0zMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisK
KyAgICAgICAgY2FwdHVyZVN0cmVhbSBpcyBnZXR0aW5nIGJsYWNrIGZyYW1lcyB3aXRoIHdlYmds
IGNhbnZhcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTcwMzI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBmYXN0L21lZGlhc3RyZWFtL2NhcHR1cmVTdHJlYW0vY2FudmFzM2QtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL2NhcHR1cmVTdHJlYW0vY2FudmFzM2Qu
aHRtbDogQWRkZWQuCisKIDIwMTctMDMtMzEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgR1RLKyBnYXJkZW5pbmcuIFVwZGF0
ZSBleHBlY3RhdGlvbnMgb2Ygc2V2ZXJhbCB0ZXN0cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvbWVkaWFzdHJlYW0vY2FwdHVyZVN0cmVhbS9jYW52YXMzZC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2NhcHR1cmVTdHJlYW0vY2FudmFzM2QtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjIyMTE5MDZiMTcxNjQ0NWJjNGQwMTk0MTNmZTAyNjUzZjViYTRi
YjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2NhcHR1
cmVTdHJlYW0vY2FudmFzM2QtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorIAorCitQQVNT
IGNhcHR1cmVTdHJlYW0gd2l0aCAzZCBjb250ZXh0IGRyYXdpbmcgCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vY2FwdHVyZVN0cmVhbS9jYW52YXMzZC5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9jYXB0dXJlU3RyZWFtL2NhbnZhczNkLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMGE0YWFiYmQ3ZTkyNTUxYTlkOTM2YzJmYmEyNTA0YjNlZjYxNzIxNAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vY2FwdHVyZVN0cmVh
bS9jYW52YXMzZC5odG1sCkBAIC0wLDAgKzEsNTggQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8Y2Fu
dmFzIGlkPSJjYW52YXMiIHdpZHRoPTQwMHB4IGhlaWdodD00MDBweD48L2NhbnZhcz4KKyAgICAg
ICAgPHZpZGVvIGlkPSJ2aWRlbyIgY29udHJvbHMgYXV0b3BsYXkgd2lkdGg9NDAwcHggaGVpZ2h0
PTQwMHB4PjwvdmlkZW8+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlw
dD4KKwordmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKK3Zh
ciB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlbyIpOworCit2YXIgZ3JlZW4g
PSB0cnVlOworZnVuY3Rpb24gbW9kaWZ5Q2FudmFzKCkKK3sKKyAgICB2YXIgZ2wgPSBjYW52YXMu
Z2V0Q29udGV4dCgnd2ViZ2wnKTsKKyAgICBnbC5jbGVhckNvbG9yKDAsIGdyZWVuID8gMSA6IDAs
IDAsIDEpOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworCisgICAgZ3JlZW4g
PSAhZ3JlZW47CisKKyAgICBzZXRUaW1lb3V0KG1vZGlmeUNhbnZhcywgNTAwKTsKK30KKworZnVu
Y3Rpb24gY2hlY2tHcmVlblBpeGVsKHZhbHVlLCBjcHRyKQoreworICAgIHZhciBpbmRleCA9IGNw
dHIgJSA0OworICAgIGlmIChpbmRleCA9PSAwKQorICAgICAgICByZXR1cm4gdmFsdWUgPT0gMDsK
KyAgICBpZiAoaW5kZXggPT0gMSkKKyAgICAgICAgcmV0dXJuIHZhbHVlID09IDI1NTsKKyAgICBp
ZiAoaW5kZXggPT0gMikKKyAgICAgICAgcmV0dXJuIHZhbHVlID09IDA7CisgICAgaWYgKGluZGV4
ID09IDMpCisgICAgICAgIHJldHVybiB2YWx1ZSA9PSAyNTU7Cit9CisKK3Byb21pc2VfdGVzdCgo
dGVzdCkgPT4geworICAgIHZhciBzdHJlYW0gPSBjYW52YXMuY2FwdHVyZVN0cmVhbSgpOworICAg
IHZpZGVvLnNyY09iamVjdCA9IHN0cmVhbTsKKworICAgIGlmICghd2luZG93LmludGVybmFscykK
KyAgICAgICAgdmFyIHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTsKKyAgICBlbHNlIHsKKyAg
ICAgICAgaW50ZXJuYWxzLm9ic2VydmVNZWRpYVN0cmVhbVRyYWNrKHN0cmVhbS5nZXRWaWRlb1Ry
YWNrcygpWzBdKTsKKyAgICAgICAgdmFyIHByb21pc2UgPSBpbnRlcm5hbHMuZ3JhYk5leHRNZWRp
YVN0cmVhbVRyYWNrRnJhbWUoKS50aGVuKChkYXRhKSA9PiB7CisgICAgICAgICAgICBkYXRhLmRh
dGEuZm9yRWFjaCgodmFsdWUsIGNwdHIpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1
ZShjaGVja0dyZWVuUGl4ZWwodmFsdWUsIGNwdHIpLCAiZXhwZWN0aW5nIHZhbHVlICIgKyBjcHRy
ICsgIiB0byBiZSBwYXJ0IG9mIGEgZ3JlZW4gcGl4ZWwiKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9KQorICAgIH0KKworICAgIG1vZGlmeUNhbnZhcygpOworICAgIHJldHVybiBwcm9taXNl
OworfSwgImNhcHR1cmVTdHJlYW0gd2l0aCAzZCBjb250ZXh0IGRyYXdpbmciKTsKKyAgICAgICAg
PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306076</attachid>
            <date>2017-04-03 09:18:41 -0700</date>
            <delta_ts>2017-04-03 09:59:44 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-170325-20170403091912.patch</filename>
            <type>text/plain</type>
            <size>30860</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0Nzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjg3MjEwMWEyMzZjNGY2
YjdhZGFmZTg5N2EyYjQ1NDdiY2M1ODZkZC4uMTcwMDY0NWNhZTdmNGYzZWRiZmVmN2FhNjZkMzZl
NDJhYTAzYmRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDE3LTA0LTAzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBjYXB0dXJlU3RyZWFtIGlz
IGdldHRpbmcgYmxhY2sgZnJhbWVzIHdpdGggd2ViZ2wgY2FudmFzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzAzMjUKKworICAgICAgICBSZXZpZXdl
ZCBieSBEZWFuIEphY2tzb24uCisKKyAgICAgICAgVGVzdDogZmFzdC9tZWRpYXN0cmVhbS9jYXB0
dXJlU3RyZWFtL2NhbnZhczNkLmh0bWwKKworICAgICAgICBDaGFuZ2luZyB0aGUgd2ViZ2wgY29u
dGV4dCB0byBzYXZlIGJ1ZmZlcnMgaW4gY2FzZSB0aGUgY2FudmFzIGlzIGNhcHR1cmVkLgorICAg
ICAgICBBZGRpbmcgYSBjYW52YXMgY2hhbmdlZCBub3RpZmljYXRpb24gaW4gY2FzZSBvZiBjbGVh
ci4KKyAgICAgICAgSW4gdGhlIGZ1dHVyZSwgd2UgbWlnaHQgd2FudCB0byBjaGFuZ2UgdGhpcyBu
b3RpZmljYXRpb24gYW5kIGRvIGl0IHdoZW4gZW5kUGFpbnQgb3Igc2ltaWxhciBpcyBjYWxsZWQu
CisKKyAgICAgICAgQWRkaW5nIGFuIEludGVybmFscyBBUEkgdG8gZ3JhYiB0aGUgUkdCQSBlcXVp
dmFsZW50IG9mIHRoZSBuZXh0IHRyYWNrIGZyYW1lLgorICAgICAgICBGb3IgdGhhdCBwdXJwb3Nl
LCBhZGRpbmcgYSBidW5jaCBvZiBXRUJDT1JFX0VYUE9SVC4KKworICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OlNvdXJjZTo6U291cmNlKTog
QWRkaW5nIGNvbnN0cmFpbnRzIHN1cHBvcnQgc28gdGhhdCB0cmFjayBzZXR0aW5ncworICAgICAg
ICBnZXR0ZXIgYWN0dWFsbHkgdHJhbnNtaXRzIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSBz
b3VyY2UuCisgICAgICAgIChXZWJDb3JlOjpDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6
U291cmNlOjpjYW52YXNDaGFuZ2VkKTogZW5zdXJpbmcgd2ViZ2wgY2FudmFzIGNvbnRleHQga2Vl
cCB0aGVpciBkcmF3aW5nIGJ1ZmZlci4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2suaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUd1YXJkZWRPYmpl
Y3QuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWZl
cnJlZFByb21pc2U6OnJlamVjdCk6CisgICAgICAgICogZG9tL0FjdGl2ZURPTUNhbGxiYWNrLmg6
CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQ2FudmFzRWxlbWVudDo6Y2FwdHVyZVN0cmVhbSk6CisgICAgICAgICogaHRtbC9JbWFn
ZURhdGEuaDoKKyAgICAgICAgKiBodG1sL0ltYWdlRGF0YS5pZGw6CisgICAgICAgICogaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Y2xlYXIpOiBlbnN1cmluZyBjYW52YXMgb2JzZXJ2ZXJzIGdldCBu
b3RpZmllZCBpbiBjYXNlIG9mIGNsZWFyIGNhbGxzLgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnByZXNlcnZlRHJhd2luZ0J1ZmZlcik6IEFkZGVkIHRvIGFsbG93IGNh
bnZhcyBjYXB0dXJlIHRvIHVwZGF0ZSB0aGlzIHByb3BlcnR5LgorICAgICAgICAqIHBsYXRmb3Jt
L01lZGlhU2FtcGxlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZTo6Z2V0UkdCQUlt
YWdlRGF0YSk6IEFkZGVkIGZvciBpbnRlcm5hbHMgQVBJLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNhbXBsZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNhbXBsZUFWRk9iakM6OmdldFJHQkFJbWFnZURhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGl4ZWxCdWZmZXJDb25mb3JtZXJDVjo6Y29udmVydCk6IEhl
bHBlciByb3V0aW5lIGZvciBnZXRSR0JBSW1hZ2VEYXRhLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6c2V0U3VwcG9ydGVkQ29uc3RyYWludHMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpzZXRTdXBw
b3J0ZWRDb25zdHJhaXRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW06CisgICAgICAgIChXZWJDb3JlOjpBVk1lZGlh
Q2FwdHVyZVNvdXJjZTo6aW5pdGlhbGl6ZVNldHRpbmdzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lQXVkaW9Tb3VyY2VPd3IuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lVmlkZW9Tb3VyY2VPd3Iu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlOjppbml0aWFsaXplU2V0
dGluZ3MpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6Z3JhYk5leHRNZWRpYVN0cmVhbVRyYWNrRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxzOjp2aWRlb1NhbXBsZUF2YWlsYWJsZSk6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIw
MTctMDQtMDMgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAg
IEltcGxlbWVudCBzdHJva2UtbWl0ZXJsaW1pdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJl
YW1UcmFjay5jcHAKaW5kZXggNjQ2MmM1YjI0YTg1M2FkMDMyZTk4OTk2MzViYmMxN2FmMWJlZGUz
Ni4uMzAwOTY3MmIxMDM3N2IxNTAyOWRjNDkwYmIxMTVjNDYxMjk1NmJjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJl
YW1UcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52
YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRl
ICJDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oIgogCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgogCiAjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKIApAQCAtNjcsNiArNjgsMTAgQEAgQ2FudmFzQ2FwdHVyZU1l
ZGlhU3RyZWFtVHJhY2s6OlNvdXJjZTo6U291cmNlKEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMs
IHN0ZDo6b3AKIHsKICAgICBtX3NldHRpbmdzLnNldFdpZHRoKGNhbnZhcy53aWR0aCgpKTsKICAg
ICBtX3NldHRpbmdzLnNldEhlaWdodChjYW52YXMuaGVpZ2h0KCkpOworICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyBjb25zdHJhaW50czsKKyAgICBjb25zdHJhaW50
cy5zZXRTdXBwb3J0c1dpZHRoKHRydWUpOworICAgIGNvbnN0cmFpbnRzLnNldFN1cHBvcnRzSGVp
Z2h0KHRydWUpOworICAgIG1fc2V0dGluZ3Muc2V0U3VwcG9ydGVkQ29uc3RyYWludHMoY29uc3Ry
YWludHMpOwogfQogCiB2b2lkIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6
OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCkBAIC0xMjQsNiArMTI5LDE3IEBAIHZvaWQgQ2FudmFzQ2Fw
dHVyZU1lZGlhU3RyZWFtVHJhY2s6OlNvdXJjZTo6Y2FudmFzQ2hhbmdlZChIVE1MQ2FudmFzRWxl
bWVudCYgY2FuCiB7CiAgICAgQVNTRVJUX1VOVVNFRChjYW52YXMsIG1fY2FudmFzID09ICZjYW52
YXMpOwogCisgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gcHJlc2VydmUgZHJhd2luZyBidWZmZXIg
YXMgd2UgYXJlIGN1cnJlbnRseSBncmFiYmluZyBmcmFtZXMgYXN5bmNocm9ub3VzbHkuCisgICAg
Ly8gV2Ugc2hvdWxkIGluc3RlYWQgYWRkIGFuIGFuY2hvciBwb2ludCBmb3IgYm90aCAyZCBhbmQg
M2QgY29udGV4dHMgd2hlcmUgY2FudmFzIHdpbGwgYWN0dWFsbHkgcGFpbnQuCisgICAgLy8gQW5k
IGNhbGwgY2FudmFzIG9ic2VydmVycyBmcm9tIHRoYXQgcG9pbnQuCisgICAgaWYgKGNhbnZhcy5y
ZW5kZXJpbmdDb250ZXh0KCkgJiYgY2FudmFzLnJlbmRlcmluZ0NvbnRleHQoKS0+aXNXZWJHTCgp
KSB7CisgICAgICAgIGF1dG8mIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJj4oKmNhbnZhcy5yZW5kZXJpbmdDb250ZXh0KCkpOworICAgICAgICBpZiAoIWNv
bnRleHQuaXNQcmVzZXJ2aW5nRHJhd2luZ0J1ZmZlcigpKSB7CisgICAgICAgICAgICBjYW52YXMu
ZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxl
dmVsOjpXYXJuaW5nLCBBU0NJSUxpdGVyYWwoIlR1cm5pbmcgZHJhd2luZyBidWZmZXIgcHJlc2Vy
dmF0aW9uIGZvciB0aGUgV2ViR0wgY2FudmFzIGJlaW5nIGNhcHR1cmVkIikpOworICAgICAgICAg
ICAgY29udGV4dC5zZXRQcmVzZXJ2ZURyYXdpbmdCdWZmZXIodHJ1ZSk7CisgICAgICAgIH0KKyAg
ICB9CisKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHRyeSB0byBnZW5lcmF0ZSB0aGUgZnJhbWUg
YXQgdGhlIHRpbWUgdGhlIHNjcmVlbiBpcyBiZWluZyB1cGRhdGVkLgogICAgIGlmIChtX2NhbnZh
c0NoYW5nZWRUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCmluZGV4
IDAyNzE4Y2Q5NWZiNzE3ZmUzYzBiNzBhYTAyMzM4YjBiYTBiYTE5NTQuLjVhMDk4MDAzYTNmZjU5
NzQwNTYxM2JmNmJiYjUwM2EyMjQ3YzlmZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCkBAIC04OSw3ICs4OSw3IEBA
IHB1YmxpYzoKICAgICAgICAgU3RyaW5nIGRldmljZUlkOwogICAgICAgICBTdHJpbmcgZ3JvdXBJ
ZDsKICAgICB9OwotICAgIFRyYWNrU2V0dGluZ3MgZ2V0U2V0dGluZ3MoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBUcmFja1NldHRpbmdzIGdldFNldHRpbmdzKCkgY29uc3Q7CiAKICAgICBz
dHJ1Y3QgVHJhY2tDYXBhYmlsaXRpZXMgewogICAgICAgICBzdGQ6Om9wdGlvbmFsPExvbmdSYW5n
ZT4gd2lkdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUd1
YXJkZWRPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR3VhcmRlZE9i
amVjdC5oCmluZGV4IDc4NWM1ZDE2MDYzYmIwMTEzYTg2NmM3MTYwYTQ2OTJjMmU4ODM1NWYuLjhi
ZjQ1OTEzMWQzZTY3NGM5N2E2OTY5MjI3Y2MzYWViYTc3NzFmZDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR3VhcmRlZE9iamVjdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR3VhcmRlZE9iamVjdC5oCkBAIC0zMyw3ICszMyw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRE9NR3VhcmRlZE9iamVjdCA6IHB1Ymxp
YyBSZWZDb3VudGVkPERPTUd1YXJkZWRPYmplY3Q+LCBwdWJsaWMgQWN0aXZlRE9NQ2FsbGJhY2sg
eworY2xhc3MgV0VCQ09SRV9FWFBPUlQgRE9NR3VhcmRlZE9iamVjdCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPERPTUd1YXJkZWRPYmplY3Q+LCBwdWJsaWMgQWN0aXZlRE9NQ2FsbGJhY2sgewogcHVibGlj
OgogICAgIH5ET01HdWFyZGVkT2JqZWN0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Qcm9taXNlLmgKaW5kZXggYzE4NGI4ZjNmNzhjM2I4YjM3OTE3MzVhNDBmYjk3OGViOTEx
MDFmZS4uZWYxMDQ5ZTc3ZmNiMTc5ZjQyOTA3ZGI5NzNkM2ExYjg1MjQ0YTkwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKQEAgLTg4LDcgKzg4LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVqZWN0KCk7CiAgICAgdm9pZCByZWplY3Qoc3RkOjpudWxscHRyX3Qp
OwogICAgIHZvaWQgcmVqZWN0KEV4Y2VwdGlvbiYmKTsKLSAgICB2b2lkIHJlamVjdChFeGNlcHRp
b25Db2RlLCBjb25zdCBTdHJpbmcmID0geyB9KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJl
amVjdChFeGNlcHRpb25Db2RlLCBjb25zdCBTdHJpbmcmID0geyB9KTsKICAgICB2b2lkIHJlamVj
dChjb25zdCBKU0M6OlByaXZhdGVOYW1lJik7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxs
YmFjaz4KQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogCiAgICAgSlNDOjpKU1Byb21pc2VE
ZWZlcnJlZCogZGVmZXJyZWQoKSBjb25zdCB7IHJldHVybiBndWFyZGVkKCk7IH0KIAotICAgIHZv
aWQgY2FsbEZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uLCBK
U0M6OkpTVmFsdWUgcmVzb2x1dGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjYWxsRnVu
Y3Rpb24oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb24sIEpTQzo6SlNWYWx1
ZSByZXNvbHV0aW9uKTsKICAgICB2b2lkIHJlc29sdmUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBK
U0M6OkpTVmFsdWUgcmVzb2x1dGlvbikgeyBjYWxsRnVuY3Rpb24oc3RhdGUsIGRlZmVycmVkKCkt
PnJlc29sdmUoKSwgcmVzb2x1dGlvbik7IH0KICAgICB2b2lkIHJlamVjdChKU0M6OkV4ZWNTdGF0
ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSByZXNvbHV0aW9uKSB7IGNhbGxGdW5jdGlvbihzdGF0ZSwg
ZGVmZXJyZWQoKS0+cmVqZWN0KCksIHJlc29sdXRpb24pOyB9CiB9OwpAQCAtMjEyLDcgKzIxMiw3
IEBAIFJlZjxEZWZlcnJlZFByb21pc2U+IGNyZWF0ZURlZmVycmVkUHJvbWlzZShKU0M6OkV4ZWNT
dGF0ZSYsIEpTRE9NV2luZG93Jik7CiB2b2lkIGZ1bGZpbGxQcm9taXNlV2l0aEpTT04oUmVmPERl
ZmVycmVkUHJvbWlzZT4mJiwgY29uc3QgU3RyaW5nJik7CiB2b2lkIGZ1bGZpbGxQcm9taXNlV2l0
aEFycmF5QnVmZmVyKFJlZjxEZWZlcnJlZFByb21pc2U+JiYsIEFycmF5QnVmZmVyKik7CiB2b2lk
IGZ1bGZpbGxQcm9taXNlV2l0aEFycmF5QnVmZmVyKFJlZjxEZWZlcnJlZFByb21pc2U+JiYsIGNv
bnN0IHZvaWQqLCBzaXplX3QpOwotdm9pZCByZWplY3RQcm9taXNlV2l0aEV4Y2VwdGlvbklmQW55
KEpTQzo6RXhlY1N0YXRlJiwgSlNET01HbG9iYWxPYmplY3QmLCBKU0M6OkpTUHJvbWlzZURlZmVy
cmVkJik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIHJlamVjdFByb21pc2VXaXRoRXhjZXB0aW9uSWZB
bnkoSlNDOjpFeGVjU3RhdGUmLCBKU0RPTUdsb2JhbE9iamVjdCYsIEpTQzo6SlNQcm9taXNlRGVm
ZXJyZWQmKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgY3JlYXRlUmVqZWN0ZWRQcm9taXNlV2l0aFR5
cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IFN0cmluZyYpOwogCiB1c2luZyBQcm9taXNl
RnVuY3Rpb24gPSB2b2lkKEpTQzo6RXhlY1N0YXRlJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NQ2FsbGJhY2suaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01DYWxsYmFjay5oCmluZGV4IDU2NmI0MGExZjM2ZGZi
NjQ0YWM2NzRkNDk1ODM0YmU0MGEyODJlZWMuLjA0MjgwMmQxODcyN2E1ZWU4ZjExNzBkMTE3Yjg0
MDU1OWMyYWEwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01DYWxs
YmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01DYWxsYmFjay5oCkBAIC00
Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBBY3RpdmVET01DYWxsYmFjayhTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0KTsKICAgICB2aXJ0dWFsIH5BY3RpdmVET01DYWxsYmFjaygpOwog
Ci0gICAgYm9vbCBjYW5JbnZva2VDYWxsYmFjaygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgY2FuSW52b2tlQ2FsbGJhY2soKSBjb25zdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXggN2Qy
OWFiYTcwODcxMmNkNDZkOGRlMzRhMmJmNDAwZjQ2M2UwODMyYS4uNTg3MTIxYjVmNjkzMmFhNmQw
MDZhMmMwNmRmN2U5ODQ2M2FiZWVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5jcHAKQEAgLTYwMyw3ICs2MDMsNyBAQCBFeGNlcHRpb25PcjxSZWY8TWVkaWFTdHJl
YW0+PiBIVE1MQ2FudmFzRWxlbWVudDo6Y2FwdHVyZVN0cmVhbShTY3JpcHRFeGVjdXRpb25Dbwog
CiAgICAgaWYgKGZyYW1lUmVxdWVzdFJhdGUgJiYgZnJhbWVSZXF1ZXN0UmF0ZS52YWx1ZSgpIDwg
MCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbihOT1RfU1VQUE9SVEVEX0VSUiwgQVNDSUlMaXRl
cmFsKCJmcmFtZVJlcXVlc3RSYXRlIGlzIG5lZ2F0aXZlIikpOwotICAgIAorCiAgICAgYXV0byB0
cmFjayA9IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpjcmVhdGUoY29udGV4dCwgKnRo
aXMsIFdURk1vdmUoZnJhbWVSZXF1ZXN0UmF0ZSkpOwogICAgIGF1dG8gc3RyZWFtID0gIE1lZGlh
U3RyZWFtOjpjcmVhdGUoY29udGV4dCk7CiAgICAgc3RyZWFtLT5hZGRUcmFjayh0cmFjayk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZURhdGEuaAppbmRleCA2Yjg2NzY4MDg0MWRhMmQxOTg4MWVhNWVjMDljNGE4
Mzk1OWQ2MzFkLi43YmYxMzVjNzlhNDhhYmZjMjAzZDBmYzFkNjdmYjk1NGVlMGU4Yzc3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW1hZ2VEYXRhLmgKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBJbWFnZURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxJbWFnZURhdGE+IHsK
K2NsYXNzIFdFQkNPUkVfRVhQT1JUIEltYWdlRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPEltYWdl
RGF0YT4gewogcHVibGljOgogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4g
Y3JlYXRlKHVuc2lnbmVkIHN3LCB1bnNpZ25lZCBzaCk7CiAgICAgc3RhdGljIFJlZlB0cjxJbWFn
ZURhdGE+IGNyZWF0ZShjb25zdCBJbnRTaXplJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ltYWdlRGF0YS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5pZGwK
aW5kZXggMzc2NzVlNGZhNGNjZWU3ZGFhODM4NmI2MzdiZDVhODM4ZjQwMWFhMS4uNWUzZmRjOTJj
YWZkMGE4ZGQ1YjgyNzUxNmRiYTc3MGEwOTg1YThlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZURhdGEuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRh
LmlkbApAQCAtMzEsNiArMzEsNyBAQAogICAgIENvbnN0cnVjdG9yKHVuc2lnbmVkIGxvbmcgc3cs
IHVuc2lnbmVkIGxvbmcgc2gpLAogICAgIENvbnN0cnVjdG9yTWF5VGhyb3dFeGNlcHRpb24sCiAg
ICAgQ3VzdG9tVG9KU09iamVjdCwKKyAgICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKICAg
ICBFeHBvc2VkPShXaW5kb3csV29ya2VyKSwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxl
LAogXSBpbnRlcmZhY2UgSW1hZ2VEYXRhIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGI1NmQ4MWY4MzhiYmUxYjAw
N2MzMzI0OWU2NjMwNzgzNTlkZTE0NWIuLjgxZjE1NTIwMTgwNDBmOTA1ZGZmZjQ1ODFjODNiNTI1
MGIwYzE0MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtNDcwLDcgKzQ3MCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpjbGVhcihHQzNEYml0ZmllbGQgbWFzaykKICAgICB9CiAgICAgaWYgKCFjbGVh
cklmQ29tcG9zaXRlZChtYXNrKSkKICAgICAgICAgbV9jb250ZXh0LT5jbGVhcihtYXNrKTsKLSAg
ICBtYXJrQ29udGV4dENoYW5nZWQoKTsKKyAgICBtYXJrQ29udGV4dENoYW5nZWRBbmROb3RpZnlD
YW52YXNPYnNlcnZlcigpOwogfQogCiBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dFBhcmFtZXRlcihHQzNEZW51bSBwbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAppbmRleCBlYTdlZjQzZDRlOWUx
MTRlYmQ4MDdiODk0ZjU0NDVkMjJiZjQ4MmY2Li40Yzg3MDIyNDIzYzY4MmQ5MTgyYTZkNTVlODQ3
YjVhMTRlOGM5MGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC0yMDcsNiArMjA3LDkgQEAgcHVibGljOgog
ICAgIFdlYkdMQW55IGdldFZlcnRleEF0dHJpYihHQzNEdWludCBpbmRleCwgR0MzRGVudW0gcG5h
bWUpOwogICAgIGxvbmcgbG9uZyBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0MzRHVpbnQgaW5kZXgs
IEdDM0RlbnVtIHBuYW1lKTsKIAorICAgIGJvb2wgaXNQcmVzZXJ2aW5nRHJhd2luZ0J1ZmZlcigp
IGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXI7IH0KKyAg
ICB2b2lkIHNldFByZXNlcnZlRHJhd2luZ0J1ZmZlcihib29sIHZhbHVlKSB7IG1fYXR0cmlidXRl
cy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIgPSB2YWx1ZTsgfQorCiAgICAgdmlydHVhbCB2b2lkIGhp
bnQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBtb2RlKSA9IDA7CiAgICAgR0MzRGJvb2xlYW4g
aXNCdWZmZXIoV2ViR0xCdWZmZXIqKTsKICAgICBib29sIGlzQ29udGV4dExvc3QoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNhbXBsZS5oCmluZGV4IGU4YTdiNTg1YWQxYzJjYTAw
ZjljNmRjOGYyZTIzMzg2ZDdiOGU5NmIuLjUzMjEyNDA3NmVhYTBjZmQ2ZGFiOWUwZDAzZTQ3YjY2
ZTQ2ODUzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2FtcGxl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTYW1wbGUuaApAQCAtMjcsNiAr
MjcsNyBAQAogI2RlZmluZSBNZWRpYVNhbXBsZV9oCiAKICNpbmNsdWRlICJGbG9hdFNpemUuaCIK
KyNpbmNsdWRlIDxydW50aW1lL1R5cGVkQXJyYXlzLmg+CiAjaW5jbHVkZSA8d3RmL01lZGlhVGlt
ZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRv
bWljU3RyaW5nLmg+CkBAIC02OSw2ICs3MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHN0ZDo6
cGFpcjxSZWZQdHI8TWVkaWFTYW1wbGU+LCBSZWZQdHI8TWVkaWFTYW1wbGU+PiBkaXZpZGUoY29u
c3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lKSA9IDA7CiAgICAgdmlydHVhbCBSZWY8TWVk
aWFTYW1wbGU+IGNyZWF0ZU5vbkRpc3BsYXlpbmdDb3B5KCkgY29uc3QgPSAwOwogCisgICAgdmly
dHVhbCBSZWZQdHI8SlNDOjpVaW50OENsYW1wZWRBcnJheT4gZ2V0UkdCQUltYWdlRGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KKwogICAgIGVudW0gU2FtcGxlRmxhZ3MgewogICAgICAg
ICBOb25lID0gMCwKICAgICAgICAgSXNTeW5jID0gMSA8PCAwLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhU2FtcGxlQVZGT2Jq
Qy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlh
U2FtcGxlQVZGT2JqQy5oCmluZGV4IGZjZGI2MWU0MWMyYWZmYWYzZmFhNmQyZGZiYTg4NjI0ODFj
MTM4YWMuLmJhM2RjYmI2ZDhhY2JiZDY4Y2Y0YTM5MDVhMTIyOTQ4YmMzNDQ2ZmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVNh
bXBsZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFTYW1wbGVBVkZPYmpDLmgKQEAgLTQxLDYgKzQxLDggQEAgcHVibGljOgog
ICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFTYW1wbGVBVkZPYmpDPiBjcmVhdGVJbWFnZVNhbXBsZShS
ZWY8SlNDOjpVaW50OENsYW1wZWRBcnJheT4mJiwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWdu
ZWQgbG9uZyBoZWlnaHQpOwogICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFTYW1wbGVBVkZPYmpDPiBj
cmVhdGVJbWFnZVNhbXBsZShWZWN0b3I8dWludDhfdD4mJiwgdW5zaWduZWQgbG9uZyB3aWR0aCwg
dW5zaWduZWQgbG9uZyBoZWlnaHQpOwogCisgICAgUmVmUHRyPEpTQzo6VWludDhDbGFtcGVkQXJy
YXk+IGdldFJHQkFJbWFnZURhdGEoKSBjb25zdCBmaW5hbDsKKwogcHJpdmF0ZToKICAgICBNZWRp
YVNhbXBsZUFWRk9iakMoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlKQogICAgICAgICA6IG1fc2Ft
cGxlKHNhbXBsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5t
bQppbmRleCAxMTU4YmM1MjkxZGFlYTA5ZTM3YjNjMjIyY2M4NTkyMzgwMTQxY2ZiLi4xNzg2NGFk
MmE4YmMyOGNkYjgxZjZiYWJjYWU3MmY0ZGJiNWFlZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9i
akMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCkBAIC0yNiw2ICsyNiw4IEBACiAjaW1wb3J0ICJj
b25maWcuaCIKICNpbXBvcnQgIk1lZGlhU2FtcGxlQVZGT2JqQy5oIgogCisjaW1wb3J0ICJQaXhl
bEJ1ZmZlckNvbmZvcm1lckNWLmgiCisjaW1wb3J0IDxydW50aW1lL1R5cGVkQXJyYXlJbmxpbmVz
Lmg+CiAjaW1wb3J0IDx3dGYvUHJpbnRTdHJlYW0uaD4KIAogI2ltcG9ydCAiQ29yZU1lZGlhU29m
dExpbmsuaCIKQEAgLTI2NSw0ICsyNjcsMjggQEAgUmVmPE1lZGlhU2FtcGxlPiBNZWRpYVNhbXBs
ZUFWRk9iakM6OmNyZWF0ZU5vbkRpc3BsYXlpbmdDb3B5KCkgY29uc3QKICAgICByZXR1cm4gTWVk
aWFTYW1wbGVBVkZPYmpDOjpjcmVhdGUoYWRvcHRDRihuZXdTYW1wbGVCdWZmZXIpLmdldCgpLCBt
X2lkKTsKIH0KIAorUmVmUHRyPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+IE1lZGlhU2FtcGxlQVZG
T2JqQzo6Z2V0UkdCQUltYWdlRGF0YSgpIGNvbnN0Cit7CisgICAgY29uc3QgT1NUeXBlIGltYWdl
Rm9ybWF0ID0ga0NWUGl4ZWxGb3JtYXRUeXBlXzMyUkdCQTsKKyAgICBSZXRhaW5QdHI8Q0ZOdW1i
ZXJSZWY+IGltYWdlRm9ybWF0TnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShudWxscHRy
LCAga0NGTnVtYmVySW50VHlwZSwgICZpbWFnZUZvcm1hdCkpOworCisgICAgUmV0YWluUHRyPENG
TXV0YWJsZURpY3Rpb25hcnlSZWY+IGNvbmZvcm1lck9wdGlvbnMgPSBhZG9wdENGKENGRGljdGlv
bmFyeUNyZWF0ZU11dGFibGUoMCwgMSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAm
a0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOworICAgIENGRGljdGlvbmFyeVNldFZh
bHVlKGNvbmZvcm1lck9wdGlvbnMuZ2V0KCksIGtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBl
S2V5LCBpbWFnZUZvcm1hdE51bWJlci5nZXQoKSk7CisgICAgUGl4ZWxCdWZmZXJDb25mb3JtZXJD
ViBwaXhlbEJ1ZmZlckNvbmZvcm1lcihjb25mb3JtZXJPcHRpb25zLmdldCgpKTsKKworICAgIGF1
dG8gcGl4ZWxCdWZmZXIgPSBzdGF0aWNfY2FzdDxDVlBpeGVsQnVmZmVyUmVmPihDTVNhbXBsZUJ1
ZmZlckdldEltYWdlQnVmZmVyKG1fc2FtcGxlLmdldCgpKSk7CisgICAgYXV0byByZ2JhUGl4ZWxC
dWZmZXIgPSBwaXhlbEJ1ZmZlckNvbmZvcm1lci5jb252ZXJ0KHBpeGVsQnVmZmVyKTsKKyAgICBh
dXRvIHN0YXR1cyA9IENWUGl4ZWxCdWZmZXJMb2NrQmFzZUFkZHJlc3MocmdiYVBpeGVsQnVmZmVy
LmdldCgpLCBrQ1ZQaXhlbEJ1ZmZlckxvY2tfUmVhZE9ubHkpOworICAgIEFTU0VSVChzdGF0dXMg
PT0gbm9FcnIpOworCisgICAgdm9pZCogZGF0YSA9IENWUGl4ZWxCdWZmZXJHZXRCYXNlQWRkcmVz
c09mUGxhbmUocmdiYVBpeGVsQnVmZmVyLmdldCgpLCAwKTsKKyAgICBzaXplX3QgYnl0ZUxlbmd0
aCA9IENWUGl4ZWxCdWZmZXJHZXRIZWlnaHQocGl4ZWxCdWZmZXIpICogQ1ZQaXhlbEJ1ZmZlckdl
dFdpZHRoKHBpeGVsQnVmZmVyKSAqIDQ7CisgICAgYXV0byByZXN1bHQgPSBKU0M6OlVpbnQ4Q2xh
bXBlZEFycmF5OjpjcmVhdGUoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGJ5dGVMZW5n
dGgpLCAwLCBieXRlTGVuZ3RoKTsKKworICAgIHN0YXR1cyA9IENWUGl4ZWxCdWZmZXJVbmxvY2tC
YXNlQWRkcmVzcyhyZ2JhUGl4ZWxCdWZmZXIuZ2V0KCksIGtDVlBpeGVsQnVmZmVyTG9ja19SZWFk
T25seSk7CisgICAgQVNTRVJUKHN0YXR1cyA9PSBub0Vycik7CisKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
di9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuY3BwCmluZGV4IDBiNjQ3ZWZmOWQxZDMy
NTVkNmMwZDYwNjhjMzA4ZmI4MWJkMzkyZjAuLjgyYzFkNTZkYmQyMDczNTU4Y2M2ZmQ0NjBjOTQw
ZTQxMzM4MGQ4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuY3BwCkBAIC03Miw2ICs3Miwy
NCBAQCBzdGF0aWMgdm9pZCBDVlBpeGVsQnVmZmVyUmVsZWFzZUluZm9DYWxsYmFjayh2b2lkKiBp
bmZvKQogICAgIENGUmVsZWFzZShwaXhlbEJ1ZmZlcik7CiB9CiAKK1JldGFpblB0cjxDVlBpeGVs
QnVmZmVyUmVmPiBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOjpjb252ZXJ0KENWUGl4ZWxCdWZmZXJS
ZWYgcmF3QnVmZmVyKQoreworI2lmIFVTRShWSURFT1RPT0xCT1gpCisgICAgUmV0YWluUHRyPENW
UGl4ZWxCdWZmZXJSZWY+IGJ1ZmZlciB7IHJhd0J1ZmZlciB9OworCisgICAgaWYgKCFWVFBpeGVs
QnVmZmVyQ29uZm9ybWVySXNDb25mb3JtYW50UGl4ZWxCdWZmZXIobV9waXhlbENvbmZvcm1lci5n
ZXQoKSwgYnVmZmVyLmdldCgpKSkgeworICAgICAgICBDVlBpeGVsQnVmZmVyUmVmIG91dHB1dEJ1
ZmZlciA9IG51bGxwdHI7CisgICAgICAgIE9TU3RhdHVzIHN0YXR1cyA9IFZUUGl4ZWxCdWZmZXJD
b25mb3JtZXJDb3B5Q29uZm9ybWVkUGl4ZWxCdWZmZXIobV9waXhlbENvbmZvcm1lci5nZXQoKSwg
YnVmZmVyLmdldCgpLCBmYWxzZSwgJm91dHB1dEJ1ZmZlcik7CisgICAgICAgIGlmIChzdGF0dXMg
IT0gbm9FcnIgfHwgIW91dHB1dEJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICByZXR1cm4gYWRvcHRDRihvdXRwdXRCdWZmZXIpOworICAgIH0KKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKHJhd0J1ZmZlcik7CisjZW5kaWYKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KwogUmV0YWluUHRyPENHSW1hZ2VSZWY+IFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y6OmNyZWF0ZUlt
YWdlRnJvbVBpeGVsQnVmZmVyKENWUGl4ZWxCdWZmZXJSZWYgcmF3QnVmZmVyKQogewogICAgIFJl
dGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBidWZmZXIgeyByYXdCdWZmZXIgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9y
bWVyQ1YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVy
Q29uZm9ybWVyQ1YuaAppbmRleCA3NmVhODFiMjA3MTA3MDgyMmJkYThhODhkYmNmNTZmYzUyMmVl
OWMwLi5kMTdiYjNjMjMyODVjMDk0NjYyNWVlN2JkYzcwZWMyMzQxYTY5ZWFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1l
ckNWLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZm
ZXJDb25mb3JtZXJDVi5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1YgewogcHVibGljOgogICAgIFBpeGVsQnVmZmVyQ29u
Zm9ybWVyQ1YoQ0ZEaWN0aW9uYXJ5UmVmIGF0dHJpYnV0ZXMpOworICAgIFJldGFpblB0cjxDVlBp
eGVsQnVmZmVyUmVmPiBjb252ZXJ0KENWUGl4ZWxCdWZmZXJSZWYpOwogICAgIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBjcmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVmKTsK
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgKaW5kZXggYjYxMmUz
MjZhOGUzYmM3ZTZlN2JjZDZjNDRmYmUwMTAzMTkxZmQ2Ny4uNWE0YzlhNTM3N2MwYjJjZDUyZWY0
NWI1YjI2ZjRiNjFhMTgzYTY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzLmgK
QEAgLTkyLDcgKzkyLDcgQEAgcHVibGljOgogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZ3JvdXBJ
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JvdXBJZDsgfQogICAgIHZvaWQgc2V0R3JvdXBJZChjb25z
dCBBdG9taWNTdHJpbmcmIGdyb3VwSWQpIHsgbV9ncm91cElkID0gZ3JvdXBJZDsgfQogCi0gICAg
dm9pZCBzZXRTdXBwb3J0ZWRDb25zdHJhaXRzKGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBw
b3J0ZWRDb25zdHJhaW50cyYgc3VwcG9ydGVkQ29uc3RyYWludHMpIHsgbV9zdXBwb3J0ZWRDb25z
dHJhaW50cyA9IHN1cHBvcnRlZENvbnN0cmFpbnRzOyB9CisgICAgdm9pZCBzZXRTdXBwb3J0ZWRD
b25zdHJhaW50cyhjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMm
IHN1cHBvcnRlZENvbnN0cmFpbnRzKSB7IG1fc3VwcG9ydGVkQ29uc3RyYWludHMgPSBzdXBwb3J0
ZWRDb25zdHJhaW50czsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBi
b29sIGRlY29kZShEZWNvZGVyJiwgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNh
cHR1cmVTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
QVZNZWRpYUNhcHR1cmVTb3VyY2UubW0KaW5kZXggZGUyZjhjYjYxMjBmNjVlZDdmZWIwYjFmZDlk
OGMzZjJiYzdmNzcyZi4uNTY2OGFhMDE2OTQ3YWQwYzA0YzE4MzVkOTNhMzc0NzlmNDhjMzA0YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVk
aWFDYXB0dXJlU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbQpAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQg
QVZNZWRpYUNhcHR1cmVTb3VyY2U6OmNvbW1pdENvbmZpZ3VyYXRpb24oKQogdm9pZCBBVk1lZGlh
Q2FwdHVyZVNvdXJjZTo6aW5pdGlhbGl6ZVNldHRpbmdzKCkKIHsKICAgICBpZiAobV9jdXJyZW50
U2V0dGluZ3MuZGV2aWNlSWQoKS5pc0VtcHR5KCkpCi0gICAgICAgIG1fY3VycmVudFNldHRpbmdz
LnNldFN1cHBvcnRlZENvbnN0cmFpdHMoc3VwcG9ydGVkQ29uc3RyYWludHMoKSk7CisgICAgICAg
IG1fY3VycmVudFNldHRpbmdzLnNldFN1cHBvcnRlZENvbnN0cmFpbnRzKHN1cHBvcnRlZENvbnN0
cmFpbnRzKCkpOwogCiAgICAgbV9jdXJyZW50U2V0dGluZ3Muc2V0RGV2aWNlSWQoaWQoKSk7CiAg
ICAgdXBkYXRlU2V0dGluZ3MobV9jdXJyZW50U2V0dGluZ3MpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZUF1ZGlvU291
cmNlT3dyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRj
L1JlYWx0aW1lQXVkaW9Tb3VyY2VPd3IuaAppbmRleCAyMzQ5ZjA1MWIwZjM2YzM0NDM4ZTQzMmZh
NzM4YjIxMDdlOTQ5Mjk4Li5jYWI3MDUwODRiOTRjZmM4ZTdiMTlmN2Q3ZTgyMzI2OGNiY2VmNDY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2Vi
cnRjL1JlYWx0aW1lQXVkaW9Tb3VyY2VPd3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lQXVkaW9Tb3VyY2VPd3IuaApAQCAtNTks
NyArNTksNyBAQCBSZWFsdGltZUF1ZGlvU291cmNlT3dyKGNvbnN0IFN0cmluZyYgaWQsIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgUwogcHJvdGVjdGVkOgogICAgIHZvaWQg
aW5pdGlhbGl6ZVNldHRpbmdzKCkgZmluYWwgewogICAgICAgICBpZiAobV9jdXJyZW50U2V0dGlu
Z3MuZGV2aWNlSWQoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtX2N1cnJlbnRTZXR0aW5ncy5z
ZXRTdXBwb3J0ZWRDb25zdHJhaXRzKHN1cHBvcnRlZENvbnN0cmFpbnRzKCkpOworICAgICAgICAg
ICAgbV9jdXJyZW50U2V0dGluZ3Muc2V0U3VwcG9ydGVkQ29uc3RyYWludHMoc3VwcG9ydGVkQ29u
c3RyYWludHMoKSk7CiAKICAgICAgICAgbV9jdXJyZW50U2V0dGluZ3Muc2V0RGV2aWNlSWQoaWQo
KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vb3BlbndlYnJ0Yy9SZWFsdGltZVZpZGVvU291cmNlT3dyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lVmlkZW9Tb3VyY2VPd3IuaApp
bmRleCBkYzY2YTNlMmI5NjEzNjBlODg2YjNkMDZjYmVkOTEzMTMyZmIxNDU0Li40MThlZjg0YTcx
YTU3MzQ3ZTg1ZDM1MjgzNjllMjc5YzdhNjZmNDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lVmlkZW9Tb3VyY2VPd3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1Jl
YWx0aW1lVmlkZW9Tb3VyY2VPd3IuaApAQCAtNTksNyArNTksNyBAQCBSZWFsdGltZVZpZGVvU291
cmNlT3dyKGNvbnN0IFN0cmluZyYgaWQsIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwg
Y29uc3QgUwogcHJvdGVjdGVkOgogICAgIHZvaWQgaW5pdGlhbGl6ZVNldHRpbmdzKCkgZmluYWwg
ewogICAgICAgICBpZiAobV9jdXJyZW50U2V0dGluZ3MuZGV2aWNlSWQoKS5pc0VtcHR5KCkpCi0g
ICAgICAgICAgICBtX2N1cnJlbnRTZXR0aW5ncy5zZXRTdXBwb3J0ZWRDb25zdHJhaXRzKHN1cHBv
cnRlZENvbnN0cmFpbnRzKCkpOworICAgICAgICAgICAgbV9jdXJyZW50U2V0dGluZ3Muc2V0U3Vw
cG9ydGVkQ29uc3RyYWludHMoc3VwcG9ydGVkQ29uc3RyYWludHMoKSk7CiAKICAgICAgICAgbV9j
dXJyZW50U2V0dGluZ3Muc2V0RGV2aWNlSWQoaWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKaW5kZXgg
NzdjOTcxNDhhMTA3M2ZmZmFmYTA2Y2IwMzk5OTQwZjg1NGY2YjJkOC4uNzc5MGNlOWUyYjk1ZDVh
ZWUzNmMxNzU4NTFhM2ZmOTgyOTFlMWNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKQEAgLTk4LDcgKzk4
LDcgQEAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IE1vY2tSZWFsdGlt
ZU1lZGlhU291cmNlOjpjYXBhYmlsaXRpZXMoKQogdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6aW5pdGlhbGl6ZVNldHRpbmdzKCkKIHsKICAgICBpZiAobV9jdXJyZW50U2V0dGluZ3MuZGV2
aWNlSWQoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgbV9jdXJyZW50U2V0dGluZ3Muc2V0U3VwcG9y
dGVkQ29uc3RyYWl0cyhzdXBwb3J0ZWRDb25zdHJhaW50cygpKTsKKyAgICAgICAgbV9jdXJyZW50
U2V0dGluZ3Muc2V0U3VwcG9ydGVkQ29uc3RyYWludHMoc3VwcG9ydGVkQ29uc3RyYWludHMoKSk7
CiAgICAgICAgIG1fY3VycmVudFNldHRpbmdzLnNldERldmljZUlkKGlkKCkpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDEzZTEzZjU5NDgyZmE3ODllN2E3
OTZjNDVjYWU0N2EzNjM3MDUyNmIuLjk2YTY1NzQ4YjNhODZhMTQxMDkzOGY1YjhhODQ1OTgwM2Uy
YWQ3YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTg1LDYgKzg1LDcg
QEAKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5o
IgogI2luY2x1ZGUgIkludGVybmFsU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJKU0ltYWdlRGF0YS5o
IgogI2luY2x1ZGUgIkxhbmd1YWdlLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIK
ICNpbmNsdWRlICJNYWluRnJhbWUuaCIKQEAgLTM4OTUsNiArMzg5NiwzMyBAQCB2b2lkIEludGVy
bmFsczo6b2JzZXJ2ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1UcmFjayYgdHJhY2spCiAg
ICAgbV90cmFjayA9ICZ0cmFjazsKICAgICBtX3RyYWNrLT5zb3VyY2UoKS5hZGRPYnNlcnZlcigq
dGhpcyk7CiB9CisKK3ZvaWQgSW50ZXJuYWxzOjpncmFiTmV4dE1lZGlhU3RyZWFtVHJhY2tGcmFt
ZShUcmFja0ZyYW1lUHJvbWlzZSYmIHByb21pc2UpCit7CisgICAgbV9uZXh0VHJhY2tGcmFtZVBy
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpOworfQorCit2b2lkIEludGVybmFsczo6dmlkZW9TYW1w
bGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKK3sKKyAgICBtX3RyYWNrVmlkZW9TYW1w
bGVDb3VudCsrOworICAgIGlmICghbV9uZXh0VHJhY2tGcmFtZVByb21pc2UpCisgICAgICAgIHJl
dHVybjsKKworICAgIGF1dG8gdmlkZW9TZXR0aW5ncyA9IG1fdHJhY2stPmdldFNldHRpbmdzKCk7
CisgICAgaWYgKCF2aWRlb1NldHRpbmdzLndpZHRoIHx8ICF2aWRlb1NldHRpbmdzLmhlaWdodCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byByZ2JhID0gc2FtcGxlLmdldFJHQkFJbWFnZURh
dGEoKTsKKyAgICBpZiAoIXJnYmEpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGltYWdlRGF0
YSA9IEltYWdlRGF0YTo6Y3JlYXRlKHJnYmEucmVsZWFzZU5vbk51bGwoKSwgKnZpZGVvU2V0dGlu
Z3Mud2lkdGgsICp2aWRlb1NldHRpbmdzLmhlaWdodCk7CisgICAgaWYgKCFpbWFnZURhdGEuaGFz
RXhjZXB0aW9uKCkpCisgICAgICAgIG1fbmV4dFRyYWNrRnJhbWVQcm9taXNlLT5yZXNvbHZlKGlt
YWdlRGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBlbHNl
CisgICAgICAgIG1fbmV4dFRyYWNrRnJhbWVQcm9taXNlLT5yZWplY3QoaW1hZ2VEYXRhLmV4Y2Vw
dGlvbigpLmNvZGUoKSk7CisgICAgbV9uZXh0VHJhY2tGcmFtZVByb21pc2UgPSBzdGQ6Om51bGxv
cHQ7Cit9CisKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaAppbmRleCAzNDQzODQyYTJhNThhMTIyNTEwYTNjOTkzNzRlMjEwZDg1MDlm
YWY4Li4xMDNjZDdjNjA0ZjZjOWNlOGE4NjRmNzAyMDY1ZTM3YWFlOGRkYzAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTI5LDkgKzI5LDExIEBACiAjaW5jbHVkZSAiQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2Jz
ZXJ2ZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlz
ZS5oIgogI2luY2x1ZGUgIlBhZ2VDb25zb2xlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVN
ZWRpYVNvdXJjZS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRmxvYXQzMkFycmF5Lmg+CisjaW5jbHVk
ZSA8d3RmL09wdGlvbmFsLmg+CiAKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKICNpbmNsdWRl
ICJNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlci5oIgpAQCAtNTQsNiArNTYsNyBAQCBj
bGFzcyBIVE1MSW5wdXRFbGVtZW50OwogY2xhc3MgSFRNTExpbmtFbGVtZW50OwogY2xhc3MgSFRN
TE1lZGlhRWxlbWVudDsKIGNsYXNzIEhUTUxTZWxlY3RFbGVtZW50OworY2xhc3MgSW1hZ2VEYXRh
OwogY2xhc3MgSW5zcGVjdG9yU3R1YkZyb250ZW5kOwogY2xhc3MgSW50ZXJuYWxTZXR0aW5nczsK
IGNsYXNzIE1hbGxvY1N0YXRpc3RpY3M7CkBAIC01NjIsNiArNTY1LDggQEAgcHVibGljOgogICAg
IHVuc2lnbmVkIGxvbmcgdHJhY2tBdWRpb1NhbXBsZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV90
cmFja0F1ZGlvU2FtcGxlQ291bnQ7IH0KICAgICB1bnNpZ25lZCBsb25nIHRyYWNrVmlkZW9TYW1w
bGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhY2tWaWRlb1NhbXBsZUNvdW50OyB9CiAgICAg
dm9pZCBvYnNlcnZlTWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVRyYWNrJik7CisgICAgdXNp
bmcgVHJhY2tGcmFtZVByb21pc2UgPSBET01Qcm9taXNlPElETEludGVyZmFjZTxJbWFnZURhdGE+
PjsKKyAgICB2b2lkIGdyYWJOZXh0TWVkaWFTdHJlYW1UcmFja0ZyYW1lKFRyYWNrRnJhbWVQcm9t
aXNlJiYpOwogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC01NzMsMTIgKzU3OCwxMyBAQCBwcml2YXRl
OgogCiAgICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXIgQVBJCiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxl
JikgZmluYWwgeyBtX3RyYWNrVmlkZW9TYW1wbGVDb3VudCsrOyB9CisgICAgdm9pZCB2aWRlb1Nh
bXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYpIGZpbmFsOwogICAgIHZvaWQgYXVkaW9TYW1wbGVz
QXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29u
c3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkgZmluYWwgeyBtX3RyYWNrQXVkaW9T
YW1wbGVDb3VudCsrOyB9CiAKICAgICB1bnNpZ25lZCBsb25nIG1fdHJhY2tWaWRlb1NhbXBsZUNv
dW50IHsgMCB9OwogICAgIHVuc2lnbmVkIGxvbmcgbV90cmFja0F1ZGlvU2FtcGxlQ291bnQgeyAw
IH07CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IG1fdHJhY2s7CisgICAgc3RkOjpvcHRp
b25hbDxUcmFja0ZyYW1lUHJvbWlzZT4gbV9uZXh0VHJhY2tGcmFtZVByb21pc2U7CiAjZW5kaWYK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JTdHViRnJvbnRlbmQ+IG1faW5zcGVjdG9y
RnJvbnRlbmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggZDIwYmRiYzc3
MzBkNTMyMzhkMGVhYmE4MWRjYzNiNmRjMGI1NGQ3My4uNTM2Yjk4M2Q0NWMyOTU3NDkwMzg0MDdh
MmMwMWU4ZTY2N2MxOWQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAt
NTI2LDYgKzUyNiw3IEBAIGVudW0gRXZlbnRUaHJvdHRsaW5nQmVoYXZpb3IgewogICAgIFtDb25k
aXRpb25hbD1XRUJHTF0gdm9pZCBzaW11bGF0ZVdlYkdMQ29udGV4dENoYW5nZWQoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSBjb250ZXh0KTsKIAogICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJF
QU1dIHZvaWQgb2JzZXJ2ZU1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1UcmFjayB0cmFjayk7
CisgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTV0gUHJvbWlzZTxJbWFnZURhdGE+IGdyYWJO
ZXh0TWVkaWFTdHJlYW1UcmFja0ZyYW1lKCk7CiAgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVB
TV0gcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgdHJhY2tBdWRpb1NhbXBsZUNvdW50
OwogICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU1dIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNp
Z25lZCBsb25nIHRyYWNrVmlkZW9TYW1wbGVDb3VudDsKIH07CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODdiNzAxM2I5N2E3
ZmYyOGNmNmQ2Y2QzMmUxZmQ1NTQyYjhhNjU3MS4uZjI1ZWY2MTU4NjExMDJjNzAyZDIzMWNmNTEy
NjRmMGY3YTAxM2Y4NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3LTA0LTAzICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBjYXB0dXJlU3RyZWFtIGlzIGdl
dHRpbmcgYmxhY2sgZnJhbWVzIHdpdGggd2ViZ2wgY2FudmFzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzAzMjUKKworICAgICAgICBSZXZpZXdlZCBi
eSBEZWFuIEphY2tzb24uCisKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL2NhcHR1cmVTdHJl
YW0vY2FudmFzM2QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3Ry
ZWFtL2NhcHR1cmVTdHJlYW0vY2FudmFzM2QuaHRtbDogQWRkZWQuCisKIDIwMTctMDQtMDMgIFBl
ciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBz
dHJva2UtbWl0ZXJsaW1pdC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vY2FwdHVyZVN0cmVhbS9jYW52YXMzZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L21lZGlhc3RyZWFtL2NhcHR1cmVTdHJlYW0vY2FudmFzM2QtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjU2Nzc2NDViMDY4ZmU5YzU4NzEyYzU5MmJiNzJkM2ZjMDk4ODZiOGMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2NhcHR1cmVTdHJlYW0vY2FudmFz
M2QtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIz
OiBUdXJuaW5nIGRyYXdpbmcgYnVmZmVyIHByZXNlcnZhdGlvbiBmb3IgdGhlIFdlYkdMIGNhbnZh
cyBiZWluZyBjYXB0dXJlZAorICAKKyAKKworUEFTUyBjYXB0dXJlU3RyZWFtIHdpdGggM2QgY29u
dGV4dCBkcmF3aW5nIC0gbm90IGJ1ZmZlcmVkIGluaXRpYWxseSAKK1BBU1MgY2FwdHVyZVN0cmVh
bSB3aXRoIDNkIGNvbnRleHQgZHJhd2luZyAtIGJ1ZmZlcmVkIGluaXRpYWxseSAKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9jYXB0dXJlU3RyZWFtL2NhbnZhczNk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2NhcHR1cmVTdHJlYW0vY2FudmFz
M2QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43ODBiMzhlMWJkOWQyMWMwNDE0ZTkzMmQ3MDZhMGI0Y2UxNWIw
MDIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9jYXB0
dXJlU3RyZWFtL2NhbnZhczNkLmh0bWwKQEAgLTAsMCArMSw4MSBAQAorPCFET0NUWVBFIEhUTUwg
UFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+CisgICAgPGJvZHk+CisgICAg
ICAgIDxjYW52YXMgaWQ9ImNhbnZhczEiIHdpZHRoPTQwMHB4IGhlaWdodD00MDBweD48L2NhbnZh
cz4KKyAgICAgICAgPHZpZGVvIGlkPSJ2aWRlbzEiIGNvbnRyb2xzIGF1dG9wbGF5IHdpZHRoPTQw
MHB4IGhlaWdodD00MDBweD48L3ZpZGVvPgorICAgICAgICA8YnI+CisgICAgICAgIDxjYW52YXMg
aWQ9ImNhbnZhczIiIHdpZHRoPTQwMHB4IGhlaWdodD00MDBweD48L2NhbnZhcz4KKyAgICAgICAg
PHZpZGVvIGlkPSJ2aWRlbzIiIGNvbnRyb2xzIGF1dG9wbGF5IHdpZHRoPTQwMHB4IGhlaWdodD00
MDBweD48L3ZpZGVvPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+
CisKK3ZhciBjYW52YXMxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhczEiKTsKK3Zh
ciBjYW52YXMyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhczIiKTsKK3ZhciB2aWRl
bzEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8xIik7Cit2YXIgdmlkZW8yID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZGVvMiIpOwordmFyIGdsMSA9IGNhbnZhczEuZ2V0Q29u
dGV4dCgnd2ViZ2wnLCB7IHByZXNlcnZlRHJhd2luZ0J1ZmZlcjogZmFsc2UgfSApOwordmFyIGds
MiA9IGNhbnZhczIuZ2V0Q29udGV4dCgnd2ViZ2wnLCB7IHByZXNlcnZlRHJhd2luZ0J1ZmZlcjog
dHJ1ZSB9ICk7CisKK2Z1bmN0aW9uIG1vZGlmeUNhbnZhcyhnbCwgZ3JlZW4pCit7CisgICAgZ2wu
Y2xlYXJDb2xvcigwLCBncmVlbiA/IDEgOiAwLCAwLCAxKTsKKyAgICBnbC5jbGVhcihnbC5DT0xP
Ul9CVUZGRVJfQklUKTsKKworICAgIHNldFRpbWVvdXQoKCkgPT4geyBtb2RpZnlDYW52YXMoZ2ws
ICFncmVlbikgfSwgNTAwKTsKK30KKworZnVuY3Rpb24gY2hlY2tHcmVlblBpeGVsKHZhbHVlLCBj
cHRyKQoreworICAgIHZhciBpbmRleCA9IGNwdHIgJSA0OworICAgIGlmIChpbmRleCA9PSAwKQor
ICAgICAgICByZXR1cm4gdmFsdWUgPT0gMDsKKyAgICBpZiAoaW5kZXggPT0gMSkKKyAgICAgICAg
cmV0dXJuIHZhbHVlID09IDI1NTsKKyAgICBpZiAoaW5kZXggPT0gMikKKyAgICAgICAgcmV0dXJu
IHZhbHVlID09IDA7CisgICAgaWYgKGluZGV4ID09IDMpCisgICAgICAgIHJldHVybiB2YWx1ZSA9
PSAyNTU7Cit9CisKK3Byb21pc2VfdGVzdCgodGVzdCkgPT4geworICAgIHZhciBzdHJlYW0gPSBj
YW52YXMxLmNhcHR1cmVTdHJlYW0oKTsKKyAgICB2aWRlbzEuc3JjT2JqZWN0ID0gc3RyZWFtOwor
CisgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICB2YXIgcHJvbWlzZSA9IFByb21p
c2UucmVzb2x2ZSgpOworICAgIGVsc2UgeworICAgICAgICBpbnRlcm5hbHMub2JzZXJ2ZU1lZGlh
U3RyZWFtVHJhY2soc3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0pOworICAgICAgICB2YXIgcHJv
bWlzZSA9IGludGVybmFscy5ncmFiTmV4dE1lZGlhU3RyZWFtVHJhY2tGcmFtZSgpLnRoZW4oKGRh
dGEpID0+IHsKKyAgICAgICAgICAgIGRhdGEuZGF0YS5mb3JFYWNoKCh2YWx1ZSwgY3B0cikgPT4g
eworICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKGNoZWNrR3JlZW5QaXhlbCh2YWx1ZSwgY3B0
ciksICJleHBlY3RpbmcgdmFsdWUgIiArIGNwdHIgKyAiIHRvIGJlIHBhcnQgb2YgYSBncmVlbiBw
aXhlbCIpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pCisgICAgfQorCisgICAgbW9kaWZ5
Q2FudmFzKGdsMSwgdHJ1ZSk7CisgICAgcmV0dXJuIHByb21pc2U7Cit9LCAiY2FwdHVyZVN0cmVh
bSB3aXRoIDNkIGNvbnRleHQgZHJhd2luZyAtIG5vdCBidWZmZXJlZCBpbml0aWFsbHkiKTsKKwor
cHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7CisgICAgdmFyIHN0cmVhbSA9IGNhbnZhczIuY2FwdHVy
ZVN0cmVhbSgpOworICAgIHZpZGVvMi5zcmNPYmplY3QgPSBzdHJlYW07CisKKyAgICBpZiAoIXdp
bmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHZhciBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7
CisgICAgZWxzZSB7CisgICAgICAgIGludGVybmFscy5vYnNlcnZlTWVkaWFTdHJlYW1UcmFjayhz
dHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXSk7CisgICAgICAgIHZhciBwcm9taXNlID0gaW50ZXJu
YWxzLmdyYWJOZXh0TWVkaWFTdHJlYW1UcmFja0ZyYW1lKCkudGhlbigoZGF0YSkgPT4geworICAg
ICAgICAgICAgZGF0YS5kYXRhLmZvckVhY2goKHZhbHVlLCBjcHRyKSA9PiB7CisgICAgICAgICAg
ICAgICAgYXNzZXJ0X3RydWUoY2hlY2tHcmVlblBpeGVsKHZhbHVlLCBjcHRyKSwgImV4cGVjdGlu
ZyB2YWx1ZSAiICsgY3B0ciArICIgdG8gYmUgcGFydCBvZiBhIGdyZWVuIHBpeGVsIik7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfSkKKyAgICB9CisKKyAgICBtb2RpZnlDYW52YXMoZ2wyLCB0
cnVlKTsKKyAgICByZXR1cm4gcHJvbWlzZTsKK30sICJjYXB0dXJlU3RyZWFtIHdpdGggM2QgY29u
dGV4dCBkcmF3aW5nIC0gYnVmZmVyZWQgaW5pdGlhbGx5Iik7CisKKyAgICAgICAgPC9zY3JpcHQ+
CisgICAgPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>