<?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>217374</bug_id>
          
          <creation_ts>2020-10-06 03:51:03 -0700</creation_ts>
          <short_desc>Mac: Remove OpenGL and OpenGL ES backends</short_desc>
          <delta_ts>2020-10-08 17:14: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>WebGL</component>
          <version>WebKit Local Build</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>217213</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>achristensen</cc>
    
    <cc>annulen</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>noam</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1695091</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-10-06 03:51:03 -0700</bug_when>
    <thetext>Remove OpenGL (CGL) and OpenGL ES (EAGL) backends. Make ANGLE the only backend.
Current layering violations and technical dept makes it too laboursome to implement the blocking bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695510</commentid>
    <comment_count>1</comment_count>
      <attachid>410745</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-10-07 05:25:02 -0700</bug_when>
    <thetext>Created attachment 410745
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695535</commentid>
    <comment_count>2</comment_count>
      <attachid>410745</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-10-07 08:06:53 -0700</bug_when>
    <thetext>Comment on attachment 410745
Patch

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

Looks great.

&gt; Source/WebCore/platform/graphics/GraphicsContextGL.h:780
&gt; +

Should not leave this extra blank line.

&gt; Source/WebCore/platform/graphics/cocoa/WebGLLayer.h:38
&gt; +

Should not add this extra blank line here.

&gt; Source/WebCore/platform/graphics/cv/VideoTextureCopierCV.cpp:52
&gt; +namespace {

We mostly still use static rather than anonymous namespace for this kind of thing in WebKit.

&gt; Source/WebCore/platform/graphics/cv/VideoTextureCopierCV.cpp:53
&gt; +// TODO: Fix style to allow multi-line raw strings.

Not an important follow-up so I would omit this comment. Also. WebKit usies FIXME, not TODO.

&gt; Source/WebCore/platform/graphics/cv/VideoTextureCopierCV.cpp:54
&gt; +#define SHADER(text) #text##_s

Why do we need this macro at all? It does not seem to add any helpful abstraction.

&gt; Source/WebCore/platform/graphics/cv/VideoTextureCopierCV.cpp:56
&gt; +const ASCIILiteral s_rgbVertexShader { SHADER(

constexpr auto or static constexpr auto?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695573</commentid>
    <comment_count>3</comment_count>
      <attachid>410745</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2020-10-07 09:42:51 -0700</bug_when>
    <thetext>Comment on attachment 410745
Patch

Awesome!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695830</commentid>
    <comment_count>4</comment_count>
      <attachid>410819</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-10-08 02:00:10 -0700</bug_when>
    <thetext>Created attachment 410819
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695984</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-08 11:56:50 -0700</bug_when>
    <thetext>Committed r268198: &lt;https://trac.webkit.org/changeset/268198&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 410819.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695985</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-08 11:57:29 -0700</bug_when>
    <thetext>&lt;rdar://problem/70103808&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696076</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-10-08 17:14:30 -0700</bug_when>
    <thetext>Has this day really finally come?  Exciting!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410745</attachid>
            <date>2020-10-07 05:25:02 -0700</date>
            <delta_ts>2020-10-08 02:00:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217374-20201007152500.patch</filename>
            <type>text/plain</type>
            <size>151553</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGRmMTI5ZmUzODM3ODEz
YmRiOGEzYTVkZDE0N2M2N2VmMDY2ZjYyZS4uZDI5YzZkODQzZDExMjMzYjUyNGVkNzRhNmJkODI0
Mjk2YTg3YmVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOCBAQAorMjAyMC0xMC0wNyAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIE1hYzogUmVtb3Zl
IE9wZW5HTCBhbmQgT3BlbkdMIEVTIGJhY2tlbmRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTczNzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgbWFjT1MgT3BlbkdMIChDR0wpIGFuZCBpT1Mg
T3BlbkdMIEVTIChFQUdMKQorICAgICAgICBpbXBsZW1lbnRhdGlvbnMgb2YgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuIFRoZXNlCisgICAgICAgIGFyZSBub3QgdXNlZCBhbnltb3JlIGFuZCBjYW5u
b3QgYmUgdXNlZCBmb3IgY29uZm9ybWFudAorICAgICAgICBXZWJHTC4gVGhlIHR3byByZW1vdmVk
IGJhY2tlbmRzIHdvdWxkIGp1c3QgY3JlYXRlCisgICAgICAgIG1haW50YWluYW5jZSBidXJkZW4u
CisKKyAgICAgICAgUmVtb3ZlcyBUZXh0dXJlQ2FjaGVDViwgdGhpcyB3YXMgbm90IGltcGxlbWVu
dGVkIGZvcgorICAgICAgICBBTkdMRSBhbmQgaW4gY29tbWVudHMgaXQgd2FzIHNhaWQgdG8gYmUg
ZGlzYWJsZWQgaW4KKyAgICAgICAgdGhlIHBsYXRmb3JtLgorCisgICAgICAgIEZpeGVzIGEgYnVn
IHdoZXJlIGlPUyBhcHBzIG9uIE1hYyBBcHBsZSBTaWxpY29uIHdvdWxkCisgICAgICAgIG5vdCB1
c2UgY29ycmVjdCB0ZXh0dXJlIHRhcmdldCB0byBjb252ZXJ0IHRoZSB2aWRlbworICAgICAgICBm
cmFtZXMgaW4gVmlkZW9UZXh0dXJlQ29waWVyQ1YuCisKKyAgICAgICAgRml4ZXMgZmV3IGluc3Rh
bmNlcyBvZiB1c2luZyBHTCB0eXBlcyBpbiBXZWJHTCBpbXBsZW1lbnRhdGlvbgorICAgICAgICBp
bnN0ZWFkIG9mIFdlYkNvcmUgZGVmaW5lZCBHQ0dMIHR5cGVzLiBUaGlzIGlzIG5lZWRlZAorICAg
ICAgICBub3cgdGhhdCB0aGUgaW5jbHVkZXMgYXJlIChhIGJpdCkgbW9yZSBjb3JyZWN0LgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cywgYSByZWZhY3RvcmluZy4KKworICAgICAgICAqIFBsYXRmb3Jt
TWFjLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL0FOR0xF
SW5zdGFuY2VkQXJyYXlzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFSW5zdGFuY2VkQXJy
YXlzOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0Nv
bnRleHQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZWFkUGl4
ZWxzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJp
bmdSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29j
b2EubW06CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6On5HcmFwaGljc0NvbnRleHRHTE9wZW5HTCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6SU9TdXJmYWNlVGV4dHVyZVRhcmdldCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6SU9TdXJmYWNlVGV4dHVyZVRhcmdldFF1
ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpFR0xJT1N1
cmZhY2VUZXh0dXJlVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjptYWtlQ29udGV4dEN1cnJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmNoZWNrR1BVU3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpzZXRDb250ZXh0VmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2NyZWVuRGlkQ2hhbmdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbToKKyAgICAgICAgKC1bV2ViR0xMYXllciBp
bml0V2l0aEdyYXBoaWNzQ29udGV4dEdMOl0pOgorICAgICAgICAoLVtXZWJHTExheWVyIHNldEFu
Y2hvclBvaW50Ol0pOgorICAgICAgICAoLVtXZWJHTExheWVyIGNvcHlJbWFnZVNuYXBzaG90V2l0
aENvbG9yU3BhY2U6XSk6CisgICAgICAgICgtW1dlYkdMTGF5ZXIgcHJlcGFyZUZvckRpc3BsYXld
KToKKyAgICAgICAgKC1bV2ViR0xMYXllciBkaXNwbGF5XSk6CisgICAgICAgICgtW1dlYkdMTGF5
ZXIgcmVsZWFzZUdMUmVzb3VyY2VzXSk6CisgICAgICAgICgtW1dlYkdMTGF5ZXIgYWxsb2NhdGVJ
T1N1cmZhY2VCYWNraW5nU3RvcmVXaXRoU2l6ZTp1c2luZ0FscGhhOl0pOgorICAgICAgICAoLVtX
ZWJHTExheWVyIGJpbmRGcmFtZWJ1ZmZlclRvTmV4dEF2YWlsYWJsZVN1cmZhY2VdKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLm1tOiBSZW1vdmVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGllckNWLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVGV4dHVyZUNvcGllckNWOjppbml0aWFsaXplQ29udGV4
dE9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UZXh0dXJlQ29waWVyQ1Y6OmluaXRp
YWxpemVVVkNvbnRleHRPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVGV4dHVyZUNv
cGllckNWOjphdHRhY2hJT1N1cmZhY2VUb1RleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9UZXh0dXJlQ29waWVyQ1Y6OmRldGFjaElPU3VyZmFjZUZyb21UZXh0dXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OlZpZGVvVGV4dHVyZUNvcGllckNWOjpjb3B5SW1hZ2VUb1BsYXRmb3JtVGV4dHVy
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RleHR1cmVDb3BpZXJDVjo6Y29weVZpZGVvVGV4
dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9W
aWRlb1RleHR1cmVDb3BpZXJDVi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTEVTSU9TLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OmNyZWF0ZVZlcnRleEFycmF5T0VTKToKKyAgICAgICAg
KFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTDo6ZGVsZXRlVmVydGV4QXJyYXlPRVMpOgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMOjppc1ZlcnRleEFycmF5T0VTKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTDo6YmluZFZlcnRleEFycmF5T0VTKToK
KyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTDo6c3VwcG9ydHNFeHRlbnNpb24p
OgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3QnVmZmVyc0VYVCk6
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdBcnJheXNJbnN0YW5j
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJ
bnN0YW5jZWQpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMOjp2ZXJ0ZXhB
dHRyaWJEaXZpc29yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmluaXRpYWxpemVBdmFpbGFibGVFeHRlbnNpb25zKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNldENvbnRleHRWaXNpYmls
aXR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpyZWFkUGl4ZWxzQW5kQ29udmVydFRvQkdSQUlmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzb2x2ZU11bHRpc2FtcGxp
bmdJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Z2V0SW50ZWdlcnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmRlcHRoUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNsZWFyRGVwdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmdldEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlYWRQaXhlbHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvcHlUZXhJbWFnZTJEKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb3B5VGV4U3ViSW1h
Z2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZmluaXNo
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpmbHVzaCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZGVsZXRlVGV4dHVyZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMRVMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xNYW5hZ2VyOjp1cGRhdGVBbGxDb250ZXh0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnVwZGF0ZUhpZ2hQZXJmb3JtYW5jZVN0
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6
ZGlzYWJsZUhpZ2hQZXJmb3JtYW5jZUdQVVRpbWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaDoKKwogMjAy
MC0xMC0wNyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFr
ZSBzdXJlIHRvIGZpcmUgdGhlIGNvcnJlY3Qgc2V0IG9mIGV2ZW50cyBpbiBjYXNlIE1lZGlhUmVj
b3JkZXIgc3RyZWFtIGhhcyB0cmFjayBjaGFuZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmlu
ZGV4IDkyNTk0MDc0YmI5NGUwZGNmOGI1MTVjODI1YTY5NzI3ZDBmYTgzYjQuLjBmMTZmNDRjNTUw
MzA3YzljNjdlZDA5NmUxYmMyOTM5Yzk1MjdmMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtl
CkBAIC0zMjgsNyArMzI4LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULm1tCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5jcHAKLSAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2N2L1Zp
ZGVvVGV4dHVyZUNvcGllckNWLmNwcAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1
cmUuY3BwCkBAIC0zNDgsMTEgKzM0Nyw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQogCi0gICAgcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCi0gICAgcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAotICAgIHBsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9UZW1wb3JhcnlPcGVuR0xTZXR0aW5nLmNwcAogCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQK
aW5kZXggMDU4NTIzYjc3YzQ2ODMzMzM1MDdlM2VkNTY0MzYzYWFjNjI3N2QwMi4uZTNiMmUyOWU4
MDJhNDFiMjE4YTE3YmI1NDMyZGYwOWNiODIyYjFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
CkBAIC0zNzYsNyArMzc2LDYgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRm
b3JtRGF0YUNvcmVUZXh0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvR2x5cGhQYWdl
Q29yZVRleHQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZU
Lm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNwcAotcGxh
dGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2N2
L1ZpZGVvVGV4dHVyZUNvcGllckNWLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0Zp
bHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4
dHVyZS5jcHAKQEAgLTQxNiwxMiArNDE1LDggQEAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBs
ZUZvbnREYXRhQ29yZVRleHQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvU3dpdGNoaW5nR1BV
Q2xpZW50LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYktpdE5TSW1hZ2VFeHRyYXMubW0K
IHBsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQotcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0xDb21tb24uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAotcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9UZW1wb3JhcnlPcGVuR0xTZXR0aW5nLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVDRy5jcHAKIHBsYXRmb3JtL2lvcy9Db2xvcklPUy5tbQogcGxhdGZvcm0vaW9zL0Rl
dmljZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBjY2RiZGI1ZTQwYzIxMzM3ZGQ5MmY0YjNhNTBhN2JlMzA4MzRiYTFkLi44
YmNlOGU1MWE0MWRmZjIzYThmMjAzNGQzNzY1MDQ2ZDg1YmUzODFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05NTEsNyArOTUx
LDYgQEAKIAkJMzFBMDg5ODkxRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVVGV4dHVyZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5NTAxRTcz
OEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVVGV4dHVyZS5oICovOyB9OwogCQkzMUEwODk4QzFFNzM4
RDVBMDAzQjY2MDkgLyogSlNXZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5NTMxRTczOEQ1OTAwM0I2NjA5
IC8qIEpTV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaCAqLzsgfTsKIAkJMzFBNzk1QzcxODg4QkNC
MjAwMzgyRjkwIC8qIEFOR0xFSW5zdGFuY2VkQXJyYXlzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUE3OTVDMjE4ODhCNzI0MDAzODJGOTAgLyogQU5H
TEVJbnN0YW5jZWRBcnJheXMuaCAqLzsgfTsKLQkJMzFBQjUwMDAxMjI4NzhBMjAwMUE3REIwIC8q
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVNJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQUI0RkZGMTIyODc4QTIwMDFBN0RCMCAvKiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTEVTSU9TLmggKi87IH07CiAJCTMxQzBGRjIyMEU0Q0VCNkUwMDdENkZF
NSAvKiBXZWJLaXRBbmltYXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzFDMEZGMUMwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdEFuaW1h
dGlvbkV2ZW50LmggKi87IH07CiAJCTMxQzBGRjI1MEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRU
cmFuc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxQzBGRjFGMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRUcmFuc2l0aW9uRXZlbnQu
aCAqLzsgfTsKIAkJMzFDMEZGM0UwRTRDRUZBQzAwN0Q2RkU1IC8qIEpTV2ViS2l0QW5pbWF0aW9u
RXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMx
QzBGRjNBMEU0Q0VGQUMwMDdENkZFNSAvKiBKU1dlYktpdEFuaW1hdGlvbkV2ZW50LmggKi87IH07
CkBAIC0xMjEwLDcgKzEyMDksNiBAQAogCQk0NEEyOEFBRjEyREZCOEJGMDBBRTkyM0IgLyogTWF0
aE1MTmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ0QTI4QUFFMTJERkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oICovOyB9OwogCQk0NEM5
OTE4NjBGM0QxRUJFMDA1ODY2NzAgLyogU2Nyb2xsYmFyVGhlbWVJT1MuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Qzk5MTg1MEYzRDFFQkUwMDU4NjY3
MCAvKiBTY3JvbGxiYXJUaGVtZUlPUy5oICovOyB9OwogCQk0NEM5OTE5RjBGM0QyMTBFMDA1ODY2
NzAgLyogVGhlbWVJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ0Qzk5MTlEMEYzRDIxMEUwMDU4NjY3MCAvKiBUaGVtZUlPUy5oICovOyB9OwotCQk0
NERBQjVCMjE1QTYyMzU4MDA5N0MxRTQgLyogRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NERBQjVCMDE1QTYy
MzU4MDA5N0MxRTQgLyogRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmggKi87IH07CiAJCTQ0RTM0
OUY5MjQ2RjRFMTkwMDY4NDc5QyAvKiBMaWJXZWJSVENFbnVtVHJhaXRzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEUzNDlGNzI0NkY0REM3MDA2ODQ3
OUMgLyogTGliV2ViUlRDRW51bVRyYWl0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQ1MENFQkYxMTUwNzNCQkUwMDJCQjE0OSAvKiBMYWJlbGFi
bGVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NTBDRUJFRjE1MDczQkJFMDAyQkIxNDkgLyogTGFiZWxhYmxlRWxlbWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ1MTI1MDIzMTVEQ0Uz
N0QwMDJGODRFMiAvKiBTcGluQnV0dG9uRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDUxMjUwMjExNURDRTM3RDAwMkY4NEUyIC8qIFNwaW5C
dXR0b25FbGVtZW50LmggKi87IH07CkBAIC0xMjY2LDcgKzEyNjQsNiBAQAogCQk0NkVGQUYxMjFF
NUZCOUYxMDBFN0YzNEIgLyogTG93UG93ZXJNb2RlTm90aWZpZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RUZBRjEwMUU1RkI5RTEwMEU3RjM0QiAv
KiBMb3dQb3dlck1vZGVOb3RpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTQ2RjAyQTFBMjM3MzdGODMwMDEwNkE2NCAvKiBFdmVudExvb3Au
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMEFCQ0Ex
MjM2NzlBQjMwMEI0NTA4NSAvKiBFdmVudExvb3AuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkZDQjYxODFBNzA4MjBFMDBDNUEyMUUgLyogRGlh
Z25vc3RpY0xvZ2dpbmdLZXlzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRDM3QjM3NTE1QzFBN0UxMDA2REM4OTggLyogRGlhZ25vc3RpY0xvZ2dpbmdL
ZXlzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
NDkwNzA3RTcxMjE5QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJpZGdlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTA3MDdFNTEyMTlDMDQzMDBE
OTBFNTEgLyogQU5HTEVXZWJLaXRCcmlkZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0OTI5MUU0QjEzNDE3MkM4MDBFNzUzREUgLyogSW1hZ2VS
ZW5kZXJpbmdNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0OTI5MUU0QTEzNDE3MkM4MDBFNzUzREUgLyogSW1hZ2VSZW5kZXJpbmdNb2RlLmggKi87
IH07CiAJCTQ5M0U1RTA5MTJENjQyMDUwMDAyMDA4MSAvKiBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5M0U1RTA4
MTJENjQyMDUwMDAyMDA4MSAvKiBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0OTQ1QkZENDEzQ0Y4MDkwMDBD
QzNCMzggLyogVHJhbnNmb3JtU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ5NDVCRkQyMTNDRjgwOTAwMENDM0IzOCAvKiBUcmFuc2Zvcm1TdGF0
ZS5oICovOyB9OwpAQCAtMjAzMyw3ICsyMDMwLDYgQEAKIAkJNkU0N0U2NjExMEI3OTQ0QjAwQjE4
NkM4IC8qIFdlYkdMQW55LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2RTQ3RTY1RjEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xBbnkuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RTRBQkNENTEzOEVBMEI3
MDA3MUQyOTEgLyogSlNIVE1MVW5rbm93bkVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNEFCQ0QzMTM4RUEwQjcwMDcxRDI5MSAvKiBKU0hU
TUxVbmtub3duRWxlbWVudC5oICovOyB9OwogCQk2RTRFOTFBRjEwRjdGQjMxMDBBMjc3OUMgLyog
V2ViR0xDb250ZXh0QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNkU0RTkxQUExMEY3RkIzMTAwQTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0
dHJpYnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwotCQk2RTY3RDJBNzEyODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uc0dMT3BlbkdMLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTY3RDJBNTEyODBF
OEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uc0dMT3BlbkdMLmggKi87IH07CiAJCTZFNjdEMkE5MTI4
MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE4MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNp
b25zR0wuaCAqLzsgfTsKIAkJNkU3MkY1NEMyMjlEQ0QwQzAwQjNFMTUxIC8qIEV4dGVuc2lvbnNH
TEFOR0xFLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDZFMjdGMjQzMjI5QzlGODQwMEYxRjYzMiAvKiBFeHRlbnNpb25zR0xBTkdMRS5jcHAgKi87IH07
CiAJCTZFNzJGNTRFMjI5RENEMTAwMEIzRTE1MSAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMjdGMjQy
MjI5OENFNEIwMEYxRjYzMiAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCAqLzsgfTsKQEAg
LTQyMTIsNyArNDIwOCw2IEBACiAJCUNEOTRBNUREMUY3MUQ1RDgwMEY1MjVDNSAvKiBDRE1DbGVh
cktleS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RDk0QTVEQjFGNzFDQkIwMDBGNTI1QzUgLyogQ0RNQ2xlYXJLZXkuY3BwICovOyB9OwogCQlDRDk0
QTVERTFGNzJGNTdCMDBGNTI1QzUgLyogQ0RNQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVDOTFGNzFDQTlEMDBGNTI1QzUgLyogQ0RN
Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQ0Q5Q0M1ODUyNEM2QkJFQjAwQ0QzQzY0IC8qIFZQOVV0aWxpdGllcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q2RkU1QkEyNEJDRTdCNjAwOUZD
REE0IC8qIFZQOVV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCUNEOUQ4Mjc2MUM3QUU1MzUwMDZGRjA2NiAvKiBUZXh0dXJlQ2FjaGVD
Vi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q5RDgy
NzQxQzdBRTUzNTAwNkZGMDY2IC8qIFRleHR1cmVDYWNoZUNWLmggKi87IH07CiAJCUNEOUQ4MjdB
MUM3QjhFRTEwMDZGRjA2NiAvKiBWaWRlb1RleHR1cmVDb3BpZXJDVi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q5RDgyNzgxQzdCOEVFMTAwNkZGMDY2
IC8qIFZpZGVvVGV4dHVyZUNvcGllckNWLmggKi87IH07CiAJCUNEOURFMTc1MTdBQUM3NEMwMEVB
Mzg2RCAvKiBKU01lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDlERTE3MzE3QUFDNzRDMDBFQTM4NkQgLyogSlNNZWRpYVNvdXJjZS5o
ICovOyB9OwogCQlDRDlERTE3QjE3QUFDNzVCMDBFQTM4NkQgLyogSlNTb3VyY2VCdWZmZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOURFMTc3MTdB
QUM3NUIwMEVBMzg2RCAvKiBKU1NvdXJjZUJ1ZmZlci5oICovOyB9OwpAQCAtNzMxNCw3ICs3MzA5
LDYgQEAKIAkJMzFBNzk1QzMxODg4QjcyNDAwMzgyRjkwIC8qIEFOR0xFSW5zdGFuY2VkQXJyYXlz
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBTkdMRUluc3RhbmNlZEFycmF5cy5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxQTc5NUM0MTg4OEJBRDEwMDM4MkY5MCAvKiBK
U0FOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTQU5HTEVJbnN0YW5jZWRBcnJheXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzMUE3OTVDNTE4ODhCQUQxMDAzODJGOTAgLyogSlNBTkdMRUluc3RhbmNlZEFycmF5
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FOR0xFSW5zdGFuY2VkQXJy
YXlzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxQUI0RkZGMTIyODc4QTIwMDFB
N0RCMCAvKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTSU9TLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVNJT1MuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFDMEZGMUIwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdEFu
aW1hdGlvbkV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
YktpdEFuaW1hdGlvbkV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFD
MEZGMUMwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdEFuaW1hdGlvbkV2ZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdEFuaW1hdGlvbkV2ZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxQzBGRjFEMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRB
bmltYXRpb25FdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0QW5pbWF0aW9u
RXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzkzMCw4ICs3OTI0LDYg
QEAKIAkJNDRDQTI4NDMyNDVGQ0E1MDAwQzk0QzdGIC8qIExvY2FsQ3VycmVudEdyYXBoaWNzQ29u
dGV4dElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvY2Fs
Q3VycmVudEdyYXBoaWNzQ29udGV4dElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDREOERBOTgxMzk1NDVCRTAwMzM3Qjc1IC8qIFNWR01QYXRoRWxlbWVudC5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gU1ZHTVBhdGhFbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDREOERBOUExMzk1NDVDRDAwMzM3Qjc1IC8qIFNWR0FuaW1hdGVNb3Rpb25F
bGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTVkdBbmltYXRlTW90aW9uRWxlbWVu
dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ0REFCNUFGMTVBNjIzNTgwMDk3
QzFFNCAvKiBFeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDREQUI1QjAxNUE2MjM1ODAwOTdDMUU0IC8qIEV4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRF
MzQ5RjcyNDZGNERDNzAwNjg0NzlDIC8qIExpYldlYlJUQ0VudW1UcmFpdHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRDRW51bVRyYWl0cy5oOyBwYXRoID0gbGli
d2VicnRjL0xpYldlYlJUQ0VudW1UcmFpdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDRFODhFNEMyMzY5MTI4QTAwOUI0ODQ3IC8qIEhpZ2hsaWdodE1hcC5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gSGlnaGxpZ2h0TWFwLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDRFODhFNEQyMzY5MTI4QjAwOUI0ODQ3IC8qIEhpZ2hsaWdodFJhbmdlR3JvdXAuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhpZ2hsaWdodFJhbmdlR3JvdXAuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtODA0MSw4ICs4MDMzLDYgQEAKIAkJNDZFRkFGMEYxRTVG
QjlFMTAwRTdGMzRCIC8qIExvd1Bvd2VyTW9kZU5vdGlmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvd1Bvd2VyTW9kZU5vdGlmaWVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZFRkFGMTAxRTVGQjlFMTAwRTdGMzRCIC8qIExvd1Bvd2Vy
TW9kZU5vdGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvd1Bvd2Vy
TW9kZU5vdGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RjkxQkM5MUZD
REQwRkUwMDE1OTlDMyAvKiBKU1dvcmtlck5hdmlnYXRvckN1c3RvbS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dvcmtlck5hdmlnYXRvckN1c3RvbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5MDcwN0U0MTIxOUMwNDMwMEQ5MEU1MSAvKiBB
TkdMRVdlYktpdEJyaWRnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBBTkdMRVdlYktpdEJyaWRnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5
MDcwN0U1MTIxOUMwNDMwMEQ5MEU1MSAvKiBBTkdMRVdlYktpdEJyaWRnZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBTkdMRVdlYktpdEJyaWRnZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0OTI5MUU0QTEzNDE3MkM4MDBFNzUzREUgLyogSW1hZ2VSZW5kZXJp
bmdNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlUmVuZGVyaW5n
TW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTNFNUUwODEyRDY0MjA1MDAw
MjAwODEgLyogUGxhdGZvcm1DQUxheWVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBsYXRmb3JtQ0FMYXllckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0OTQ1QkZEMTEzQ0Y4MDkwMDBDQzNCMzggLyogVHJhbnNmb3JtU3RhdGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHJhbnNmb3JtU3RhdGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTU1OSw4ICs5NTQ5LDYgQEAKIAkJNkU1Mzg4
RTAyNDU4QUUxRDAwNzZBRTAzIC8qIFdlYkdMQ29sb3JCdWZmZXJGbG9hdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJHTENvbG9yQnVmZmVyRmxvYXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk2RTUzODhFMTI0NThBRTFEMDA3NkFFMDMgLyogV2ViR0xDb2xvckJ1ZmZlckZs
b2F0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBXZWJHTENvbG9yQnVmZmVyRmxvYXQuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2RTU3NkJDMzI0RUI1MDlDMDA5NEQ0QUEgLyogSlNIVE1MQ2FudmFzRWxl
bWVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hU
TUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NkU2N0QyQTQxMjgwRThBNDAwODc1OEY3IC8qIEV4dGVuc2lvbnNHTE9wZW5HTC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeHRlbnNpb25zR0xPcGVuR0wuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2RTY3RDJBNTEyODBFOEE0MDA4NzU4RjcgLyog
RXh0ZW5zaW9uc0dMT3BlbkdMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4
dGVuc2lvbnNHTE9wZW5HTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTY3RDJB
ODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uc0dMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEV4dGVuc2lvbnNHTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk2RTg0RTlERTE3NjY4QkFEMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmFzdGVyU2hhcGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2RTg0RTlERjE3NjY4QkFEMDA4MTVCNjggLyogUmFzdGVyU2hhcGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmFzdGVyU2hhcGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMDI5LDggKzEwMDE3LDYgQEAKIAkJN0ExRDdGQ0Ex
OEY4NUYwRjAwQzM4NUFEIC8qIGVuICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0gZW47IHBhdGggPSBl
bi5scHJvai9tZWRpYUNvbnRyb2xzTG9jYWxpemVkU3RyaW5ncy5qczsgc291cmNlVHJlZSA9IFNP
VVJDRV9ST09UOyB9OwogCQk3QTIyNzMxRTIwQzlGOUQ5MDBEQjFERUYgLyogV2ViS2l0TlNJbWFn
ZUV4dHJhcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYktpdE5TSW1hZ2VFeHRyYXMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBMjI3MzFGMjBDOUY5REEwMERCMURFRiAv
KiBXZWJLaXROU0ltYWdlRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdE5TSW1hZ2VFeHRy
YXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0EyOUJBNjcxODdCNzMyMjAwRjI5
Q0VCIC8qIFRlbXBvcmFyeU9wZW5HTFNldHRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGVtcG9yYXJ5T3BlbkdMU2V0dGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk3QTI5QkE2OTE4N0I3ODFDMDBGMjlDRUIgLyogVGVtcG9yYXJ5T3BlbkdMU2V0dGlu
Zy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZW1wb3JhcnlPcGVu
R0xTZXR0aW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0EyOUY1NzExOEM2
OTUxNDAwNEQwRjgxIC8qIE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTNFQkVBQTIxQkYwNTRDMDAwRDA0M0QgLyog
SlNTVkdWaWV3U3BlY0N1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NWR1ZpZXdTcGVj
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E0NTAzMkQxOERCNzE3
MjAwMzc3QjM0IC8qIEJ1ZmZlcmVkTGluZVJlYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBCdWZmZXJlZExpbmVSZWFkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTE0NzAsNyArMTE0NTYsNiBAQAogCQk5NTIwNzYwMTFGMjY3NUY5MDA3
RDJBQUIgLyogQ2FsbFRyYWNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsVHJhY2VyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1MjA3NjAyMUYyNjc1RjkwMDdEMkFBQiAvKiBDYWxs
VHJhY2VyVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbFRyYWNlclR5cGVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1REY5RDIzMjUyQkVEOTkwMDBEN0Y0NiAvKiBQb2ludGVy
Q2hhcmFjdGVyaXN0aWNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3Mu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTZBQkE0MjIxNEJDQjgwRTAwRDU2MjA0
IC8qIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcwNTk5NzUxMDdEOTc1MjAwQTUwQTdDIC8qIFBv
bGljeUNoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9s
aWN5Q2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3MDU5OTc2MTA3
RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBvbGljeUNoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTcwQjcyODkxNDRGRkFDNjAwRjAwQTM3IC8qIEV2ZW50SW50ZXJmYWNlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBFdmVudEludGVyZmFjZXMuaDsgcGF0aCA9IERlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvRXZlbnRJbnRlcmZhY2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CkBAIC0xNDQ5Myw4ICsxNDQ3OCw2IEBACiAJCUNEOUE4N0Y5MjE1RDZDRjMw
MDZGMTdCNSAvKiBRdWlya3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVpcmtzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q5QTg3RkIyMTVENkNGMzAwNkYxN0I1IC8qIFF1
aXJrcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBRdWlya3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0Q5RDM3NUEyMTUxNjNFNDAwNDk2NTdCIC8qIENETUluc3RhbmNlU2Vzc2lvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDRE1JbnN0YW5jZVNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQ0Q5RDgyNzMxQzdBRTUzNTAwNkZGMDY2IC8qIFRleHR1cmVDYWNoZUNWLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGV4dHVyZUNhY2hlQ1YubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUNEOUQ4Mjc0MUM3QUU1MzUwMDZGRjA2NiAv
KiBUZXh0dXJlQ2FjaGVDVi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0
dXJlQ2FjaGVDVi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDlEODI3NzFDN0I4
RUUxMDA2RkYwNjYgLyogVmlkZW9UZXh0dXJlQ29waWVyQ1YuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVmlkZW9UZXh0dXJlQ29waWVyQ1YuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDRDlEODI3ODFDN0I4RUUxMDA2RkYwNjYgLyogVmlkZW9UZXh0
dXJlQ29waWVyQ1YuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9UZXh0
dXJlQ29waWVyQ1YuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q5REUxNzIxN0FB
Qzc0QzAwRUEzODZEIC8qIEpTTWVkaWFTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNNZWRpYVNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNjQwNSw3ICsxNjM4OCw2IEBACiAJCUZCOTJERjQ5MTVGRUQwODcwMDk5NDQzMyAv
KiBDbGlwUGF0aE9wZXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
bGlwUGF0aE9wZXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQjk2NUI4
MTE3QkJCNUY5MDBFODM1QjkgLyogQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDU1NGaWx0ZXJJbWFnZVZhbHVlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUZCOTY1QjgyMTdCQkI2MkMwMEU4MzVCOSAvKiBDU1NGaWx0ZXJJbWFn
ZVZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU0ZpbHRl
ckltYWdlVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGQkMyMjBERTEy
MzdGQkVCMDBCQ0Y3ODggLyogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFz
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZCRDZBRjgyMTVFRjIxQTMwMDhC
NzExMCAvKiBCYXNpY1NoYXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBCYXNpY1NoYXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZCRDZB
RjgzMTVFRjIxQTMwMDhCNzExMCAvKiBCYXNpY1NoYXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBCYXNpY1NoYXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGQkQ2QUY4NDE1RUYyMUQ0MDA4QjcxMTAgLyogQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYXNpY1NoYXBlRnVuY3Rpb25zLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5MzM0LDcgKzE5MzE2LDYgQEAKIAkJ
CQkyRDI5RUNDOTE5MkYxRjFEMDA5ODRCNzggLyogRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TLmgg
Ki8sCiAJCQkJMEY5N0E2NTcxNTVEQTgxRTAwRkFERDRDIC8qIERpc3BsYXlSZWZyZXNoTW9uaXRv
cklPUy5tbSAqLywKIAkJCQkxQUMyRDg5QzFCMUUyOTFGMDBENTJFODcgLyogRm9udEFudGlhbGlh
c2luZ1N0YXRlU2F2ZXIuaCAqLywKLQkJCQkzMUFCNEZGRjEyMjg3OEEyMDAxQTdEQjAgLyogR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xFU0lPUy5oICovLAogCQkJCUZFRDEzRDNGMENFQTkzOTQwMEQ4
OTQ2NiAvKiBJY29uSU9TLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBpb3M7CkBAIC0yNjA1Niw4
ICsyNjAzNyw2IEBACiAJCQkJMzcyMTQ5MzMxOEYwQjZENjAwMTU2RURDIC8qIG9wZW50eXBlICov
LAogCQkJCTQ5RTkxMUIyMEVGODZEMjcwMDlEMENBRiAvKiB0cmFuc2Zvcm1zICovLAogCQkJCTcy
OTlCQzY0MjNENjg2QTYwMENDNjg4MyAvKiBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmggKi8sCi0J
CQkJNDkwNzA3RTQxMjE5QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJpZGdlLmNwcCAqLywK
LQkJCQk0OTA3MDdFNTEyMTlDMDQzMDBEOTBFNTEgLyogQU5HTEVXZWJLaXRCcmlkZ2UuaCAqLywK
IAkJCQk3MjJBODE1QzIzOEZENTA1MDBDMDA1ODMgLyogQW5pbWF0aW9uRnJhbWVSYXRlLmggKi8s
CiAJCQkJQkVGMjlFRTkxNzE1REQwOTAwQzRCNEM5IC8qIEF1ZGlvVHJhY2tQcml2YXRlLmggKi8s
CiAJCQkJQTg5OTQzMjcwQjQyMzM4NzAwRDdDODAyIC8qIEJpdG1hcEltYWdlLmNwcCAqLywKQEAg
LTI3NDgyLDggKzI3NDYxLDYgQEAKIAkJCQkwNzQ2RDMwQTIxNDZFQTM3MDAzRERGODQgLyogSW1h
Z2VUcmFuc2ZlclNlc3Npb25WVC5tbSAqLywKIAkJCQlDRDdEMzM0MTFDN0ExMjNGMDAwNDEyOTMg
LyogUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5jcHAgKi8sCiAJCQkJQ0Q3RDMzNDIxQzdBMTIzRjAw
MDQxMjkzIC8qIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaCAqLywKLQkJCQlDRDlEODI3NDFDN0FF
NTM1MDA2RkYwNjYgLyogVGV4dHVyZUNhY2hlQ1YuaCAqLywKLQkJCQlDRDlEODI3MzFDN0FFNTM1
MDA2RkYwNjYgLyogVGV4dHVyZUNhY2hlQ1YubW0gKi8sCiAJCQkJQ0Q5RDgyNzcxQzdCOEVFMTAw
NkZGMDY2IC8qIFZpZGVvVGV4dHVyZUNvcGllckNWLmNwcCAqLywKIAkJCQlDRDlEODI3ODFDN0I4
RUUxMDA2RkYwNjYgLyogVmlkZW9UZXh0dXJlQ29waWVyQ1YuaCAqLywKIAkJCSk7CkBAIC0yOTg5
MSwxOCArMjk4NjgsMTAgQEAKIAkJRkJDMjIwREQxMjM3RkJFQjAwQkNGNzg4IC8qIG9wZW5nbCAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNkU2N0QyQTQx
MjgwRThBNDAwODc1OEY3IC8qIEV4dGVuc2lvbnNHTE9wZW5HTC5jcHAgKi8sCi0JCQkJNkU2N0Qy
QTUxMjgwRThBNDAwODc1OEY3IC8qIEV4dGVuc2lvbnNHTE9wZW5HTC5oICovLAotCQkJCTQ0REFC
NUFGMTVBNjIzNTgwMDk3QzFFNCAvKiBFeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwICovLAot
CQkJCTQ0REFCNUIwMTVBNjIzNTgwMDk3QzFFNCAvKiBFeHRlbnNpb25zR0xPcGVuR0xDb21tb24u
aCAqLywKIAkJCQk2RTIxQzZCRjExMjYzMzg1MDBBN0JFMDIgLyogR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wuY3BwICovLAogCQkJCTQ5QzdCOUZCMTA0MkQzNjUwMDA5RDQ0NyAvKiBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTC5oICovLAotCQkJCUZCQzIyMERFMTIzN0ZCRUIwMEJDRjc4OCAvKiBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwICovLAotCQkJCTk2QUJBNDIyMTRCQ0I4MEUwMEQ1
NjIwNCAvKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAgKi8sCiAJCQkJRDA4NDNB
NEMyMEZFQzE2NTAwRkU4NjBFIC8qIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5jcHAg
Ki8sCiAJCQkJMzE5QTcyODcyM0MyNjdFNzAwODUzNTNDIC8qIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMTWFuYWdlci5oICovLAotCQkJCTdBMjlCQTY5MTg3Qjc4MUMwMEYyOUNFQiAvKiBUZW1wb3Jh
cnlPcGVuR0xTZXR0aW5nLmNwcCAqLywKLQkJCQk3QTI5QkE2NzE4N0I3MzIyMDBGMjlDRUIgLyog
VGVtcG9yYXJ5T3BlbkdMU2V0dGluZy5oICovLAogCQkJKTsKIAkJCXBhdGggPSBvcGVuZ2w7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzA0OTAsNyArMzA0NTksNiBAQAogCQkJCUZE
MzE2MDNFMTJCMDI2NzYwMEMxQTM1OSAvKiBBbmFseXNlck5vZGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUU3RTAzNTcyMjRENEUxOTYwMDhERkVGQiAvKiBBbmFseXNlck9wdGlvbnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTMxQTc5NUM3MTg4OEJDQjIwMDM4MkY5MCAvKiBBTkdMRUluc3RhbmNlZEFy
cmF5cy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDkwNzA3RTcxMjE5QzA0MzAwRDkwRTUxIC8qIEFO
R0xFV2ViS2l0QnJpZGdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTJBQjBFRkFDOTA2MDA5
RDBDQUYgLyogQW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MUVGQ0VEQzIwMkIzOEE5
MDBEN0M0MTEgLyogQW5pbWF0aW9uRWZmZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MUUyQzQy
NjIxQzkzNTI4MDAyNEY4QzggLyogQW5pbWF0aW9uRWZmZWN0UGhhc2UuaCBpbiBIZWFkZXJzICov
LApAQCAtMzE0MjgsOCArMzEzOTYsNiBAQAogCQkJCTMxRENERjQ0MURBMUM0NTQwMEVBNUI5MyAv
KiBFeHRlbmRlZENvbG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RTY3RDJBOTEyODBFOEJEMDA4
NzU4RjcgLyogRXh0ZW5zaW9uc0dMLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RTcyRjU1MDIyOURD
RDE3MDBCM0UxNTEgLyogRXh0ZW5zaW9uc0dMQU5HTEUuaCBpbiBIZWFkZXJzICovLAotCQkJCTZF
NjdEMkE3MTI4MEU4QTQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0xPcGVuR0wuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTQ0REFCNUIyMTVBNjIzNTgwMDk3QzFFNCAvKiBFeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUU0N0UyNzY1MTYwMzZFRDIwMEVFMkFGQiAvKiBF
eHRlbnNpb25TdHlsZVNoZWV0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM0MzA0QjExOTFBQzkw
ODAwMEUyQkMwIC8qIEVYVFNoYWRlclRleHR1cmVMT0QuaCBpbiBIZWFkZXJzICovLAogCQkJCTc3
Mjg2OTRGMTRGODg4MjUwMEY0ODREQyAvKiBFWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuaCBp
biBIZWFkZXJzICovLApAQCAtMzE2MzgsNyArMzE2MDQsNiBAQAogCQkJCTMxM0RFODcwMjNBOTY5
NzMwMDhGQzQ3QiAvKiBHcmFwaGljc0NvbnRleHRHTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0Mz
MzBBMDIxREY4RkFDNjAwRDMzOTVDIC8qIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5RkMxMDQyRDM2NTAwMDlENDQ3IC8qIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMUFCNTAwMDEyMjg3OEEyMDAxQTdE
QjAgLyogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFU0lPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MzE5QTcyODgyM0MyNjdGRTAwODUzNTNDIC8qIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRBQ0I5RTkyMzc1NUQwMDAwQjRDMTg1IC8qIEdyYXBo
aWNzQ29udGV4dEltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEQ2NzA4MEU5RTlERUIwMEU0
MjBGMCAvKiBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5oIGluIEhlYWRlcnMgKi8s
CkBAIC0zNDM5OCw3ICszNDM2Myw2IEBACiAJCQkJMUM3M0E3MTMyMTg1NzU3RTAwNENDRUE1IC8q
IFRleHRVbmRlcmxpbmVPZmZzZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5RkFGNEI2MTk1QUIw
ODkwMEE1MjJEQyAvKiBUZXh0VW5kb0luc2VydGlvbk1hcmt1cE1hYy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDk4NzcwRjExMjQyQzUzNTAwMjIyNkJBIC8qIFRleHR1cmUuaCBpbiBIZWFkZXJzICov
LAotCQkJCUNEOUQ4Mjc2MUM3QUU1MzUwMDZGRjA2NiAvKiBUZXh0dXJlQ2FjaGVDVi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNkZCMTFCNUMyMTc4M0ZEMDAwRTJBNTc0IC8qIFRleHRVdGlsLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQ0U2NThGRjBFQTkyNDhBMDA3RTQ1MzMgLyogVGhlbWUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTMxMEQ3MTk2MUIzMzVDOUUwMDlDN0I3MyAvKiBUaGVtZUNvY29hLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FO
R0xFSW5zdGFuY2VkQXJyYXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xF
SW5zdGFuY2VkQXJyYXlzLmNwcAppbmRleCA4MGIyYTcyZTFmNWQ1ZjM4MWFmNWJjYzFjMDE2NmZl
ZjlkNzRmY2EwLi4yOTZhZjNlMDNhYjdhMmM2ZDAxYzJiNDI0OWVlODdkZjcxNDU0MmRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMu
Y3BwCkBAIC01NSwxNCArNTUsNyBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBBTkdM
RUluc3RhbmNlZEFycmF5czo6Z2V0TmFtZSgpIGNvbnN0CiAKIGJvb2wgQU5HTEVJbnN0YW5jZWRB
cnJheXM6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogewot
I2lmIFBMQVRGT1JNKENPQ09BKQotI2lmIFVTRShBTkdMRSkKLSAgICByZXR1cm4gY29udGV4dC5n
cmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FOR0xFX2lu
c3RhbmNlZF9hcnJheXMiKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwotICAg
IHJldHVybiB0cnVlOwotI2VuZGlmCi0jZWxpZiBQTEFURk9STShHVEspCisjaWYgVVNFKEFOR0xF
KSB8fCBQTEFURk9STShHVEspCiAgICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0wo
KS0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIik7
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaAppbmRleCA2YmM2ZWI0YWYz
MTZjZWJlMDZjMDI3NzkxM2I2OGYxYjQ4MjlhZjU1Li41MDNjNTBkNzcyNDQyOTc3MGNhOGFkZWU1
ODZlNTdhY2M1ZjcxZGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oCkBAIC0xMjEsNyArMTIxLDcgQEAgcHVibGljOgogICAg
IHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEFycmF5QnVmZmVyVmlldyYgc3JjRGF0
YSk7CiAgICAgLy8gV2ViR0wgMi4wIGVudHJ5IHBvaW50czoKICAgICB2b2lkIGNvbXByZXNzZWRU
ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCk7
Ci0gICAgdm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgQXJyYXlCdWZmZXJWaWV3JiBz
cmNEYXRhLCBHTHVpbnQgc3JjT2Zmc2V0LCBHTHVpbnQgc3JjTGVuZ3RoT3ZlcnJpZGUpOworICAg
IHZvaWQgY29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEFycmF5QnVmZmVyVmlldyYgc3JjRGF0
YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGhPdmVycmlkZSk7CiAKICAg
ICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludDY0IG9mZnNldCk7CiAgICAg
dm9pZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51
bSBmb3JtYXQsIEFycmF5QnVmZmVyVmlldyYgc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGhPdmVycmlkZSk7CkBAIC0xNTYsMjYgKzE1NiwyNiBAQCBwdWJsaWM6
CiAgICAgdXNpbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTJmdjsKICAgICB1
c2luZyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2Z2OwogICAgIHVzaW5nIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm00ZnY7Ci0gICAgdm9pZCB1bmlmb3JtMWZ2
KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3QgZGF0YSwgR0x1aW50
IHNyY09mZnNldCwgR0x1aW50IHNyY0xlbmd0aCk7Ci0gICAgdm9pZCB1bmlmb3JtMmZ2KFdlYkdM
VW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3QgZGF0YSwgR0x1aW50IHNyY09m
ZnNldCwgR0x1aW50IHNyY0xlbmd0aCk7Ci0gICAgdm9pZCB1bmlmb3JtM2Z2KFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3QgZGF0YSwgR0x1aW50IHNyY09mZnNldCwg
R0x1aW50IHNyY0xlbmd0aCk7Ci0gICAgdm9pZCB1bmlmb3JtNGZ2KFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3QgZGF0YSwgR0x1aW50IHNyY09mZnNldCwgR0x1aW50
IHNyY0xlbmd0aCk7CisgICAgdm9pZCB1bmlmb3JtMWZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwg
RmxvYXQzMkxpc3QgZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
OworICAgIHZvaWQgdW5pZm9ybTJmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEZsb2F0MzJMaXN0
IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKTsKKyAgICB2b2lk
IHVuaWZvcm0zZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBGbG9hdDMyTGlzdCBkYXRhLCBHQ0dM
dWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7CisgICAgdm9pZCB1bmlmb3JtNGZ2
KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgRmxvYXQzMkxpc3QgZGF0YSwgR0NHTHVpbnQgc3JjT2Zm
c2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpOwogCiAgICAgdXNpbmcgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6dW5pZm9ybTFpdjsKICAgICB1c2luZyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojp1bmlmb3JtMml2OwogICAgIHVzaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZv
cm0zaXY7CiAgICAgdXNpbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRpdjsK
LSAgICB2b2lkIHVuaWZvcm0xaXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQz
Mkxpc3QgZGF0YSwgR0x1aW50IHNyY09mZnNldCwgR0x1aW50IHNyY0xlbmd0aCk7Ci0gICAgdm9p
ZCB1bmlmb3JtMml2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0IGRh
dGEsIEdMdWludCBzcmNPZmZzZXQsIEdMdWludCBzcmNMZW5ndGgpOwotICAgIHZvaWQgdW5pZm9y
bTNpdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMyTGlzdCBkYXRhLCBHTHVp
bnQgc3JjT2Zmc2V0LCBHTHVpbnQgc3JjTGVuZ3RoKTsKLSAgICB2b2lkIHVuaWZvcm00aXYoV2Vi
R0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkxpc3QgZGF0YSwgR0x1aW50IHNyY09m
ZnNldCwgR0x1aW50IHNyY0xlbmd0aCk7CisgICAgdm9pZCB1bmlmb3JtMWl2KFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiwgSW50MzJMaXN0IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQg
c3JjTGVuZ3RoKTsKKyAgICB2b2lkIHVuaWZvcm0yaXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBJ
bnQzMkxpc3QgZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpOwor
ICAgIHZvaWQgdW5pZm9ybTNpdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEludDMyTGlzdCBkYXRh
LCBHQ0dMdWludCBzcmNPZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7CisgICAgdm9pZCB1bmlm
b3JtNGl2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgSW50MzJMaXN0IGRhdGEsIEdDR0x1aW50IHNy
Y09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKTsKIAogICAgIHVzaW5nIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnVuaWZvcm1NYXRyaXgyZnY7CiAgICAgdXNpbmcgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6dW5pZm9ybU1hdHJpeDNmdjsKICAgICB1c2luZyBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp1bmlmb3JtTWF0cml4NGZ2OwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgRmxv
YXQzMkxpc3QgZGF0YSwgR0x1aW50IHNyY09mZnNldCwgR0x1aW50IHNyY0xlbmd0aCk7Ci0gICAg
dm9pZCB1bmlmb3JtTWF0cml4M2Z2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NH
TGJvb2xlYW4gdHJhbnNwb3NlLCBGbG9hdDMyTGlzdCBkYXRhLCBHTHVpbnQgc3JjT2Zmc2V0LCBH
THVpbnQgc3JjTGVuZ3RoKTsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoV2ViR0xVbmlmb3Jt
TG9jYXRpb24qIGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0IGRh
dGEsIEdMdWludCBzcmNPZmZzZXQsIEdMdWludCBzcmNMZW5ndGgpOworICAgIHZvaWQgdW5pZm9y
bU1hdHJpeDJmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRyYW5zcG9zZSwg
RmxvYXQzMkxpc3QgZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgp
OworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xi
b29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkxpc3QgZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBH
Q0dMdWludCBzcmNMZW5ndGgpOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihXZWJHTFVuaWZv
cm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkxpc3QgZGF0YSwgR0NH
THVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpOwogCiAgICAgLy8gV3JpdGluZyB0
byB0aGUgZHJhd2luZyBidWZmZXIKICAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVp
bnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpOwpAQCAtMjUyLDcgKzI1Miw3IEBAIHB1YmxpYzoK
ICAgICAvLyBNdXN0IG92ZXJyaWRlIHRoZSBXZWJHTCAxLjAgc2lnbmF0dXJlIGluIG9yZGVyIHRv
IGFkZCBleHRyYSB2YWxpZGF0aW9uLgogICAgIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEFycmF5QnVmZmVyVmlldyYgcGl4ZWxzKSBvdmVycmlkZTsKICAg
ICB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50
cHRyIG9mZnNldCk7Ci0gICAgdm9pZCByZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgQXJyYXlCdWZmZXJWaWV3JiBkc3REYXRhLCBHTHVpbnQgZHN0T2Zmc2V0KTsKKyAg
ICB2b2lkIHJlYWRQaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBBcnJheUJ1
ZmZlclZpZXcmIGRzdERhdGEsIEdDR0x1aW50IGRzdE9mZnNldCk7CiAKICAgICBHQ0dMdWludCBt
YXhUcmFuc2Zvcm1GZWVkYmFja1NlcGFyYXRlQXR0cmlicygpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
Y3BwCmluZGV4IGVlYzUzOTY4ZDJjZjhmMDA0NjcxOGUyZDAzMDkyZDU3NzAyYzhhMTIuLjUxMzVj
NTVjOGRhMzYyNjVmYmRmY2EwYWQ4NGFiZDMwNDhmN2EzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBA
IC03MjIsMTMgKzcyMiw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUoQ2FuCiAgICAgaWYgKGV4dGVu
c2lvbnMuc3VwcG9ydHMoIkdMX0VYVF9kZWJ1Z19tYXJrZXIiX3MpKQogICAgICAgICBleHRlbnNp
b25zLnB1c2hHcm91cE1hcmtlckVYVCgiV2ViR0xSZW5kZXJpbmdDb250ZXh0Il9zKTsKIAotI2lm
IEVOQUJMRShXRUJHTDIpICYmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShBTkdMRSkKLSAgICAvLyBn
bFRleFN0b3JhZ2UoKSB3YXMgb25seSBhZGRlZCB0byBDb3JlIGluIE9wZW5HTCA0LjIuCi0gICAg
Ly8gSG93ZXZlciwgYWNjb3JkaW5nIHRvIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9vcGVu
Z2wvY2FwYWJpbGl0aWVzLyBhbGwgQXBwbGUgR1BVcyBzdXBwb3J0IHRoaXMgZXh0ZW5zaW9uLgot
ICAgIGlmIChhdHRyaWJ1dGVzLmlzV2ViR0wyICYmICFleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9B
UkJfdGV4dHVyZV9zdG9yYWdlIikpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotI2VuZGlmCi0K
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4gcmVuZGVyaW5n
Q29udGV4dDsKICNpZiBFTkFCTEUoV0VCR0wyKQogICAgIGlmICh0eXBlID09ICJ3ZWJnbDIiKQpA
QCAtNDM0OSw3ICs0MzQyLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZWFk
UGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgKICAgICB2b2lkKiBk
YXRhID0gcGl4ZWxzLmJhc2VBZGRyZXNzKCk7CiAKICNpZiBVU0UoQU5HTEUpCi0gICAgICAgIEdM
c2l6ZWkgbGVuZ3RoLCBjb2x1bW5zLCByb3dzOworICAgICAgICBHQ0dMc2l6ZWkgbGVuZ3RoLCBj
b2x1bW5zLCByb3dzOwogICAgICAgICBtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwog
ICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZWFkblBpeGVsc1JvYnVzdEFOR0xF
KHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ5dGVMZW5ndGgoKSwg
Jmxlbmd0aCwgJmNvbHVtbnMsICZyb3dzLCBkYXRhLCBmYWxzZSk7CiAjZWxzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3Bw
CmluZGV4IDhkMGVhYjljY2UwM2VhNmZiNDkxZDg3OTM3Y2U4NTQ0ODMzMDFjMzAuLjE2Y2MxMGM3
N2UyZjY2ZGUwYWE3OTgwMzliNzgzNjRlYTk2ZGY4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTE4NCwy
MyArMTg0LDYgQEAgdWludDhfdCBHcmFwaGljc0NvbnRleHRHTDo6Z2V0Q2hhbm5lbEJpdHNCeUZv
cm1hdChHQ0dMZW51bSBmb3JtYXQpCiAgICAgfQogfQogCi0jaWYgIVBMQVRGT1JNKENPQ09BKSAm
JiBVU0UoQU5HTEUpCi1HQ0dMZW51bSBHcmFwaGljc0NvbnRleHRHTDo6SU9TdXJmYWNlVGV4dHVy
ZVRhcmdldCgpCi17Ci0gICAgcmV0dXJuIFRFWFRVUkVfMkQ7Ci19Ci0KLUdDR0xlbnVtIEdyYXBo
aWNzQ29udGV4dEdMOjpJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0UXVlcnkoKQotewotICAgIHJldHVy
biBURVhUVVJFX0JJTkRJTkdfMkQ7Ci19Ci0KLUdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0w6OkVH
TElPU3VyZmFjZVRleHR1cmVUYXJnZXQoKQotewotICAgIHJldHVybiAweDMwNUY7IC8vIEVHTF9U
RVhUVVJFXzJECi19Ci0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggZmEyNDFiYmU4YzNmMTcyMzA1YjFmNDgwYmEy
ZjM5OGNjZDcyMTMyZC4uZDUzODI0MzY1MGE5MGJiZGFhN2FlYjZlZGVjMjJkMmMwNGI3MTQ5MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5oCkBAIC03NzcsMTQgKzc3Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgRE9NU291cmNl
Tm9uZSwKICAgICB9OwogCi0jaWYgVVNFKEFOR0xFKQotICAgIC8vIFRoZXNlIGNvbnN0YW50cyBh
cmUgcmVkZWZpbmVkIGhlcmUgZnJvbSBBTkdMRSdzIE9wZW5HTCBFUyBoZWFkZXJzIHRvCi0gICAg
Ly8gcHJvdmlkZSBhIHNpbmdsZSBwbGFjZSB3aGVyZSBtdWx0aXBsZSBwb3J0aW9ucyBvZiBwbGF0
Zm9ybSBjb2RlIGNhbgotICAgIC8vIHJlZmVyZW5jZSB0aGVtLgotICAgIHN0YXRpYyBHQ0dMZW51
bSBJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0KCk7Ci0gICAgc3RhdGljIEdDR0xlbnVtIElPU3VyZmFj
ZVRleHR1cmVUYXJnZXRRdWVyeSgpOwotICAgIHN0YXRpYyBHQ0dMaW50IEVHTElPU3VyZmFjZVRl
eHR1cmVUYXJnZXQoKTsKLSNlbmRpZiAvLyBVU0UoQU5HTEUpCisKIAogICAgIHZpcnR1YWwgUGxh
dGZvcm1HcmFwaGljc0NvbnRleHRHTCBwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgUGxhdGZvcm1HTE9iamVjdCBwbGF0Zm9ybVRleHR1cmUoKSBjb25z
dCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDcyZWVlYjMyMDdk
MWNhMzY0OTE4YTJmOTQ5OTVkMzUyMjNhMzMyNTguLjU1NTU2ZDQ2MDE3Y2MxMTIzMzE5YWMyOTE5
MGIwZGJlMzMyNDRhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCkBAIC0y
OSw5ICsyOSw2IEBACiAjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfR0wpICYmIFVTRShBTkdM
RSkKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTC5oIgogCi0jaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTSU9TLmgiCi0jZW5kaWYK
ICNpbmNsdWRlICJFeHRlbnNpb25zR0xBTkdMRS5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgi
CiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCkBAIC0yMzEsMTAgKzIyOCwxMCBAQCBib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogICAg
ICAgICBnbDo6QmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZTJEQmluZGluZyk7CiAg
ICAgICAgIC8vIEF0dGFjaCBtX3RleHR1cmUgdG8gbV9wcmVzZXJ2ZURyYXdpbmdCdWZmZXJGQk8g
Zm9yIGxhdGVyIGJsaXR0aW5nLgogICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1F
QlVGRkVSLCBtX3ByZXNlcnZlRHJhd2luZ0J1ZmZlckZCTyk7Ci0gICAgICAgIGdsOjpGcmFtZWJ1
ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdyYXBo
aWNzQ29udGV4dEdMOjpJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0KCksIG1fdGV4dHVyZSwgMCk7Cisg
ICAgICAgIGdsOjpGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1Jf
QVRUQUNITUVOVDAsIElPU3VyZmFjZVRleHR1cmVUYXJnZXQoKSwgbV90ZXh0dXJlLCAwKTsKICAg
ICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbV9mYm8pOwogICAgIH0g
ZWxzZQotICAgICAgICBnbDo6RnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdM
X0NPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHRHTDo6SU9TdXJmYWNlVGV4dHVyZVRh
cmdldCgpLCBtX3RleHR1cmUsIDApOworICAgICAgICBnbDo6RnJhbWVidWZmZXJUZXh0dXJlMkQo
R0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBJT1N1cmZhY2VUZXh0dXJlVGFy
Z2V0KCksIG1fdGV4dHVyZSwgMCk7CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgZ2w6OkJpbmRU
ZXh0dXJlKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFLCBtX3RleHR1cmUpOwogICAgIGdsOjpU
ZXhJbWFnZTJEKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFLCAwLCBtX2ludGVybmFsQ29sb3JG
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGNvbG9yRm9ybWF0LCBHTF9VTlNJR05FRF9CWVRFLCAw
KTsKQEAgLTQ4NiwxMSArNDgzLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFp
bnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqIGltYWdlQnUKICAgICB9CiAK
ICAgICBwYWludFRvQ2FudmFzKHBpeGVscy5nZXQoKSwgSW50U2l6ZShtX2N1cnJlbnRXaWR0aCwg
bV9jdXJyZW50SGVpZ2h0KSwgaW1hZ2VCdWZmZXItPmJhY2tlbmRTaXplKCksIGltYWdlQnVmZmVy
LT5jb250ZXh0KCkpOwotCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShPUEVOR0xfRVMpCi0g
ICAgLy8gRklYTUU6IHdvcmsgb24gaU9TIGludGVncmF0aW9uLgotICAgIHByZXNlbnRSZW5kZXJi
dWZmZXIoKTsKLSNlbmRpZgogfQogCiBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWlu
dENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KaW5kZXggNTlmNzk4ZjlhN2FiMjk4NDZhNjUyMTdkNTk1Y2M4MDZmNTRjN2UzYS4uYWRi
ZDVlMjUxY2JiOGQ1N2VkMDIwODhjMWY0ODlhMmJiYzU2YjgzNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCkBAIC01OSw3ICs1OSw2IEBACiAjaW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIKICNpbXBv
cnQgIlRleHRFbmNvZGluZy5oIgogI2ltcG9ydCAiVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uaCIK
LSNpbXBvcnQgIlRleHR1cmVDYWNoZUNWLmgiCiAjaW1wb3J0ICJWaWRlb0xheWVyTWFuYWdlck9i
akMuaCIKICNpbXBvcnQgIlZpZGVvVGV4dHVyZUNvcGllckNWLmgiCiAjaW1wb3J0ICJWaWRlb1Ry
YWNrUHJpdmF0ZUFWRk9iakMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggOGNlM2I3
YjQwNWRmZGY5NzAyZjJmOTUxOGFkNjlkZDg1YmRmNzc3OS4uZTdiZjdhNzY3MzMwYTY3MjdmMDYz
MjE2MTRkZTFiMGEzODA3ZjlhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTU1LDcg
KzU1LDYgQEAgY2xhc3MgRWZmZWN0aXZlUmF0ZUNoYW5nZWRMaXN0ZW5lcjsKIGNsYXNzIE1lZGlh
U291cmNlUHJpdmF0ZUFWRk9iakM7CiBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOwogY2xh
c3MgUGxhdGZvcm1DbG9ja0NNOwotY2xhc3MgVGV4dHVyZUNhY2hlQ1Y7CiBjbGFzcyBWaWRlb0xh
eWVyTWFuYWdlck9iakM7CiBjbGFzcyBWaWRlb1RleHR1cmVDb3BpZXJDVjsKIGNsYXNzIFdlYkNv
cmVEZWNvbXByZXNzaW9uU2Vzc2lvbjsKQEAgLTMyNCw3ICszMjMsNiBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9oYXNBdmFpbGFibGVWaWRlb0ZyYW1lIHsgZmFsc2UgfTsKICAgICBib29sIG1fYWxs
UmVuZGVyZXJzSGF2ZUF2YWlsYWJsZVNhbXBsZXMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV92aXNp
YmxlIHsgZmFsc2UgfTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZUNhY2hlQ1Y+IG1fdGV4
dHVyZUNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb1RleHR1cmVDb3BpZXJDVj4gbV92
aWRlb1RleHR1cmVDb3BpZXI7CiAgICAgUmV0YWluUHRyPENWT3BlbkdMVGV4dHVyZVJlZj4gbV9s
YXN0VGV4dHVyZTsKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDZmZjgzNGIwNjdmMjMwZWY3N2M2MjRhY2JmMjdmMmI0
YWExMzA0MTAuLjkyNWJmNGUxZjkwYjU0YzQyODY2YzI2NTgwNTljNjExYWNjMWJiMGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTM4LDcgKzM4LDYgQEAKICNpbXBvcnQgIk1lZGlh
U291cmNlUHJpdmF0ZUNsaWVudC5oIgogI2ltcG9ydCAiUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5o
IgogI2ltcG9ydCAiVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uaCIKLSNpbXBvcnQgIlRleHR1cmVD
YWNoZUNWLmgiCiAjaW1wb3J0ICJWaWRlb0xheWVyTWFuYWdlck9iakMuaCIKICNpbXBvcnQgIlZp
ZGVvVGV4dHVyZUNvcGllckNWLmgiCiAjaW1wb3J0ICJXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Np
b24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCmluZGV4IDM4
ZTdmOGI3OGQ1Nzc0ZWIyMzhmM2M0MzBiM2QzYzc1MjIwNWIxYTUuLmIxMjQ3ODc1OGMyZjBjYTg0
MWVkZjNjMTI4OGIwODhjMWQ2Y2Y4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb2NvYS5tbQpAQCAtMjgsMzggKzI4LDE4IEBACiAjaWYgRU5BQkxFKEdSQVBISUNTX0NP
TlRFWFRfR0wpCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgogCi0jaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVVTRShBTkdMRSkKLSNpbXBvcnQgIkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMRVNJT1MuaCIKLSNlbmRpZgotCi0jaW1wb3J0ICJDYW52YXNSZW5kZXJpbmdDb250
ZXh0LmgiCi0jaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbXBvcnQgIkV4dGVuc2lvbnNH
TEFOR0xFLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaCIKLSNp
bXBvcnQgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW1wb3J0ICJIb3N0V2luZG93LmgiCi0jaW1w
b3J0ICJJbWFnZUJ1ZmZlci5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiT3BlbkdM
U29mdExpbmtDb2NvYS5oIgorI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCisj
aW1wb3J0ICJXZWJDb3JlVGhyZWFkLmgiCiAjaW1wb3J0ICJXZWJHTExheWVyLmgiCi0jaW1wb3J0
ICJXZWJHTE9iamVjdC5oIgotI2ltcG9ydCAiV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgog
I2ltcG9ydCA8Q29yZUdyYXBoaWNzL0NHQml0bWFwQ29udGV4dC5oPgotI2ltcG9ydCA8c3lzL3N5
c2N0bC5oPgotI2ltcG9ydCA8c3lzZXhpdHMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNl
cHRpb25zLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKLSNpZiBVU0UoT1BFTkdM
X0VTKQotI2ltcG9ydCA8T3BlbkdMRVMvRUFHTC5oPgotI2ltcG9ydCA8T3BlbkdMRVMvRUFHTERy
YXdhYmxlLmg+Ci0jaW1wb3J0IDxPcGVuR0xFUy9FQUdMSU9TdXJmYWNlLmg+Ci0jaW1wb3J0IDxP
cGVuR0xFUy9FUzIvZ2xleHQuaD4KLSNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgot
I2ltcG9ydCA8cGFsL3NwaS9pb3MvT3BlbkdMRVNTUEkuaD4KLSNlbGlmIFVTRShPUEVOR0wpCi0j
aW1wb3J0IDxJT0tpdC9JT0tpdExpYi5oPgotI2ltcG9ydCA8T3BlbkdML2dsLmg+Ci0jZWxpZiBV
U0UoQU5HTEUpCiAjZGVmaW5lIEVHTF9FR0xfUFJPVE9UWVBFUyAwCiAvLyBTa2lwIHRoZSBpbmNs
dXNpb24gb2YgQU5HTEUncyBleHBsaWNpdCBjb250ZXh0IGVudHJ5IHBvaW50cyBmb3Igbm93Lgog
I2RlZmluZSBHTF9BTkdMRV9leHBsaWNpdF9jb250ZXh0CkBAIC03NCwyOSArNTQsMTYgQEAgdHlw
ZWRlZiB2b2lkKiBHTGVnbENvbnRleHQ7CiAjaW1wb3J0IDxBTkdMRS9lbnRyeV9wb2ludHNfZ2xl
c19leHRfYXV0b2dlbi5oPgogI2ltcG9ydCA8QU5HTEUvZ2wyZXh0Lmg+CiAjaW1wb3J0IDxBTkdM
RS9nbDJleHRfYW5nbGUuaD4KLSNlbmRpZgotCi0jaWYgVVNFKE9QRU5HTF9FUykgfHwgVVNFKE9Q
RU5HTCkKLSNpbXBvcnQgIkV4dGVuc2lvbnNHTE9wZW5HTC5oIgotI2VsaWYgVVNFKEFOR0xFKQot
I2ltcG9ydCAiRXh0ZW5zaW9uc0dMQU5HTEUuaCIKLSNpbXBvcnQgIlJ1bnRpbWVBcHBsaWNhdGlv
bkNoZWNrcy5oIgotI2ltcG9ydCAiV2ViQ29yZVRocmVhZC5oIgotI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShNQUMpCiAjaW1wb3J0ICJTY3JlZW5Qcm9wZXJ0aWVzLmgiCi0jaWYgVVNFKE9QRU5HTCkg
fHwgVVNFKEFOR0xFKQogI2ltcG9ydCA8T3BlbkdML0NHTFJlbmRlcmVycy5oPgogI2VuZGlmCi0j
ZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgewogCi0jaWYgVVNFKEFO
R0xFKQotCiAjaWYgQVNTRVJUX0VOQUJMRUQKIC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBoYXZlIHZv
bGF0aWxlIGNvbnRleHQgZXh0ZW5zaW9uIGZvciB0aGUgcGFydGljdWxhciBBUEkgb3IKIC8vIGlm
IHRoZSBwYXJ0aWN1bGFyIEFQSSBpcyBub3QgdXNlZC4KQEAgLTE1MywyMyArMTIwLDExIEBAIEVH
TERpc3BsYXkgSW5pdGlhbGl6ZUVHTERpc3BsYXkoKQogICAgIH0KICAgICByZXR1cm4gZGlzcGxh
eTsKIH0KLSNlbmRpZgotfQogCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgc3RhdHVzQ2hlY2tUaHJl
c2hvbGQgPSA1OwotCi0vLyBGSVhNRTogVGhpcyBjbGFzcyBpcyBjdXJyZW50bHkgZW1wdHkgb24g
TWFjLCBidXQgd2lsbCBnZXQgcG9wdWxhdGVkIGFzCi0vLyB0aGUgcmVzdHJ1Y3R1cmluZyBpbiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY5MDMgaXMgZG9uZQotY2xh
c3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xQcml2YXRlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKLXB1YmxpYzoKLSAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTFByaXZhdGUoR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wqKSB7IH0KLSAgICAKLSAgICB+R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xQcml2YXRlKCkgeyB9Ci19OworY29uc3QgdW5zaWduZWQgc3RhdHVzQ2hlY2tUaHJlc2hv
bGQgPSA1OwogCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKLXN0
YXRpYyBib29sIGlzaU9TQXBwT25NYWMoKQorYm9vbCBpc2lPU0FwcE9uTWFjKCkKIHsKICNpZiBQ
TEFURk9STShNQUNDQVRBTFlTVCkgJiYgQ1BVKEFSTTY0KQogICAgIHN0YXRpYyBib29sIGlzaU9T
QXBwT25NYWMgPSBmYWxzZTsKQEAgLTE4NCw2ICsxMzksOCBAQCBzdGF0aWMgYm9vbCBpc2lPU0Fw
cE9uTWFjKCkKIH0KICNlbmRpZgogCit9CisKIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTE9wZW5H
TD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZShHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4dEdMOjpE
ZXN0aW5hdGlvbiBkZXN0aW5hdGlvbikKIHsKICAgICAvLyBUaGlzIGltcGxlbWVudGF0aW9uIGRv
ZXNuJ3QgY3VycmVudGx5IHN1cHBvcnQgcmVuZGVyaW5nIGRpcmVjdGx5IHRvIHRoZSBIb3N0V2lu
ZG93LgpAQCAtMjE1LDcgKzE3Miw3IEBAIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZVNoYXJlZChHcmFwaGljc0NvbnRlCiAgICAgcmV0
dXJuIGNvbnRleHQ7CiB9CiAKLSNpZiBQTEFURk9STShNQUMpICYmIChVU0UoT1BFTkdMKSB8fCBV
U0UoQU5HTEUpKSAvLyBGSVhNRTogVGhpcyBwcm9iYWJseSBzaG91bGQgYmUganVzdCAoVVNFKE9Q
RU5HTCkgfHwgVVNFKEFOR0xFKSkgLSBzZWUgPHJkYXI6Ly81MzA2Mjc5ND4uCisjaWYgUExBVEZP
Uk0oTUFDKSAvLyBGSVhNRTogVGhpcyBwcm9iYWJseSBzaG91bGQgYmUganVzdCBlbmFibGVkIC0g
c2VlIDxyZGFyOi8vNTMwNjI3OTQ+LgogCiBzdGF0aWMgdm9pZCBzZXRHUFVCeVJlZ2lzdHJ5SUQo
Q0dMQ29udGV4dE9iaiBjb250ZXh0T2JqLCBDR0xQaXhlbEZvcm1hdE9iaiBwaXhlbEZvcm1hdE9i
aiwgSU9SZWdpc3RyeUdQVUlEIHByZWZlcnJlZEdQVUlEKQogewpAQCAtMjYzLDcgKzIyMCw3IEBA
IHN0YXRpYyB2b2lkIHNldEdQVUJ5UmVnaXN0cnlJRChDR0xDb250ZXh0T2JqIGNvbnRleHRPYmos
IENHTFBpeGVsRm9ybWF0T2JqIHBpeGVsCiAgICAgfQogfQogCi0jZW5kaWYgLy8gUExBVEZPUk0o
TUFDKSAmJiAoVVNFKE9QRU5HTCkgfHwgVVNFKEFOR0xFKSkKKyNlbmRpZiAvLyBQTEFURk9STShN
QUMpCiAKIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTChH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cs
IEdyYXBoaWNzQ29udGV4dEdMOjpEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiwgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wqIHNoYXJlZENvbnRleHQpCiAgICAgOiBHcmFwaGljc0NvbnRleHRHTChhdHRy
cywgZGVzdGluYXRpb24sIHNoYXJlZENvbnRleHQpCkBAIC0yNzYsMTExICsyMzMsNiBAQCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzIGF0dAogICAgIG1fcG93ZXJQcmVmZXJlbmNlVXNlZEZvckNyZWF0aW9u
ID0gR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkRlZmF1bHQ7CiAjZW5kaWYKIAot
I2lmICFVU0UoQU5HTEUpCi0jaWYgVVNFKE9QRU5HTF9FUykKLSAgICBpZiAobV9pc0ZvcldlYkdM
MikKLSAgICAgICAgbV9jb21waWxlciA9IEFOR0xFV2ViS2l0QnJpZGdlKFNIX0VTU0xfT1VUUFVU
LCBTSF9XRUJHTDJfU1BFQyk7Ci0gICAgZWxzZQotICAgICAgICBtX2NvbXBpbGVyID0gQU5HTEVX
ZWJLaXRCcmlkZ2UoU0hfRVNTTF9PVVRQVVQpOwotI2Vsc2UKLSAgICBpZiAobV9pc0ZvcldlYkdM
MikKLSAgICAgICAgbV9jb21waWxlciA9IEFOR0xFV2ViS2l0QnJpZGdlKFNIX0dMU0xfNDEwX0NP
UkVfT1VUUFVULCBTSF9XRUJHTDJfU1BFQyk7Ci0jZW5kaWYgLy8gVVNFKE9QRU5HTF9FUykKLSNl
bmRpZiAvLyAhVVNFKEFOR0xFKQotCi0jaWYgVVNFKE9QRU5HTF9FUykKLSAgICBVTlVTRURfUEFS
QU0oaG9zdFdpbmRvdyk7Ci0gICAgRUFHTFJlbmRlcmluZ0FQSSBhcGkgPSBtX2lzRm9yV2ViR0wy
ID8ga0VBR0xSZW5kZXJpbmdBUElPcGVuR0xFUzMgOiBrRUFHTFJlbmRlcmluZ0FQSU9wZW5HTEVT
MjsKLSAgICBFQUdMQ29udGV4dCAqY29udGV4dE9iajsKLSAgICBpZiAoIXNoYXJlZENvbnRleHQp
Ci0gICAgICAgIGNvbnRleHRPYmogPSBbW0VBR0xDb250ZXh0IGFsbG9jXSBpbml0V2l0aEFQSTph
cGldOwotICAgIGVsc2UKLSAgICAgICAgY29udGV4dE9iaiA9IFtbRUFHTENvbnRleHQgYWxsb2Nd
IGluaXRXaXRoQVBJOmFwaSBzaGFyZWdyb3VwOnN0YXRpY19jYXN0PEVBR0xDb250ZXh0ICo+KHNo
YXJlZENvbnRleHQtPm1fY29udGV4dE9iaikuc2hhcmVncm91cF07Ci0KLSAgICBtX2NvbnRleHRP
YmogPSBzdGF0aWNfY2FzdDx2b2lkICo+KGNvbnRleHRPYmopOwotCi0gICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7Ci0KLSAgICBpZiAobV9pc0ZvcldlYkdMMikKLSAgICAgICAgOjpnbEVuYWJsZShH
cmFwaGljc0NvbnRleHRHTDo6UFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5ERVgpOwotI2VsaWYg
VVNFKE9QRU5HTCkKLQotICAgIGJvb2wgdXNlTXVsdGlzYW1wbGluZyA9IGF0dHJzLmFudGlhbGlh
czsKLQotICAgIFZlY3RvcjxDR0xQaXhlbEZvcm1hdEF0dHJpYnV0ZT4gYXR0cmliczsKLSAgICBD
R0xQaXhlbEZvcm1hdE9iaiBwaXhlbEZvcm1hdE9iaiA9IDA7Ci0gICAgR0xpbnQgbnVtUGl4ZWxG
b3JtYXRzID0gMDsKLQotICAgIGF0dHJpYnMuYXBwZW5kKGtDR0xQRkFBY2NlbGVyYXRlZCk7Ci0g
ICAgYXR0cmlicy5hcHBlbmQoa0NHTFBGQUNvbG9yU2l6ZSk7Ci0gICAgYXR0cmlicy5hcHBlbmQo
c3RhdGljX2Nhc3Q8Q0dMUGl4ZWxGb3JtYXRBdHRyaWJ1dGU+KDMyKSk7Ci0gICAgYXR0cmlicy5h
cHBlbmQoa0NHTFBGQURlcHRoU2l6ZSk7Ci0gICAgYXR0cmlicy5hcHBlbmQoc3RhdGljX2Nhc3Q8
Q0dMUGl4ZWxGb3JtYXRBdHRyaWJ1dGU+KDMyKSk7Ci0KLSAgICAvLyBUaGlzIGF0dHJpYnV0ZSwg
d2hpbGUgbWVudGlvbmluZyBvZmZsaW5lIHJlbmRlcmVycywgaXMgYWN0dWFsbHkKLSAgICAvLyBh
bGxvd2luZyB1cyB0byByZXF1ZXN0IHRoZSBpbnRlZ3JhdGVkIGdyYXBoaWNzIG9uIGEgZHVhbCBH
UFUKLSAgICAvLyBzeXN0ZW0sIGFuZCBub3QgZm9yY2UgdGhlIGRpc2NyZXRlIEdQVS4KLSAgICAv
LyBTZWUgaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2xpYnJhcnkvbWFjL3RlY2hub3Rlcy90
bjIyMjkvX2luZGV4Lmh0bWwKLSAgICBpZiAoYWxsb3dPZmZsaW5lUmVuZGVyZXJzKCkpCi0gICAg
ICAgIGF0dHJpYnMuYXBwZW5kKGtDR0xQRkFBbGxvd09mZmxpbmVSZW5kZXJlcnMpOwotCi0gICAg
aWYgKHVzZU11bHRpc2FtcGxpbmcpIHsKLSAgICAgICAgYXR0cmlicy5hcHBlbmQoa0NHTFBGQU11
bHRpc2FtcGxlKTsKLSAgICAgICAgYXR0cmlicy5hcHBlbmQoa0NHTFBGQVNhbXBsZUJ1ZmZlcnMp
OwotICAgICAgICBhdHRyaWJzLmFwcGVuZChzdGF0aWNfY2FzdDxDR0xQaXhlbEZvcm1hdEF0dHJp
YnV0ZT4oMSkpOwotICAgICAgICBhdHRyaWJzLmFwcGVuZChrQ0dMUEZBU2FtcGxlcyk7Ci0gICAg
ICAgIGF0dHJpYnMuYXBwZW5kKHN0YXRpY19jYXN0PENHTFBpeGVsRm9ybWF0QXR0cmlidXRlPig0
KSk7Ci0gICAgfQotCi0gICAgaWYgKG1faXNGb3JXZWJHTDIpIHsKLSAgICAgICAgLy8gRklYTUU6
IEluc3RlYWQgb2YgYmFja2luZyBhIFdlYkdMMiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCB3aXRo
IGEgT3BlbkdMIDQgY29udGV4dCwgd2Ugc2hvdWxkIGluc3RlYWQgYmFjayBpdCB3aXRoIEFOR0xF
LgotICAgICAgICAvLyBVc2UgYW4gT3BlbkdMIDQgY29udGV4dCBmb3Igbm93IHVudGlsIHRoZSBB
TkdMRSBiYWNrZW5kIGlzIHJlYWR5LgotICAgICAgICBhdHRyaWJzLmFwcGVuZChrQ0dMUEZBT3Bl
bkdMUHJvZmlsZSk7Ci0gICAgICAgIGF0dHJpYnMuYXBwZW5kKHN0YXRpY19jYXN0PENHTFBpeGVs
Rm9ybWF0QXR0cmlidXRlPihrQ0dMT0dMUFZlcnNpb25fR0w0X0NvcmUpKTsKLSAgICB9Ci0KLSAg
ICBhdHRyaWJzLmFwcGVuZChzdGF0aWNfY2FzdDxDR0xQaXhlbEZvcm1hdEF0dHJpYnV0ZT4oMCkp
OwotCi0gICAgQ0dMQ2hvb3NlUGl4ZWxGb3JtYXQoYXR0cmlicy5kYXRhKCksICZwaXhlbEZvcm1h
dE9iaiwgJm51bVBpeGVsRm9ybWF0cyk7Ci0KLSAgICBpZiAoIW51bVBpeGVsRm9ybWF0cykKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgQ0dMQ29udGV4dE9iaiBjZ2xDb250ZXh0ID0gbnVsbHB0cjsK
LSAgICBDR0xDb250ZXh0T2JqIHNoYXJlZENHTENvbnRleHQgPSBzaGFyZWRDb250ZXh0ID8gc3Rh
dGljX2Nhc3Q8Q0dMQ29udGV4dE9iaj4oc2hhcmVkQ29udGV4dC0+bV9jb250ZXh0T2JqKSA6IG51
bGxwdHI7Ci0KLSAgICBDR0xFcnJvciBlcnIgPSBDR0xDcmVhdGVDb250ZXh0KHBpeGVsRm9ybWF0
T2JqLCBzaGFyZWRDR0xDb250ZXh0LCAmY2dsQ29udGV4dCk7Ci0gICAgR0xpbnQgYWJvcnRPbkJs
b2NrbGlzdCA9IDA7Ci0gICAgQ0dMU2V0UGFyYW1ldGVyKGNnbENvbnRleHQsIGtDR0xDUEFib3J0
T25HUFVSZXN0YXJ0U3RhdHVzQmxhY2tsaXN0ZWQsICZhYm9ydE9uQmxvY2tsaXN0KTsKLQotI2lm
IFBMQVRGT1JNKE1BQykgLy8gRklYTUU6IFRoaXMgcHJvYmFibHkgc2hvdWxkIGJlIFVTRShPUEVO
R0wpIC0gc2VlIDxyZGFyOi8vNTMwNjI3OTQ+LgotCi0gICAgYXV0byBncHVJRCA9IChob3N0V2lu
ZG93ICYmIGhvc3RXaW5kb3ctPmRpc3BsYXlJRCgpKSA/IGdwdUlERm9yRGlzcGxheShob3N0V2lu
ZG93LT5kaXNwbGF5SUQoKSkgOiBwcmltYXJ5R1BVSUQoKTsKLSAgICBzZXRHUFVCeVJlZ2lzdHJ5
SUQoY2dsQ29udGV4dCwgcGl4ZWxGb3JtYXRPYmosIGdwdUlEKTsKLQotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0oaG9zdFdpbmRvdyk7Ci0jZW5kaWYKLQotICAgIENHTERlc3Ryb3lQaXhlbEZvcm1h
dChwaXhlbEZvcm1hdE9iaik7Ci0KLSAgICBtX2NvbnRleHRPYmogPSBjZ2xDb250ZXh0OwotCi0g
ICAgaWYgKGVyciAhPSBrQ0dMTm9FcnJvciB8fCAhbV9jb250ZXh0T2JqKSB7Ci0gICAgICAgIC8v
IFdlIHdlcmUgdW5hYmxlIHRvIGNyZWF0ZSB0aGUgY29udGV4dC4KLSAgICAgICAgbV9jb250ZXh0
T2JqID0gMDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fY29udGV4dE9iaiA9IGNn
bENvbnRleHQ7Ci0KLSAgICBDR0xTZXRDdXJyZW50Q29udGV4dChjZ2xDb250ZXh0KTsKLQotICAg
IC8vIFdlYkdMIDIgZXhwZWN0cyBFUyAzLW9ubHkgUFJJTUlUSVZFX1JFU1RBUlRfRklYRURfSU5E
RVggdG8gYmUgZW5hYmxlZDsgd2UgbXVzdCBlbXVsYXRlIHRoaXMgb24gbm9uLUVTIDMgc3lzdGVt
cy4KLSAgICBpZiAobV9pc0ZvcldlYkdMMikKLSAgICAgICAgOjpnbEVuYWJsZShHcmFwaGljc0Nv
bnRleHRHTDo6UFJJTUlUSVZFX1JFU1RBUlQpOwotCi0jZWxpZiBVU0UoQU5HTEUpCiAgICAgbV9k
aXNwbGF5T2JqID0gSW5pdGlhbGl6ZUVHTERpc3BsYXkoKTsKICAgICBpZiAobV9kaXNwbGF5T2Jq
ID09IEVHTF9OT19ESVNQTEFZKQogICAgICAgICByZXR1cm47CkBAIC00OTQsOCArMzQ2LDYgQEAg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcyBhdHQKICAgICBVTlVTRURfUEFSQU0oaG9zdFdpbmRvdyk7CiAj
ZW5kaWYKIAotI2VuZGlmIC8vICNlbGlmIFVTRShBTkdMRSkKLQogICAgIHZhbGlkYXRlQXR0cmli
dXRlcygpOwogICAgIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsgLy8gVGhleSBtYXkgaGF2
ZSBjaGFuZ2VkIGR1cmluZyB2YWxpZGF0aW9uLgogCkBAIC01MDUsMzMgKzM1NSwxMSBAQCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzIGF0dAogI2lmbmRlZiBOREVCVUcKICAgICAgICAgW21fd2ViR0xMYXll
ciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKICNlbmRpZgotI2lmIFVTRShBTkdMRSkKICAgICAg
ICAgW21fd2ViR0xMYXllciBzZXRFR0xEaXNwbGF5Om1fZGlzcGxheU9iaiBjb25maWc6bV9jb25m
aWdPYmpdOwotI2VuZGlmCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCi0jaWYgVVNF
KE9QRU5HTCkKLSAgICBpZiAodXNlTXVsdGlzYW1wbGluZykKLSAgICAgICAgOjpnbEVuYWJsZShH
TF9NVUxUSVNBTVBMRSk7Ci0jZW5kaWYKLQogICAgIC8vIENyZWF0ZSB0aGUgdGV4dHVyZSB0aGF0
IHdpbGwgYmUgdXNlZCBmb3IgdGhlIGZyYW1lYnVmZmVyLgotI2lmIFVTRShPUEVOR0xfRVMpCi0g
ICAgOjpnbEdlblJlbmRlcmJ1ZmZlcnMoMSwgJm1fdGV4dHVyZSk7Ci0jZWxpZiBVU0UoT1BFTkdM
KQotICAgIDo6Z2xHZW5UZXh0dXJlcygxLCAmbV90ZXh0dXJlKTsKLSAgICAvLyBXZSBiaW5kIHRv
IEdMX1RFWFRVUkVfUkVDVEFOR0xFX0VYVCByYXRoZXIgdGhhbiBURVhUVVJFXzJEIGJlY2F1c2UK
LSAgICAvLyB0aGF0J3Mgd2hhdCBpcyByZXF1aXJlZCBmb3IgYSB0ZXh0dXJlIGJhY2tlZCBieSBJ
T1N1cmZhY2UuCi0gICAgOjpnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0VYVCwg
bV90ZXh0dXJlKTsKLSAgICA6OmdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX1JFQ1RBTkdMRV9F
WFQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICA6OmdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFX1JFQ1RBTkdMRV9FWFQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xf
TElORUFSKTsKLSAgICA6OmdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX1JFQ1RBTkdMRV9FWFQs
IEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICA6OmdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFX1JFQ1RBTkdMRV9FWFQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFN
UF9UT19FREdFKTsKLSAgICA6OmdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV9SRUNUQU5HTEVfRVhU
LCAwKTsKLQotI2VsaWYgVVNFKEFOR0xFKQotCi0gICAgR0xlbnVtIHRleHR1cmVUYXJnZXQgPSBH
cmFwaGljc0NvbnRleHRHTDo6SU9TdXJmYWNlVGV4dHVyZVRhcmdldCgpOworICAgIEdMZW51bSB0
ZXh0dXJlVGFyZ2V0ID0gSU9TdXJmYWNlVGV4dHVyZVRhcmdldCgpOwogCiAgICAgZ2w6OkdlblRl
eHR1cmVzKDEsICZtX3RleHR1cmUpOwogICAgIGdsOjpCaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0
LCBtX3RleHR1cmUpOwpAQCAtNTQwLDI3ICszNjgsNyBAQCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0
dAogICAgIGdsOjpUZXhQYXJhbWV0ZXJpKHRleHR1cmVUYXJnZXQsIEdMX1RFWFRVUkVfV1JBUF9T
LCBHTF9DTEFNUF9UT19FREdFKTsKICAgICBnbDo6VGV4UGFyYW1ldGVyaSh0ZXh0dXJlVGFyZ2V0
LCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7CiAgICAgZ2w6OkJpbmRUZXh0
dXJlKHRleHR1cmVUYXJnZXQsIDApOwotI2Vsc2UKLSNlcnJvciBVbnN1cHBvcnRlZCBjb25maWd1
cmF0aW9uCi0jZW5kaWYKLQotI2lmIFVTRShPUEVOR0wpIHx8IFVTRShPUEVOR0xfRVMpCi0gICAg
Ly8gQ3JlYXRlIHRoZSBmcmFtZWJ1ZmZlciBvYmplY3QuCi0gICAgOjpnbEdlbkZyYW1lYnVmZmVy
c0VYVCgxLCAmbV9mYm8pOwotICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZG
RVJfRVhULCBtX2Zibyk7Ci0KLSAgICBpZiAoIWF0dHJzLmFudGlhbGlhcyAmJiAoYXR0cnMuc3Rl
bmNpbCB8fCBhdHRycy5kZXB0aCkpCi0gICAgICAgIDo6Z2xHZW5SZW5kZXJidWZmZXJzRVhUKDEs
ICZtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CiAKLSAgICAvLyBJZiBuZWNlc3NhcnksIGNyZWF0ZSBh
bm90aGVyIGZyYW1lYnVmZmVyIGZvciB0aGUgbXVsdGlzYW1wbGUgcmVzdWx0cy4KLSAgICBpZiAo
YXR0cnMuYW50aWFsaWFzKSB7Ci0gICAgICAgIDo6Z2xHZW5GcmFtZWJ1ZmZlcnNFWFQoMSwgJm1f
bXVsdGlzYW1wbGVGQk8pOwotICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1F
QlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7Ci0gICAgICAgIDo6Z2xHZW5SZW5kZXJidWZm
ZXJzRVhUKDEsICZtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIpOwotICAgICAgICBpZiAoYXR0cnMu
c3RlbmNpbCB8fCBhdHRycy5kZXB0aCkKLSAgICAgICAgICAgIDo6Z2xHZW5SZW5kZXJidWZmZXJz
RVhUKDEsICZtX211bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVmZmVyKTsKLSAgICB9Ci0jZWxpZiBV
U0UoQU5HTEUpCiAgICAgZ2w6OkdlbkZyYW1lYnVmZmVycygxLCAmbV9mYm8pOwogICAgIGdsOjpC
aW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1fZmJvKTsKICAgICBtX3N0YXRlLmJvdW5k
RHJhd0ZCTyA9IG1fc3RhdGUuYm91bmRSZWFkRkJPID0gbV9mYm87CkBAIC01ODksNDMgKzM5Nyw4
IEBAIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0CiAgICAgICAgIC8vIENyZWF0ZSBhbiBGQk8gd2l0
aCB3aGljaCB0byBwZXJmb3JtIEJsaXRGcmFtZWJ1ZmZlciBmcm9tIG9uZSB0ZXh0dXJlIHRvIHRo
ZSBvdGhlci4KICAgICAgICAgZ2w6OkdlbkZyYW1lYnVmZmVycygxLCAmbV9wcmVzZXJ2ZURyYXdp
bmdCdWZmZXJGQk8pOwogICAgIH0KLSNlbmRpZiAvLyBVU0UoQU5HTEUpCiAKLSNpZiAhVVNFKEFO
R0xFKQotICAgIC8vIEFOR0xFIHNoYWRlciBjb21waWxlciBpbml0aWFsaXphdGlvbi4KLQotICAg
IFNoQnVpbHRJblJlc291cmNlcyBBTkdMRVJlc291cmNlczsKLSAgICBzaDo6SW5pdEJ1aWx0SW5S
ZXNvdXJjZXMoJkFOR0xFUmVzb3VyY2VzKTsKLQotICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29u
dGV4dEdMOjpNQVhfVkVSVEVYX0FUVFJJQlMsICZBTkdMRVJlc291cmNlcy5NYXhWZXJ0ZXhBdHRy
aWJzKTsKLSAgICBnZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYX1ZFUlRFWF9VTklG
T1JNX1ZFQ1RPUlMsICZBTkdMRVJlc291cmNlcy5NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyk7Ci0g
ICAgZ2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9WQVJZSU5HX1ZFQ1RPUlMsICZB
TkdMRVJlc291cmNlcy5NYXhWYXJ5aW5nVmVjdG9ycyk7Ci0gICAgZ2V0SW50ZWdlcnYoR3JhcGhp
Y3NDb250ZXh0R0w6Ok1BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUywgJkFOR0xFUmVzb3Vy
Y2VzLk1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzKTsKLSAgICBnZXRJbnRlZ2VydihHcmFwaGlj
c0NvbnRleHRHTDo6TUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMsICZBTkdMRVJlc291
cmNlcy5NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKTsKLSAgICBnZXRJbnRlZ2VydihHcmFw
aGljc0NvbnRleHRHTDo6TUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMsICZBTkdMRVJlc291cmNlcy5N
YXhUZXh0dXJlSW1hZ2VVbml0cyk7Ci0gICAgZ2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6
Ok1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMsICZBTkdMRVJlc291cmNlcy5NYXhGcmFnbWVu
dFVuaWZvcm1WZWN0b3JzKTsKLQotICAgIC8vIEFsd2F5cyBzZXQgdG8gMSBmb3IgT3BlbkdMIEVT
LgotICAgIEFOR0xFUmVzb3VyY2VzLk1heERyYXdCdWZmZXJzID0gMTsKLSAgICAKLSAgICBHQ0dM
aW50IHJhbmdlWzJdLCBwcmVjaXNpb247Ci0gICAgZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdy
YXBoaWNzQ29udGV4dEdMOjpGUkFHTUVOVF9TSEFERVIsIEdyYXBoaWNzQ29udGV4dEdMOjpISUdI
X0ZMT0FULCByYW5nZSwgJnByZWNpc2lvbik7Ci0gICAgQU5HTEVSZXNvdXJjZXMuRnJhZ21lbnRQ
cmVjaXNpb25IaWdoID0gKHJhbmdlWzBdIHx8IHJhbmdlWzFdIHx8IHByZWNpc2lvbik7Ci0KLSAg
ICBtX2NvbXBpbGVyLnNldFJlc291cmNlcyhBTkdMRVJlc291cmNlcyk7Ci0jZW5kaWYgLy8gIVVT
RShBTkdMRSkKLSAgICAKLSNpZiBVU0UoT1BFTkdMKQotICAgIDo6Z2xFbmFibGUoR0xfVkVSVEVY
X1BST0dSQU1fUE9JTlRfU0laRSk7Ci0gICAgaWYgKCFpc0dMRVMyQ29tcGxpYW50KCkpCi0gICAg
ICAgIDo6Z2xFbmFibGUoR0xfUE9JTlRfU1BSSVRFKTsKLSNlbmRpZgotCi0jaWYgVVNFKE9QRU5H
TCkgfHwgVVNFKE9QRU5HTF9FUykKLSAgICA6OmdsQ2xlYXJDb2xvcigwLCAwLCAwLCAwKTsKLSNl
bGlmIFVTRShBTkdMRSkKICAgICBnbDo6Q2xlYXJDb2xvcigwLCAwLCAwLCAwKTsKLSNlbmRpZgog
CiAgICAgTE9HKFdlYkdMLCAiQ3JlYXRlZCBhIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMICglcCku
IiwgdGhpcyk7CiB9CkBAIC02MzcsMjcgKzQxMCw4IEBAIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp+R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woKQogICAgIGlmIChtX2NvbnRleHRPYmopIHsKICAg
ICAgICAgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzID0gY29udGV4dEF0dHJpYnV0
ZXMoKTsKICAgICAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7IC8vIFRPRE86IGNoZWNrIHJlc3Vs
dC4KLSNpZiBVU0UoT1BFTkdMX0VTKQotICAgICAgICBbc3RhdGljX2Nhc3Q8RUFHTENvbnRleHQg
Kj4obV9jb250ZXh0T2JqKSByZW5kZXJidWZmZXJTdG9yYWdlOkdMX1JFTkRFUkJVRkZFUiBmcm9t
RHJhd2FibGU6bmlsXTsKLSAgICAgICAgOjpnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJm1fdGV4
dHVyZSk7Ci0jZWxpZiBVU0UoT1BFTkdMKQotICAgICAgICA6OmdsRGVsZXRlVGV4dHVyZXMoMSwg
Jm1fdGV4dHVyZSk7Ci0jZWxpZiBVU0UoQU5HTEUpCiAgICAgICAgIGdsOjpEZWxldGVUZXh0dXJl
cygxLCAmbV90ZXh0dXJlKTsKLSNlbmRpZgogCi0jaWYgVVNFKE9QRU5HTCkgfHwgVVNFKE9QRU5H
TF9FUykKLSAgICAgICAgaWYgKGF0dHJzLmFudGlhbGlhcykgewotICAgICAgICAgICAgOjpnbERl
bGV0ZVJlbmRlcmJ1ZmZlcnNFWFQoMSwgJm1fbXVsdGlzYW1wbGVDb2xvckJ1ZmZlcik7Ci0gICAg
ICAgICAgICBpZiAoYXR0cnMuc3RlbmNpbCB8fCBhdHRycy5kZXB0aCkKLSAgICAgICAgICAgICAg
ICA6OmdsRGVsZXRlUmVuZGVyYnVmZmVyc0VYVCgxLCAmbV9tdWx0aXNhbXBsZURlcHRoU3RlbmNp
bEJ1ZmZlcik7Ci0gICAgICAgICAgICA6OmdsRGVsZXRlRnJhbWVidWZmZXJzRVhUKDEsICZtX211
bHRpc2FtcGxlRkJPKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChhdHRycy5z
dGVuY2lsIHx8IGF0dHJzLmRlcHRoKQotICAgICAgICAgICAgICAgIDo6Z2xEZWxldGVSZW5kZXJi
dWZmZXJzRVhUKDEsICZtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7Ci0gICAgICAgIH0KLSAgICAgICAg
OjpnbERlbGV0ZUZyYW1lYnVmZmVyc0VYVCgxLCAmbV9mYm8pOwotI2VsaWYgVVNFKEFOR0xFKQog
ICAgICAgICBpZiAoYXR0cnMuYW50aWFsaWFzKSB7CiAgICAgICAgICAgICBnbDo6RGVsZXRlUmVu
ZGVyYnVmZmVycygxLCAmbV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVyKTsKICAgICAgICAgICAgIGlm
IChhdHRycy5zdGVuY2lsIHx8IGF0dHJzLmRlcHRoKQpAQCAtNjcyLDI3ICs0MjYsMTcgQEAgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6On5HcmFwaGljc0NvbnRleHRHTE9wZW5HTCgpCiAgICAgICAg
ICAgICBnbDo6RGVsZXRlVGV4dHVyZXMoMSwgJm1fcHJlc2VydmVEcmF3aW5nQnVmZmVyVGV4dHVy
ZSk7CiAgICAgICAgIGlmIChtX3ByZXNlcnZlRHJhd2luZ0J1ZmZlckZCTykKICAgICAgICAgICAg
IGdsOjpEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1fcHJlc2VydmVEcmF3aW5nQnVmZmVyRkJPKTsK
LSNlbmRpZgogCi0jaWYgVVNFKE9QRU5HTF9FUykKLSAgICAgICAgW0VBR0xDb250ZXh0IHNldEN1
cnJlbnRDb250ZXh0OjBdOwotICAgICAgICBbc3RhdGljX2Nhc3Q8RUFHTENvbnRleHQgKj4obV9j
b250ZXh0T2JqKSByZWxlYXNlXTsKLSNlbGlmIFVTRShPUEVOR0wpCi0gICAgICAgIENHTFNldEN1
cnJlbnRDb250ZXh0KDApOwotICAgICAgICBDR0xEZXN0cm95Q29udGV4dChjZ2xDb250ZXh0KTsK
LSNlbGlmIFVTRShBTkdMRSkKICAgICAgICAgW21fd2ViR0xMYXllciByZWxlYXNlR0xSZXNvdXJj
ZXNdOwogICAgICAgICBFR0xfTWFrZUN1cnJlbnQobV9kaXNwbGF5T2JqLCBFR0xfTk9fU1VSRkFD
RSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19DT05URVhUKTsKICAgICAgICAgRUdMX0Rlc3Ryb3lD
b250ZXh0KG1fZGlzcGxheU9iaiwgbV9jb250ZXh0T2JqKTsKLSNlbmRpZgogICAgICAgICBbbV93
ZWJHTExheWVyIHNldENvbnRleHQ6bnVsbHB0cl07CiAgICAgfQogCiAgICAgTE9HKFdlYkdMLCAi
RGVzdHJveWVkIGEgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgKCVwKS4iLCB0aGlzKTsKIH0KIAot
I2lmIFVTRShBTkdMRSkKLUdDR0xlbnVtIEdyYXBoaWNzQ29udGV4dEdMOjpJT1N1cmZhY2VUZXh0
dXJlVGFyZ2V0KCkKK0dDR0xlbnVtIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpJT1N1cmZhY2VU
ZXh0dXJlVGFyZ2V0KCkKIHsKICNpZiBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBpZiAoaXNp
T1NBcHBPbk1hYygpKQpAQCAtNzA1LDcgKzQ0OSw3IEBAIEdDR0xlbnVtIEdyYXBoaWNzQ29udGV4
dEdMOjpJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0KCkKICNlbmRpZgogfQogCi1HQ0dMZW51bSBHcmFw
aGljc0NvbnRleHRHTDo6SU9TdXJmYWNlVGV4dHVyZVRhcmdldFF1ZXJ5KCkKK0dDR0xlbnVtIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0UXVlcnkoKQogewog
I2lmIFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGlmIChpc2lPU0FwcE9uTWFjKCkpCkBAIC03
MTgsNTggKzQ2MiwzMSBAQCBHQ0dMZW51bSBHcmFwaGljc0NvbnRleHRHTDo6SU9TdXJmYWNlVGV4
dHVyZVRhcmdldFF1ZXJ5KCkKICNlbmRpZgogfQogCi1HQ0dMaW50IEdyYXBoaWNzQ29udGV4dEdM
OjpFR0xJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0KCkKK0dDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OkVHTElPU3VyZmFjZVRleHR1cmVUYXJnZXQoKQogewogI2lmIFBMQVRGT1JNKE1BQ0NB
VEFMWVNUKQogICAgIGlmIChpc2lPU0FwcE9uTWFjKCkpCi0gICAgICAgIHJldHVybiAweDMwNUY7
IC8vIEVHTF9URVhUVVJFXzJECi0gICAgcmV0dXJuIDB4MzQ1QjsgLy8gRUdMX1RFWFRVUkVfUkVD
VEFOR0xFX0FOR0xFCisgICAgICAgIHJldHVybiBFR0xfVEVYVFVSRV8yRDsKKyAgICByZXR1cm4g
RUdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFOwogI2VsaWYgUExBVEZPUk0oTUFDKQotICAgIHJl
dHVybiAweDM0NUI7IC8vIEVHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRQorICAgIHJldHVybiBF
R0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEU7CiAjZWxzZQotICAgIHJldHVybiAweDMwNUY7IC8v
IEVHTF9URVhUVVJFXzJECisgICAgcmV0dXJuIEVHTF9URVhUVVJFXzJEOwogI2VuZGlmCiB9Ci0j
ZW5kaWYKLQotI2lmIFVTRShPUEVOR0xfRVMpCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpzZXRSZW5kZXJidWZmZXJTdG9yYWdlRnJvbURyYXdhYmxlKEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCkKLXsKLSAgICAvLyBXZSBuZWVkIHRvIG1ha2UgYSBjYWxsIHRvIHNldEJv
dW5kcyBiZWxvdyB0byB1cGRhdGUgdGhlIGJhY2tpbmcgc3RvcmUgc2l6ZSBidXQgd2UgYWxzbwot
ICAgIC8vIGRvIG5vdCB3YW50IHRvIGNsb2JiZXIgdGhlIGJvdW5kcyBzZXQgZHVyaW5nIGxheW91
dC4KLSAgICBDR1JlY3QgcHJldmlvdXNCb3VuZHMgPSBbbV93ZWJHTExheWVyLmdldCgpIGJvdW5k
c107Ci0KLSAgICBbbV93ZWJHTExheWVyIHNldEJvdW5kczpDR1JlY3RNYWtlKDAsIDAsIHdpZHRo
LCBoZWlnaHQpXTsKLSAgICBbbV93ZWJHTExheWVyIHNldE9wYXF1ZTohY29udGV4dEF0dHJpYnV0
ZXMoKS5hbHBoYV07Ci0KLSAgICBbc3RhdGljX2Nhc3Q8RUFHTENvbnRleHQgKj4obV9jb250ZXh0
T2JqKSByZW5kZXJidWZmZXJTdG9yYWdlOkdMX1JFTkRFUkJVRkZFUiBmcm9tRHJhd2FibGU6c3Rh
dGljX2Nhc3Q8aWQ8RUFHTERyYXdhYmxlPj4obV93ZWJHTExheWVyLmdldCgpKV07Ci0KLSAgICBb
bV93ZWJHTExheWVyIHNldEJvdW5kczpwcmV2aW91c0JvdW5kc107Ci19Ci0jZW5kaWYKIAogYm9v
bCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFrZUNvbnRleHRDdXJyZW50KCkKIHsKICAgICBp
ZiAoIW1fY29udGV4dE9iaikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0jaWYgVVNFKE9QRU5H
TF9FUykKLSAgICBpZiAoW0VBR0xDb250ZXh0IGN1cnJlbnRDb250ZXh0XSAhPSBtX2NvbnRleHRP
YmopCi0gICAgICAgIHJldHVybiBbRUFHTENvbnRleHQgc2V0Q3VycmVudENvbnRleHQ6c3RhdGlj
X2Nhc3Q8RUFHTENvbnRleHQqPihtX2NvbnRleHRPYmopXTsKLSNlbGlmIFVTRShPUEVOR0wpCi0g
ICAgQ0dMQ29udGV4dE9iaiBjdXJyZW50Q29udGV4dCA9IENHTEdldEN1cnJlbnRDb250ZXh0KCk7
Ci0gICAgaWYgKGN1cnJlbnRDb250ZXh0ICE9IG1fY29udGV4dE9iaikKLSAgICAgICAgcmV0dXJu
IENHTFNldEN1cnJlbnRDb250ZXh0KHN0YXRpY19jYXN0PENHTENvbnRleHRPYmo+KG1fY29udGV4
dE9iaikpID09IGtDR0xOb0Vycm9yOwotI2VsaWYgVVNFKEFOR0xFKQogICAgIC8vIEFOR0xFIGhh
cyBhbiBlYXJseSBvdXQgZm9yIGNhc2Ugd2hlcmUgbm90aGluZyBjaGFuZ2VzLiBDYWxsaW5nIE1h
a2VDdXJyZW50CiAgICAgLy8gaXMgaW1wb3J0YW50IHRvIHNldCB2b2xhdGlsZSBwbGF0Zm9ybSBj
b250ZXh0LiBTZWUgSW5pdGlhbGl6ZUVHTERpc3BsYXkoKS4KICAgICBpZiAoIUVHTF9NYWtlQ3Vy
cmVudChtX2Rpc3BsYXlPYmosIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fU1VSRkFDRSwgbV9jb250
ZXh0T2JqKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBVU0UoQU5HTEUpCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbGVhc2VDdXJy
ZW50Q29udGV4dChSZWxlYXNlQmVoYXZpb3IgcmVsZWFzZUJlaGF2aW9yKQogewogICAgIC8vIEF0
IHRoZSBtb21lbnQgdGhpcyBmdW5jdGlvbiBpcyByZWxldmFudCBvbmx5IHdoZW4gd2ViIHRocmVh
ZCBsb2NrIG93bnMgdGhlIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGN1cnJlbnQgY29udGV4dC4K
QEAgLTgxMSwxNCArNTI4LDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y2hlY2tH
UFVTdGF0dXMoKQogICAgICAgICBMT0coV2ViR0wsICJQcmV0ZW5kaW5nIHRoZSBHUFUgaGFzIHJl
c2V0ICglcCkuIExvc2UgdGhlIGNvbnRleHQuIiwgdGhpcyk7CiAgICAgICAgIG1fZmFpbE5leHRT
dGF0dXNDaGVjayA9IGZhbHNlOwogICAgICAgICBmb3JjZUNvbnRleHRMb3N0KCk7Ci0jaWYgVVNF
KE9QRU5HTCkKLSAgICAgICAgQ0dMU2V0Q3VycmVudENvbnRleHQoMCk7Ci0jZWxpZiBVU0UoT1BF
TkdMX0VTKQotICAgICAgICBbRUFHTENvbnRleHQgc2V0Q3VycmVudENvbnRleHQ6MF07Ci0jZWxp
ZiBVU0UoQU5HTEUpCisKICAgICAgICAgRUdMX0JpbmRBUEkoRUdMX09QRU5HTF9FU19BUEkpOwog
ICAgICAgICBFR0xfTWFrZUN1cnJlbnQobV9kaXNwbGF5T2JqLCBFR0xfTk9fU1VSRkFDRSwgRUdM
X05PX1NVUkZBQ0UsIEVHTF9OT19DT05URVhUKTsKLSNlbmRpZgogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC04MjksOTQgKzU0MSwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpjaGVja0dQVVN0YXR1cygpCiAgICAgbV9zdGF0dXNDaGVja0NvdW50ID0gKG1fc3RhdHVzQ2hl
Y2tDb3VudCArIDEpICUgc3RhdHVzQ2hlY2tUaHJlc2hvbGQ7CiAKICAgICBHTGludCByZXN0YXJ0
U3RhdHVzID0gMDsKLSNpZiBVU0UoT1BFTkdMKQotICAgIENHTENvbnRleHRPYmogY2dsQ29udGV4
dCA9IHN0YXRpY19jYXN0PENHTENvbnRleHRPYmo+KHBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wo
KSk7Ci0gICAgQ0dMR2V0UGFyYW1ldGVyKGNnbENvbnRleHQsIGtDR0xDUEdQVVJlc3RhcnRTdGF0
dXMsICZyZXN0YXJ0U3RhdHVzKTsKLSAgICBpZiAocmVzdGFydFN0YXR1cyA9PSBrQ0dMQ1BHUFVS
ZXN0YXJ0U3RhdHVzQmxhY2tsaXN0ZWQpIHsKLSAgICAgICAgTE9HKFdlYkdMLCAiVGhlIEdQVSBo
YXMgYmxvY2tsaXN0ZWQgdXMgKCVwKS4gVGVybWluYXRpbmcuIiwgdGhpcyk7Ci0gICAgICAgIGV4
aXQoRVhfT1NFUlIpOwotICAgIH0KLSAgICBpZiAocmVzdGFydFN0YXR1cyA9PSBrQ0dMQ1BHUFVS
ZXN0YXJ0U3RhdHVzQ2F1c2VkKSB7Ci0gICAgICAgIExPRyhXZWJHTCwgIlRoZSBHUFUgaGFzIHJl
c2V0IHVzICglcCkuIExvc2UgdGhlIGNvbnRleHQuIiwgdGhpcyk7Ci0gICAgICAgIGZvcmNlQ29u
dGV4dExvc3QoKTsKLSAgICAgICAgQ0dMU2V0Q3VycmVudENvbnRleHQoMCk7Ci0gICAgfQotI2Vs
aWYgVVNFKE9QRU5HTF9FUykKLSAgICBFQUdMQ29udGV4dCogY3VycmVudENvbnRleHQgPSBzdGF0
aWNfY2FzdDxFQUdMQ29udGV4dCo+KFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0woKSk7Ci0gICAg
W2N1cnJlbnRDb250ZXh0IGdldFBhcmFtZXRlcjprRUFHTENQR1BVUmVzdGFydFN0YXR1cyB0bzom
cmVzdGFydFN0YXR1c107Ci0gICAgaWYgKHJlc3RhcnRTdGF0dXMgPT0ga0VBR0xDUEdQVVJlc3Rh
cnRTdGF0dXNDYXVzZWQgfHwgcmVzdGFydFN0YXR1cyA9PSBrRUFHTENQR1BVUmVzdGFydFN0YXR1
c0JsYWNrbGlzdGVkKSB7Ci0gICAgICAgIExPRyhXZWJHTCwgIlRoZSBHUFUgaGFzIGVpdGhlciBy
ZXNldCBvciBibG9ja2xpc3RlZCB1cyAoJXApLiBMb3NlIHRoZSBjb250ZXh0LiIsIHRoaXMpOwot
ICAgICAgICBmb3JjZUNvbnRleHRMb3N0KCk7Ci0gICAgICAgIFtFQUdMQ29udGV4dCBzZXRDdXJy
ZW50Q29udGV4dDowXTsKLSAgICB9Ci0jZWxpZiBVU0UoQU5HTEUpCiAgICAgLy8gRklYTUU6IGNo
ZWNrIHZpYSBLSFJfcm9idXN0bmVzcy4KICAgICByZXN0YXJ0U3RhdHVzID0gMDsKLSNlbmRpZgog
fQogCi0jaWYgVVNFKE9QRU5HTF9FUykKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBy
ZXNlbnRSZW5kZXJidWZmZXIoKQotewotICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIGlm
IChjb250ZXh0QXR0cmlidXRlcygpLmFudGlhbGlhcykKLSAgICAgICAgcmVzb2x2ZU11bHRpc2Ft
cGxpbmdJZk5lY2Vzc2FyeSgpOwotCi0gICAgOjpnbEZsdXNoKCk7Ci0gICAgOjpnbEJpbmRSZW5k
ZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtX3RleHR1cmUpOwotICAgIFtzdGF0aWNfY2FzdDxF
QUdMQ29udGV4dCo+KG1fY29udGV4dE9iaikgcHJlc2VudFJlbmRlcmJ1ZmZlcjpHTF9SRU5ERVJC
VUZGRVJdOwotICAgIFtFQUdMQ29udGV4dCBzZXRDdXJyZW50Q29udGV4dDpuaWxdOwotfQotI2Vu
ZGlmCi0KLWJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlSU9TdXJmYWNlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIElPU3Vy
ZmFjZVJlZiBzdXJmYWNlLCBHQ0dMdWludCBwbGFuZSkKLXsKLSNpZiBVU0UoT1BFTkdMKQotICAg
IENHTENvbnRleHRPYmogY2dsQ29udGV4dCA9IHN0YXRpY19jYXN0PENHTENvbnRleHRPYmo+KHBs
YXRmb3JtR3JhcGhpY3NDb250ZXh0R0woKSk7Ci0gICAgcmV0dXJuIGtDR0xOb0Vycm9yID09IENH
TFRleEltYWdlSU9TdXJmYWNlMkQoY2dsQ29udGV4dCwgdGFyZ2V0LCBpbnRlcm5hbEZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdXJmYWNlLCBwbGFuZSk7Ci0jZWxpZiBVU0Uo
T1BFTkdMX0VTKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCi0gICAgcmV0dXJu
IFtzdGF0aWNfY2FzdDxFQUdMQ29udGV4dCAqPihwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMKCkp
IHRleEltYWdlSU9TdXJmYWNlOnN1cmZhY2UgdGFyZ2V0OnRhcmdldCBpbnRlcm5hbEZvcm1hdDpp
bnRlcm5hbEZvcm1hdCB3aWR0aDp3aWR0aCBoZWlnaHQ6aGVpZ2h0IGZvcm1hdDpmb3JtYXQgdHlw
ZTp0eXBlIHBsYW5lOnBsYW5lXTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKGludGVybmFsRm9ybWF0KTsKLSAgICBVTlVTRURfUEFSQU0od2lkdGgp
OwotICAgIFVOVVNFRF9QQVJBTShoZWlnaHQpOwotICAgIFVOVVNFRF9QQVJBTShmb3JtYXQpOwot
ICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKLSAgICBVTlVTRURfUEFSQU0oc3VyZmFjZSk7Ci0gICAg
VU5VU0VEX1BBUkFNKHBsYW5lKTsKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLX0KLQotI2lm
IFVTRShPUEVOR0wpCi1ib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphbGxvY2F0ZUlPU3Vy
ZmFjZUJhY2tpbmdTdG9yZShJbnRTaXplIHNpemUpCi17Ci0gICAgTE9HKFdlYkdMLCAiR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlSU9TdXJmYWNlQmFja2luZ1N0b3JlIGF0ICVkIHgg
JWQuICglcCkiLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIHRoaXMpOwotICAgIHJldHVy
biBbbV93ZWJHTExheWVyIGFsbG9jYXRlSU9TdXJmYWNlQmFja2luZ1N0b3JlV2l0aFNpemU6c2l6
ZSB1c2luZ0FscGhhOmNvbnRleHRBdHRyaWJ1dGVzKCkuYWxwaGFdOwotfQotCi12b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp1cGRhdGVGcmFtZWJ1ZmZlclRleHR1cmVCYWNraW5nU3RvcmVG
cm9tTGF5ZXIoKQotewotICAgIExPRyhXZWJHTCwgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1
cGRhdGVGcmFtZWJ1ZmZlclRleHR1cmVCYWNraW5nU3RvcmVGcm9tTGF5ZXIoKS4gKCVwKSIsIHRo
aXMpOwotICAgIFttX3dlYkdMTGF5ZXIgYmluZEZyYW1lYnVmZmVyVG9OZXh0QXZhaWxhYmxlU3Vy
ZmFjZV07Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVwZGF0ZUNHTENvbnRl
eHQoKQotewotICAgIGlmICghbV9jb250ZXh0T2JqKQotICAgICAgICByZXR1cm47Ci0KLSAgICBM
T0coV2ViR0wsICJEZXRlY3RlZCBhIG11eCBzd2l0Y2ggb3IgZGlzcGxheSByZWNvbmZpZ3VyYXRp
b24uIENhbGwgQ0dMVXBkYXRlQ29udGV4dC4gKCVwKSIsIHRoaXMpOwotCi0gICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7Ci0gICAgQ0dMVXBkYXRlQ29udGV4dChzdGF0aWNfY2FzdDxDR0xDb250ZXh0
T2JqPihtX2NvbnRleHRPYmopKTsKLSAgICBtX2hhc1N3aXRjaGVkVG9IaWdoUGVyZm9ybWFuY2VH
UFUgPSB0cnVlOwotfQotCi0jZW5kaWYgLy8gVVNFKE9QRU5HTCkKLQotI2lmIFVTRShPUEVOR0wp
IHx8IFVTRShBTkdMRSkKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNldENvbnRleHRW
aXNpYmlsaXR5KGJvb2wgaXNWaXNpYmxlKQogewogICAgIGlmIChtX3Bvd2VyUHJlZmVyZW5jZVVz
ZWRGb3JDcmVhdGlvbiA9PSBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6SGlnaFBl
cmZvcm1hbmNlKSB7CkBAIC05MjYsOSArNTU0LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6c2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCBpc1Zpc2libGUpCiAgICAgICAgICAgICBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5yZW1vdmVDb250
ZXh0UmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlKHRoaXMpOwogICAgIH0KIH0KLSNlbmRpZiAvLyBV
U0UoT1BFTkdMKSB8fCBVU0UoQU5HTEUpCi0KLSNpZiBVU0UoQU5HTEUpCiAKICNpZiBQTEFURk9S
TShNQUMpCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1cGRhdGVDR0xDb250ZXh0KCkK
QEAgLTk2MSw4ICs1ODYsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1cGRhdGVG
cmFtZWJ1ZmZlclRleHR1cmVCYWNraW5nU3RvcmVGcm9tTGF5ZXIoKQogICAgIFttX3dlYkdMTGF5
ZXIgYmluZEZyYW1lYnVmZmVyVG9OZXh0QXZhaWxhYmxlU3VyZmFjZV07CiB9CiAKLSNlbmRpZiAv
LyBVU0UoQU5HTEUpCi0KIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmlzR0xFUzJDb21w
bGlhbnQoKSBjb25zdAogewogICAgIHJldHVybiBtX2lzRm9yV2ViR0wyOwpAQCAtMTAwMyw3ICs2
MjYsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzY3JlZW5EaWRDaGFuZ2UoUGxh
dGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQogewogICAgIGlmICghbV9jb250ZXh0T2JqKQogICAg
ICAgICByZXR1cm47Ci0jaWYgVVNFKEFOR0xFKQogICAgIGlmICghbV9oYXNTd2l0Y2hlZFRvSGln
aFBlcmZvcm1hbmNlR1BVKSB7CiAgICAgICAgIEVHTERldmljZUVYVCBkZXZpY2UgPSBudWxscHRy
OwogICAgICAgICBFR0xfUXVlcnlEaXNwbGF5QXR0cmliRVhUKG1fZGlzcGxheU9iaiwgRUdMX0RF
VklDRV9FWFQsIHJlaW50ZXJwcmV0X2Nhc3Q8RUdMQXR0cmliKj4oJmRldmljZSkpOwpAQCAtMTAx
MywxNCArNjM1LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2NyZWVuRGlkQ2hh
bmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKICAgICAgICAgRUdMX1F1ZXJ5RGV2aWNl
QXR0cmliRVhUKGRldmljZSwgRUdMX0NHTF9QSVhFTF9GT1JNQVRfQU5HTEUsIHJlaW50ZXJwcmV0
X2Nhc3Q8RUdMQXR0cmliKj4oJnBpeGVsRm9ybWF0KSk7CiAgICAgICAgIHNldEdQVUJ5UmVnaXN0
cnlJRChjZ2xDb250ZXh0LCBwaXhlbEZvcm1hdCwgZ3B1SURGb3JEaXNwbGF5KGRpc3BsYXlJRCkp
OwogICAgIH0KLSNlbHNlCi0jaWYgVVNFKE9QRU5HTCkKLSAgICBpZiAoIW1faGFzU3dpdGNoZWRU
b0hpZ2hQZXJmb3JtYW5jZUdQVSkgewotICAgICAgICBDR0xDb250ZXh0T2JqIGNnbENvbnRleHQg
PSBzdGF0aWNfY2FzdDxDR0xDb250ZXh0T2JqPihtX2NvbnRleHRPYmopOwotICAgICAgICBzZXRH
UFVCeVJlZ2lzdHJ5SUQoY2dsQ29udGV4dCwgQ0dMR2V0UGl4ZWxGb3JtYXQoY2dsQ29udGV4dCks
IGdwdUlERm9yRGlzcGxheShkaXNwbGF5SUQpKTsKLSAgICB9Ci0jZW5kaWYKLSNlbmRpZiAvLyBV
U0UoQU5HTEUpCiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKE1BQykKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5oCmluZGV4IDcyNzhi
YjRmMmFmOWNiMGQ1ZWI4N2NiYThkNDYwODhlMGVhNTBkN2MuLjg1OTcyNDM5MzQ3ZDdkODc2NTZi
MjExODVmOThhYzA3MTI0MmM5MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmgKQEAgLTM1LDE1ICszNSw4IEBAIGNsYXNzIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOwogCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19C
RUdJTgogCi0jaWYgVVNFKE9QRU5HTCkKLUBpbnRlcmZhY2UgV2ViR0xMYXllciA6IENBTGF5ZXIK
LSNlbGlmIFVTRShPUEVOR0xfRVMpCi1AaW50ZXJmYWNlIFdlYkdMTGF5ZXIgOiBDQUVBR0xMYXll
cgotI2VsaWYgVVNFKEFOR0xFKQorCiBAaW50ZXJmYWNlIFdlYkdMTGF5ZXIgOiBDQUxheWVyCi0j
ZWxzZQotI2Vycm9yIFVuc3VwcG9ydGVkIHBsYXRmb3JtCi0jZW5kaWYKIAogQHByb3BlcnR5IChu
b25hdG9taWMpIE5ha2VkUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjb250
ZXh0OwogCkBAIC01MywxNSArNDYsMTAgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
QkVHSU4KIAogLSAodm9pZClwcmVwYXJlRm9yRGlzcGxheTsKIAotI2lmIFVTRShPUEVOR0wpIHx8
IFVTRShBTkdMRSkKIC0gKGJvb2wpYWxsb2NhdGVJT1N1cmZhY2VCYWNraW5nU3RvcmVXaXRoU2l6
ZTooV2ViQ29yZTo6SW50U2l6ZSlzaXplIHVzaW5nQWxwaGE6KEJPT0wpdXNpbmdBbHBoYTsKIC0g
KHZvaWQpYmluZEZyYW1lYnVmZmVyVG9OZXh0QXZhaWxhYmxlU3VyZmFjZTsKLSNlbmRpZgotCi0j
aWYgVVNFKEFOR0xFKQogLSAodm9pZClzZXRFR0xEaXNwbGF5Oih2b2lkKillZ2xEaXNwbGF5IGNv
bmZpZzoodm9pZCopZWdsQ29uZmlnOwogLSAodm9pZClyZWxlYXNlR0xSZXNvdXJjZXM7Ci0jZW5k
aWYKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9XZWJHTExheWVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvV2ViR0xMYXllci5tbQppbmRleCAzNzlhYzEzNjYyZTVmOGRhODBlMTAxYjljNmFjZGMz
MTRkNGY5ZGQwLi5jY2ZmOGYwNmRmNWM2OWY4MTUwOTQxMTg0MDZiMjlhN2JkNDA3NGU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5
ZXIubW0KQEAgLTM5LDEyICszOSw2IEBACiAjaW1wb3J0IDx3dGYvRmFzdE1hbGxvYy5oPgogI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgogCi0jaWYgVVNFKE9QRU5HTCkKLSNpbXBvcnQgPE9wZW5H
TC9PcGVuR0wuaD4KLSNpbXBvcnQgPE9wZW5HTC9nbC5oPgotI2VuZGlmCi0KLSNpZiBVU0UoQU5H
TEUpCiAjZGVmaW5lIEVHTF9FR0xfUFJPVE9UWVBFUyAwCiAjaW1wb3J0IDxBTkdMRS9lZ2wuaD4K
ICNpbXBvcnQgPEFOR0xFL2VnbGV4dC5oPgpAQCAtNTUsOSArNDksNyBAQAogI2RlZmluZSBHTF9B
TkdMRV9leHBsaWNpdF9jb250ZXh0CiAjaW1wb3J0IDxBTkdMRS9nbDJleHQuaD4KICNpbXBvcnQg
PEFOR0xFL2dsMmV4dF9hbmdsZS5oPgotI2VuZGlmCiAKLSNpZiBVU0UoQU5HTEUpCiBuYW1lc3Bh
Y2UgewogICAgIGNsYXNzIFNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZyB7CiAgICAgICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZyk7CkBAIC03OCwy
NSArNzAsMjAgQEAgbmFtZXNwYWNlIHsKICAgICAgICAgR0xpbnQgbV9iaW5kaW5nVmFsdWUgeyAw
IH07CiAgICAgfTsKIH0KLSNlbmRpZgogCiBAaW1wbGVtZW50YXRpb24gV2ViR0xMYXllciB7CiAg
ICAgZmxvYXQgX2RldmljZVBpeGVsUmF0aW87Ci0jaWYgVVNFKE9QRU5HTCkgfHwgVVNFKEFOR0xF
KQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+IF9jb250ZW50c0J1ZmZl
cjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiBfZHJhd2luZ0J1ZmZl
cjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiBfc3BhcmVCdWZmZXI7
CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBfYnVmZmVyU2l6ZTsKICAgICBCT09MIF91c2luZ0FscGhh
OwotI2VuZGlmCi0jaWYgVVNFKEFOR0xFKQogICAgIHZvaWQqIF9lZ2xEaXNwbGF5OwogICAgIHZv
aWQqIF9lZ2xDb25maWc7CiAgICAgdm9pZCogX2NvbnRlbnRzUGJ1ZmZlcjsKICAgICB2b2lkKiBf
ZHJhd2luZ1BidWZmZXI7CiAgICAgdm9pZCogX3NwYXJlUGJ1ZmZlcjsKICAgICB2b2lkKiBfbGF0
Y2hlZFBidWZmZXI7Ci0jZW5kaWYKICAgICBCT09MIF9wcmVwYXJlZEZvckRpc3BsYXk7CiB9CiAK
QEAgLTEwNiwxNyArOTMsMTIgQEAgbmFtZXNwYWNlIHsKICAgICBzZWxmID0gW3N1cGVyIGluaXRd
OwogICAgIGF1dG8gYXR0cmlidXRlcyA9IGNvbnRleHQtPmNvbnRleHRBdHRyaWJ1dGVzKCk7CiAg
ICAgX2RldmljZVBpeGVsUmF0aW8gPSBhdHRyaWJ1dGVzLmRldmljZVBpeGVsUmF0aW87Ci0jaWYg
VVNFKE9QRU5HTCkgfHwgVVNFKEFOR0xFKQogICAgIHNlbGYuY29udGVudHNPcGFxdWUgPSAhYXR0
cmlidXRlcy5hbHBoYTsKICAgICBzZWxmLnRyYW5zZm9ybSA9IENBVHJhbnNmb3JtM0RJZGVudGl0
eTsKICAgICBzZWxmLmNvbnRlbnRzU2NhbGUgPSBfZGV2aWNlUGl4ZWxSYXRpbzsKLSNlbHNlCi0g
ICAgc2VsZi5vcGFxdWUgPSAhYXR0cmlidXRlcy5hbHBoYTsKLSNlbmRpZgogICAgIHJldHVybiBz
ZWxmOwogfQogCi0jaWYgVVNFKE9QRU5HTCkgfHwgVVNFKEFOR0xFKQogLy8gV2hlbiB1c2luZyBh
biBJT1N1cmZhY2UgYXMgbGF5ZXIgY29udGVudHMsIHdlIG5lZWQgdG8gZmxpcCB0aGUKIC8vIGxh
eWVyIHRvIHRha2UgaW50byBhY2NvdW50IHRoYXQgdGhlIElPU3VyZmFjZSBwcm92aWRlcyBjb250
ZW50CiAvLyBpbiBZLXVwLiBUaGlzIG1lYW5zIHRoYXQgYW55IGluY29taW5nIHRyYW5zZm9ybSAo
dW5saWtlbHksIHNpbmNlCkBAIC0xMzIsNTMgKzExNCwxNCBAQCBuYW1lc3BhY2UgewogewogICAg
IFtzdXBlciBzZXRBbmNob3JQb2ludDpDR1BvaW50TWFrZShwLngsIDEuMCAtIHAueSldOwogfQot
I2VuZGlmIC8vIFVTRShPUEVOR0wpIHx8IFVTRShBTkdMRSkKLQotI2lmIFVTRShPUEVOR0wpCi1z
dGF0aWMgdm9pZCBmcmVlRGF0YSh2b2lkICosIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCAvKiBz
aXplICovKQotewotICAgIGZhc3RGcmVlKGNvbnN0X2Nhc3Q8dm9pZCAqPihkYXRhKSk7Ci19Ci0j
ZW5kaWYgLy8gVVNFKE9QRU5HTCkKIAogLSAoQ0dJbWFnZVJlZiljb3B5SW1hZ2VTbmFwc2hvdFdp
dGhDb2xvclNwYWNlOihDR0NvbG9yU3BhY2VSZWYpY29sb3JTcGFjZQogewogICAgIGlmICghX2Nv
bnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0jaWYgVVNFKE9QRU5HTCkKLSAgICBD
R0xDb250ZXh0T2JqIGNnbENvbnRleHQgPSBzdGF0aWNfY2FzdDxDR0xDb250ZXh0T2JqPihfY29u
dGV4dC0+cGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCgpKTsKLSAgICBDR0xTZXRDdXJyZW50Q29u
dGV4dChjZ2xDb250ZXh0KTsKLQotICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGltYWdl
Q29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7Ci0gICAgaWYgKCFpbWFnZUNvbG9yU3BhY2UpCi0gICAg
ICAgIGltYWdlQ29sb3JTcGFjZSA9IFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCk7Ci0KLSAg
ICBDR1JlY3QgbGF5ZXJCb3VuZHMgPSBDR1JlY3RJbnRlZ3JhbChbc2VsZiBib3VuZHNdKTsKLQot
ICAgIHNpemVfdCB3aWR0aCA9IGxheWVyQm91bmRzLnNpemUud2lkdGggKiBfZGV2aWNlUGl4ZWxS
YXRpbzsKLSAgICBzaXplX3QgaGVpZ2h0ID0gbGF5ZXJCb3VuZHMuc2l6ZS5oZWlnaHQgKiBfZGV2
aWNlUGl4ZWxSYXRpbzsKLQotICAgIHNpemVfdCByb3dCeXRlcyA9ICh3aWR0aCAqIDQgKyAxNSkg
JiB+MTU7Ci0gICAgc2l6ZV90IGRhdGFTaXplID0gcm93Qnl0ZXMgKiBoZWlnaHQ7Ci0gICAgdm9p
ZCogZGF0YSA9IGZhc3RNYWxsb2MoZGF0YVNpemUpOwotICAgIGlmICghZGF0YSkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0KLSAgICBnbFBpeGVsU3RvcmVpKEdMX1BBQ0tfUk9XX0xFTkdUSCwg
cm93Qnl0ZXMgLyA0KTsKLSAgICBnbFJlYWRQaXhlbHMoMCwgMCwgd2lkdGgsIGhlaWdodCwgR0xf
QkdSQSwgR0xfVU5TSUdORURfSU5UXzhfOF84XzhfUkVWLCBkYXRhKTsKLQotICAgIFdlYkNvcmU6
OnZlcmlmeUltYWdlQnVmZmVySXNCaWdFbm91Z2goKHVpbnQ4X3QqKWRhdGEsIGRhdGFTaXplKTsK
LSAgICBDR0RhdGFQcm92aWRlclJlZiBwcm92aWRlciA9IENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0
aERhdGEoMCwgZGF0YSwgZGF0YVNpemUsIGZyZWVEYXRhKTsKLSAgICBDR0ltYWdlUmVmIGltYWdl
ID0gQ0dJbWFnZUNyZWF0ZSh3aWR0aCwgaGVpZ2h0LCA4LCAzMiwgcm93Qnl0ZXMsIGltYWdlQ29s
b3JTcGFjZS5nZXQoKSwKLSAgICAgICAga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8
IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCwgcHJvdmlkZXIsIDAsIHRydWUsIGtDR1JlbmRlcmlu
Z0ludGVudERlZmF1bHQpOwotICAgIENHRGF0YVByb3ZpZGVyUmVsZWFzZShwcm92aWRlcik7Ci0g
ICAgcmV0dXJuIGltYWdlOwotI2Vsc2UKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50LgorICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTczNzcKICAgICBVTlVTRURfUEFSQU0oY29sb3JTcGFjZSk7CiAgICAgcmV0dXJuIG51bGxw
dHI7Ci0jZW5kaWYKIH0KIAogLSAodm9pZClwcmVwYXJlRm9yRGlzcGxheQpAQCAtMTkwLDEzICsx
MzMsNiBAQCBzdGF0aWMgdm9pZCBmcmVlRGF0YSh2b2lkICosIGNvbnN0IHZvaWQgKmRhdGEsIHNp
emVfdCAvKiBzaXplICovKQogICAgIC8vIGF0IHRoZSBlbmQgb2YgdGhlIHJlbmRlcmluZyB0YXNr
LiBXZSB3aWxsIGZsdXNoIGFsbCBwYWludGluZyBjb21tYW5kcwogICAgIC8vIGxlYXZpbmcgdGhl
IGJ1ZmZlcnMgcmVhZHkgdG8gY29tcG9zaXRlLgogCi0jaWYgVVNFKE9QRU5HTCkKLSAgICBfY29u
dGV4dC0+cHJlcGFyZVRleHR1cmUoKTsKLSAgICBpZiAoX2RyYXdpbmdCdWZmZXIpIHsKLSAgICAg
ICAgc3RkOjpzd2FwKF9jb250ZW50c0J1ZmZlciwgX2RyYXdpbmdCdWZmZXIpOwotICAgICAgICBb
c2VsZiBiaW5kRnJhbWVidWZmZXJUb05leHRBdmFpbGFibGVTdXJmYWNlXTsKLSAgICB9Ci0jZWxp
ZiBVU0UoQU5HTEUpCiAgICAgaWYgKCFfY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpIHsK
ICAgICAgICAgLy8gQ29udGV4dCBpcyBsaWtlbHkgYmVpbmcgdG9ybiBkb3duLgogICAgICAgICBy
ZXR1cm47CkBAIC0yMDUsMTEgKzE0MSwxMiBAQCBzdGF0aWMgdm9pZCBmcmVlRGF0YSh2b2lkICos
IGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCAvKiBzaXplICovKQogICAgIGlmIChfZHJhd2luZ0J1
ZmZlcikgewogICAgICAgICBpZiAoX2xhdGNoZWRQYnVmZmVyKSB7CiAgICAgICAgICAgICBXVEY6
Ok9wdGlvbmFsPFNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZz4gcmVzdG9yZUJpbmRpbmc7Cisg
ICAgICAgICAgICBHQ0dMZW51bSB0ZXh0dXJlVGFyZ2V0ID0gV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OklPU3VyZmFjZVRleHR1cmVUYXJnZXQoKTsKICAgICAgICAgICAgIC8vIFdl
IGRvbid0IG5lZWQgdG8gcmVzdG9yZSBHTF9URVhUVVJFX1JFQ1RBTkdMRSBiZWNhdXNlIGl0J3Mg
bm90IGFjY2Vzc2libGUgZnJvbSB1c2VyIGNvZGUuCi0gICAgICAgICAgICBpZiAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0w6OklPU3VyZmFjZVRleHR1cmVUYXJnZXQoKSAhPSBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9SRUNUQU5HTEVfQVJCKQotICAgICAgICAgICAgICAg
IHJlc3RvcmVCaW5kaW5nLmVtcGxhY2UoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OklPU3Vy
ZmFjZVRleHR1cmVUYXJnZXRRdWVyeSgpLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6SU9T
dXJmYWNlVGV4dHVyZVRhcmdldCgpKTsKKyAgICAgICAgICAgIGlmICh0ZXh0dXJlVGFyZ2V0ICE9
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX1JFQ1RBTkdMRV9BUkIpCisgICAg
ICAgICAgICAgICAgcmVzdG9yZUJpbmRpbmcuZW1wbGFjZShXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6SU9TdXJmYWNlVGV4dHVyZVRhcmdldFF1ZXJ5KCksIHRleHR1cmVUYXJnZXQp
OwogICAgICAgICAgICAgR0NHTGVudW0gdGV4dHVyZSA9IF9jb250ZXh0LT5wbGF0Zm9ybVRleHR1
cmUoKTsKLSAgICAgICAgICAgIGdsOjpCaW5kVGV4dHVyZShXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTDo6SU9TdXJmYWNlVGV4dHVyZVRhcmdldCgpLCB0ZXh0dXJlKTsKKyAgICAgICAgICAgIGds
OjpCaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCB0ZXh0dXJlKTsKICAgICAgICAgICAgIGlmICgh
RUdMX1JlbGVhc2VUZXhJbWFnZShfZWdsRGlzcGxheSwgX2xhdGNoZWRQYnVmZmVyLCBFR0xfQkFD
S19CVUZGRVIpKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IHJlcG9ydCBlcnJvci4KICAg
ICAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtMjIxLDcgKzE1OCw2IEBAIHN0YXRp
YyB2b2lkIGZyZWVEYXRhKHZvaWQgKiwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IC8qIHNpemUg
Ki8pCiAgICAgICAgIHN0ZDo6c3dhcChfY29udGVudHNQYnVmZmVyLCBfZHJhd2luZ1BidWZmZXIp
OwogICAgICAgICBbc2VsZiBiaW5kRnJhbWVidWZmZXJUb05leHRBdmFpbGFibGVTdXJmYWNlXTsK
ICAgICB9Ci0jZW5kaWYKICAgICBbc2VsZiBzZXROZWVkc0Rpc3BsYXldOwogICAgIF9wcmVwYXJl
ZEZvckRpc3BsYXkgPSBZRVM7CiB9CkBAIC0yMzUsMTQgKzE3MSwxMCBAQCBzdGF0aWMgdm9pZCBm
cmVlRGF0YSh2b2lkICosIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCAvKiBzaXplICovKQogICAg
IC8vIHNvIGFsbCB3ZSBuZWVkIHRvIGRvIGhlcmUgaXMgdGlja2xlIHRoZSBDQUxheWVyIHRvIGxl
dCBpdCBrbm93IGl0IGhhcyBuZXcgY29udGVudHMuCiAgICAgLy8gVGhpcyBhdm9pZHMgcnVubmlu
ZyBhbnkgT3BlbkdMIGNvZGUgaW4gdGhpcyBtZXRob2QuCiAKLSNpZiBVU0UoT1BFTkdMKSB8fCBV
U0UoQU5HTEUpCiAgICAgaWYgKF9jb250ZW50c0J1ZmZlciAmJiBfcHJlcGFyZWRGb3JEaXNwbGF5
KSB7CiAgICAgICAgIHNlbGYuY29udGVudHMgPSBfY29udGVudHNCdWZmZXItPmFzTGF5ZXJDb250
ZW50cygpOwogICAgICAgICBbc2VsZiByZWxvYWRWYWx1ZUZvcktleVBhdGg6QCJjb250ZW50cyJd
OwogICAgIH0KLSNlbGlmIFVTRShPUEVOR0xfRVMpCi0gICAgX2NvbnRleHQtPnByZXNlbnRSZW5k
ZXJidWZmZXIoKTsKLSNlbmRpZgogCiAgICAgX2NvbnRleHQtPm1hcmtMYXllckNvbXBvc2l0ZWQo
KTsKICAgICBhdXRvIGxheWVyID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNB
TGF5ZXJGb3JMYXllcigoX19icmlkZ2Ugdm9pZCopc2VsZik7CkBAIC0yNTIsNyArMTg0LDYgQEAg
c3RhdGljIHZvaWQgZnJlZURhdGEodm9pZCAqLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3QgLyog
c2l6ZSAqLykKICAgICBfcHJlcGFyZWRGb3JEaXNwbGF5ID0gTk87CiB9CiAKLSNpZiBVU0UoQU5H
TEUpCiAtICh2b2lkKXNldEVHTERpc3BsYXk6KHZvaWQqKWRpc3BsYXkgY29uZmlnOih2b2lkKilj
b25maWcKIHsKICAgICBfZWdsRGlzcGxheSA9IGRpc3BsYXk7CkBAIC0yNzMsOSArMjA0LDcgQEAg
c3RhdGljIHZvaWQgZnJlZURhdGEodm9pZCAqLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3QgLyog
c2l6ZSAqLykKICAgICBFR0xfRGVzdHJveVN1cmZhY2UoX2VnbERpc3BsYXksIF9kcmF3aW5nUGJ1
ZmZlcik7CiAgICAgRUdMX0Rlc3Ryb3lTdXJmYWNlKF9lZ2xEaXNwbGF5LCBfc3BhcmVQYnVmZmVy
KTsKIH0KLSNlbmRpZgogCi0jaWYgVVNFKE9QRU5HTCkgfHwgVVNFKEFOR0xFKQogLSAoYm9vbClh
bGxvY2F0ZUlPU3VyZmFjZUJhY2tpbmdTdG9yZVdpdGhTaXplOihXZWJDb3JlOjpJbnRTaXplKXNp
emUgdXNpbmdBbHBoYTooQk9PTCl1c2luZ0FscGhhCiB7CiAgICAgX2J1ZmZlclNpemUgPSBzaXpl
OwpAQCAtMjkwLDEzICsyMTksMTEgQEAgc3RhdGljIHZvaWQgZnJlZURhdGEodm9pZCAqLCBjb25z
dCB2b2lkICpkYXRhLCBzaXplX3QgLyogc2l6ZSAqLykKICAgICBfY29udGVudHNCdWZmZXItPm1p
Z3JhdGVDb2xvclNwYWNlVG9Qcm9wZXJ0aWVzKCk7CiAgICAgX2RyYXdpbmdCdWZmZXItPm1pZ3Jh
dGVDb2xvclNwYWNlVG9Qcm9wZXJ0aWVzKCk7CiAgICAgX3NwYXJlQnVmZmVyLT5taWdyYXRlQ29s
b3JTcGFjZVRvUHJvcGVydGllcygpOwotCi0jaWYgVVNFKEFOR0xFKQogICAgIGNvbnN0IEVHTGlu
dCBzdXJmYWNlQXR0cmlidXRlc1tdID0gewogICAgICAgICBFR0xfV0lEVEgsIHNpemUud2lkdGgo
KSwKICAgICAgICAgRUdMX0hFSUdIVCwgc2l6ZS5oZWlnaHQoKSwKICAgICAgICAgRUdMX0lPU1VS
RkFDRV9QTEFORV9BTkdMRSwgMCwKLSAgICAgICAgRUdMX1RFWFRVUkVfVEFSR0VULCBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTDo6RUdMSU9TdXJmYWNlVGV4dHVyZVRhcmdldCgpLAorICAgICAg
ICBFR0xfVEVYVFVSRV9UQVJHRVQsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpF
R0xJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0KCksCiAgICAgICAgIEVHTF9URVhUVVJFX0lOVEVSTkFM
X0ZPUk1BVF9BTkdMRSwgdXNpbmdBbHBoYSA/IEdMX0JHUkFfRVhUIDogR0xfUkdCLAogICAgICAg
ICBFR0xfVEVYVFVSRV9GT1JNQVQsIEVHTF9URVhUVVJFX1JHQkEsCiAgICAgICAgIEVHTF9URVhU
VVJFX1RZUEVfQU5HTEUsIEdMX1VOU0lHTkVEX0JZVEUsCkBAIC0zMTEsMzYgKzIzOCwyMCBAQCBz
dGF0aWMgdm9pZCBmcmVlRGF0YSh2b2lkICosIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCAvKiBz
aXplICovKQogCiAgICAgaWYgKCFfY29udGVudHNQYnVmZmVyIHx8ICFfZHJhd2luZ1BidWZmZXIg
fHwgIV9zcGFyZVBidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgogCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKIC0gKHZvaWQpYmluZEZyYW1lYnVmZmVyVG9OZXh0QXZhaWxhYmxl
U3VyZmFjZQogewotI2lmIFVTRShPUEVOR0wpCi0gICAgR0NHTGVudW0gdGV4dHVyZSA9IF9jb250
ZXh0LT5wbGF0Zm9ybVRleHR1cmUoKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfUkVD
VEFOR0xFX0FSQiwgdGV4dHVyZSk7Ci0KLSAgICBpZiAoX2RyYXdpbmdCdWZmZXIgJiYgX2RyYXdp
bmdCdWZmZXItPmlzSW5Vc2UoKSkKLSAgICAgICAgc3RkOjpzd2FwKF9kcmF3aW5nQnVmZmVyLCBf
c3BhcmVCdWZmZXIpOwotCi0gICAgSU9TdXJmYWNlUmVmIGlvU3VyZmFjZSA9IF9kcmF3aW5nQnVm
ZmVyLT5zdXJmYWNlKCk7Ci0gICAgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQgPSBfdXNpbmdBbHBo
YSA/IEdMX1JHQkEgOiBHTF9SR0I7Ci0KLSAgICAvLyBMaW5rIHRoZSBJT1N1cmZhY2UgdG8gdGhl
IHRleHR1cmUuCi0gICAgQ0dMQ29udGV4dE9iaiBjZ2xDb250ZXh0ID0gc3RhdGljX2Nhc3Q8Q0dM
Q29udGV4dE9iaj4oX2NvbnRleHQtPnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0woKSk7Ci0gICAg
Q0dMRXJyb3IgZXJyb3IgPSBDR0xUZXhJbWFnZUlPU3VyZmFjZTJEKGNnbENvbnRleHQsIEdMX1RF
WFRVUkVfUkVDVEFOR0xFX0FSQiwgaW50ZXJuYWxGb3JtYXQsIF9idWZmZXJTaXplLndpZHRoKCks
IF9idWZmZXJTaXplLmhlaWdodCgpLCBHTF9CR1JBLCBHTF9VTlNJR05FRF9JTlRfOF84XzhfOF9S
RVYsIGlvU3VyZmFjZSwgMCk7Ci0gICAgQVNTRVJUX1VOVVNFRChlcnJvciwgZXJyb3IgPT0ga0NH
TE5vRXJyb3IpOwotI2VsaWYgVVNFKEFOR0xFKQogICAgIFdURjo6T3B0aW9uYWw8U2NvcGVkUmVz
dG9yZVRleHR1cmVCaW5kaW5nPiByZXN0b3JlQmluZGluZzsKKyAgICBHQ0dMZW51bSB0ZXh0dXJl
VGFyZ2V0ID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OklPU3VyZmFjZVRleHR1
cmVUYXJnZXQoKTsKICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHJlc3RvcmUgR0xfVEVYVFVSRV9S
RUNUQU5HTEUgYmVjYXVzZSBpdCdzIG5vdCBhY2Nlc3NpYmxlIGZyb20gdXNlciBjb2RlLgotICAg
IGlmIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6SU9TdXJmYWNlVGV4dHVyZVRhcmdldCgp
ICE9IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJFX1JFQ1RBTkdMRV9BUkIpCi0g
ICAgICAgIHJlc3RvcmVCaW5kaW5nLmVtcGxhY2UoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6
OklPU3VyZmFjZVRleHR1cmVUYXJnZXRRdWVyeSgpLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TDo6SU9TdXJmYWNlVGV4dHVyZVRhcmdldCgpKTsKKyAgICBpZiAodGV4dHVyZVRhcmdldCAhPSBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9SRUNUQU5HTEVfQVJCKQorICAgICAg
ICByZXN0b3JlQmluZGluZy5lbXBsYWNlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0UXVlcnkoKSwgdGV4dHVyZVRhcmdldCk7CiAKICAgICBH
Q0dMZW51bSB0ZXh0dXJlID0gX2NvbnRleHQtPnBsYXRmb3JtVGV4dHVyZSgpOwotCi0gICAgZ2w6
OkJpbmRUZXh0dXJlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpJT1N1cmZhY2VUZXh0dXJl
VGFyZ2V0KCksIHRleHR1cmUpOworICAgIGdsOjpCaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCB0
ZXh0dXJlKTsKIAogICAgIGlmIChfbGF0Y2hlZFBidWZmZXIpIHsKICAgICAgICAgaWYgKCFFR0xf
UmVsZWFzZVRleEltYWdlKF9lZ2xEaXNwbGF5LCBfbGF0Y2hlZFBidWZmZXIsIEVHTF9CQUNLX0JV
RkZFUikpIHsKQEAgLTM2MSw5ICsyNzIsNyBAQCBzdGF0aWMgdm9pZCBmcmVlRGF0YSh2b2lkICos
IGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCAvKiBzaXplICovKQogICAgICAgICBub3RJbXBsZW1l
bnRlZCgpOwogICAgIH0KICAgICBfbGF0Y2hlZFBidWZmZXIgPSBfZHJhd2luZ1BidWZmZXI7Ci0j
ZW5kaWYKIH0KLSNlbmRpZiAvLyBVU0UoT1BFTkdMKSB8fCBVU0UoQU5HTEUpCiAKIEBlbmQKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNh
Y2hlQ1YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNo
ZUNWLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjNzA1MDIzYTUzNTI0YzAwZmE1
MDY5ZjM4NDczM2IwYjE2Yjg1MWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNh
Y2hlQ1YuaAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXNHTC5oIgotI2luY2x1ZGUgPHd0Zi9S
ZWYuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KLQotdHlwZWRlZiBzdHJ1Y3QgX19DVkJ1ZmZlciogQ1ZJbWFnZUJ1ZmZlclJlZjsKLXR5cGVk
ZWYgQ1ZJbWFnZUJ1ZmZlclJlZiBDVlBpeGVsQnVmZmVyUmVmOwotdHlwZWRlZiBDVkltYWdlQnVm
ZmVyUmVmIENWT3BlbkdMVGV4dHVyZVJlZjsKLXR5cGVkZWYgQ1ZJbWFnZUJ1ZmZlclJlZiBDVk9w
ZW5HTEVTVGV4dHVyZVJlZjsKLXR5cGVkZWYgc3RydWN0IF9fQ1ZPcGVuR0xUZXh0dXJlQ2FjaGUg
KkNWT3BlbkdMVGV4dHVyZUNhY2hlUmVmOwotdHlwZWRlZiBzdHJ1Y3QgX19DVk9wZW5HTEVTVGV4
dHVyZUNhY2hlICpDVk9wZW5HTEVTVGV4dHVyZUNhY2hlUmVmOwotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOwotCi1jbGFzcyBUZXh0dXJlQ2Fj
aGVDViA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUZXh0dXJlQ2FjaGVDVj4gewotICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
VGV4dHVyZUNhY2hlQ1Y+IGNyZWF0ZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCYpOwotCi0jaWYg
VVNFKE9QRU5HTF9FUykKLSAgICB1c2luZyBUZXh0dXJlQ2FjaGVUeXBlID0gQ1ZPcGVuR0xFU1Rl
eHR1cmVDYWNoZVJlZjsKLSAgICB1c2luZyBUZXh0dXJlVHlwZSA9IENWT3BlbkdMRVNUZXh0dXJl
UmVmOwotI2Vsc2UKLSAgICB1c2luZyBUZXh0dXJlQ2FjaGVUeXBlID0gQ1ZPcGVuR0xUZXh0dXJl
Q2FjaGVSZWY7Ci0gICAgdXNpbmcgVGV4dHVyZVR5cGUgPSBDVk9wZW5HTFRleHR1cmVSZWY7Ci0j
ZW5kaWYKLQotICAgIFRleHR1cmVDYWNoZUNWKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiwgUmV0
YWluUHRyPFRleHR1cmVDYWNoZVR5cGU+JiYpOwotCi0gICAgUmV0YWluUHRyPFRleHR1cmVUeXBl
PiB0ZXh0dXJlRnJvbUltYWdlKENWUGl4ZWxCdWZmZXJSZWYsIEdDR0xlbnVtIG91dHB1dFRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSk7Ci0gICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmIGNvbnRleHQo
KSB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBSZWY8R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w+IG1fY29udGV4dDsKLSAgICBSZXRhaW5QdHI8VGV4dHVyZUNhY2hl
VHlwZT4gbV9jYWNoZTsKLX07Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGUzNTZkOTExNGQ3ZDNjNjI0MzZmZWUzY2RmYWQxYzQ2OGI1NjU0MDQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YubW0KKysrIC9kZXYvbnVsbApAQCAtMSwx
MDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiAKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlRl
eHR1cmVDYWNoZUNWLmgiCi0KLSNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCi0K
LSNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
c3RkOjp1bmlxdWVfcHRyPFRleHR1cmVDYWNoZUNWPiBUZXh0dXJlQ2FjaGVDVjo6Y3JlYXRlKEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMJiBjb250ZXh0KQotewotICAgIFRleHR1cmVDYWNoZVR5cGUg
Y2FjaGUgPSBudWxscHRyOwotI2lmIFVTRShPUEVOR0xfRVMpCi0gICAgQ1ZFQUdMQ29udGV4dCBl
YWdsQ29udGV4dCA9IHN0YXRpY19jYXN0PENWRUFHTENvbnRleHQ+KGNvbnRleHQucGxhdGZvcm1H
cmFwaGljc0NvbnRleHRHTCgpKTsKLSAgICBDVlJldHVybiBlcnJvciA9IENWT3BlbkdMRVNUZXh0
dXJlQ2FjaGVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0ciwgZWFnbENvbnRleHQs
IG51bGxwdHIsICZjYWNoZSk7Ci0jZWxpZiBVU0UoT1BFTkdMKQotICAgIENHTENvbnRleHRPYmog
Y2dsQ29udGV4dCA9IHN0YXRpY19jYXN0PENHTENvbnRleHRPYmo+KGNvbnRleHQucGxhdGZvcm1H
cmFwaGljc0NvbnRleHRHTCgpKTsKLSAgICBDVlJldHVybiBlcnJvciA9IENWT3BlbkdMVGV4dHVy
ZUNhY2hlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIG51bGxwdHIsIGNnbENvbnRleHQsIENH
TEdldFBpeGVsRm9ybWF0KGNnbENvbnRleHQpLCBudWxscHRyLCAmY2FjaGUpOwotI2VsaWYgVVNF
KEFOR0xFKQotICAgIC8vIEZJWE1FOiBmaWd1cmUgb3V0IGhvdyB0byBkbyB0aGlzIGludGVncmF0
aW5nIHZpYSBBTkdMRS4KLSAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7Ci0gICAgQ1ZSZXR1cm4g
ZXJyb3IgPSBrQ1ZSZXR1cm5TdWNjZXNzICsgMTsKLSNlbmRpZgotICAgIGlmIChlcnJvciAhPSBr
Q1ZSZXR1cm5TdWNjZXNzKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIFJldGFpblB0
cjxUZXh0dXJlQ2FjaGVUeXBlPiBzdHJvbmdDYWNoZSA9IGFkb3B0Q0YoY2FjaGUpOwotICAgIHJl
dHVybiBtYWtlVW5pcXVlPFRleHR1cmVDYWNoZUNWPihjb250ZXh0LCBXVEZNb3ZlKHN0cm9uZ0Nh
Y2hlKSk7Ci19Ci0KLVRleHR1cmVDYWNoZUNWOjpUZXh0dXJlQ2FjaGVDVihHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCYgY29udGV4dCwgUmV0YWluUHRyPFRleHR1cmVDYWNoZVR5cGU+JiYgY2FjaGUp
Ci0gICAgOiBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1fY2FjaGUoY2FjaGUpCi17Ci19Ci0K
LVJldGFpblB0cjxUZXh0dXJlQ2FjaGVDVjo6VGV4dHVyZVR5cGU+IFRleHR1cmVDYWNoZUNWOjp0
ZXh0dXJlRnJvbUltYWdlKENWUGl4ZWxCdWZmZXJSZWYgaW1hZ2UsIEdDR0xlbnVtIG91dHB1dFRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSkKLXsKLSNpZiBVU0UoQU5HTEUpCi0gICAgLy8gRklYTUU6IGZp
Z3VyZSBvdXQgaG93IHRvIGRvIHRoaXMgaW50ZWdyYXRpbmcgdmlhIEFOR0xFLgotICAgIFVOVVNF
RF9QQVJBTShpbWFnZSk7Ci0gICAgVU5VU0VEX1BBUkFNKG91dHB1dFRhcmdldCk7Ci0gICAgVU5V
U0VEX1BBUkFNKGxldmVsKTsKLSAgICBVTlVTRURfUEFSQU0oaW50ZXJuYWxGb3JtYXQpOwotICAg
IFVOVVNFRF9QQVJBTShmb3JtYXQpOwotICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKLSAgICByZXR1
cm4gbnVsbHB0cjsKLSNlbHNlCi0gICAgVGV4dHVyZVR5cGUgYmFyZVZpZGVvVGV4dHVyZSA9IG51
bGxwdHI7Ci0jaWYgVVNFKE9QRU5HTF9FUykKLSAgICBzaXplX3Qgd2lkdGggPSBDVlBpeGVsQnVm
ZmVyR2V0V2lkdGgoaW1hZ2UpOwotICAgIHNpemVfdCBoZWlnaHQgPSBDVlBpeGVsQnVmZmVyR2V0
SGVpZ2h0KGltYWdlKTsKLSAgICBpZiAoa0NWUmV0dXJuU3VjY2VzcyAhPSBDVk9wZW5HTEVTVGV4
dHVyZUNhY2hlQ3JlYXRlVGV4dHVyZUZyb21JbWFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX2Nh
Y2hlLmdldCgpLCBpbWFnZSwgbnVsbHB0ciwgb3V0cHV0VGFyZ2V0LCBpbnRlcm5hbEZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBsZXZlbCwgJmJhcmVWaWRlb1RleHR1cmUpKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSNlbGlmIFVTRShPUEVOR0wpCi0gICAgVU5VU0VEX1BB
UkFNKG91dHB1dFRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGxldmVsKTsKLSAgICBVTlVTRURf
UEFSQU0oaW50ZXJuYWxGb3JtYXQpOwotICAgIFVOVVNFRF9QQVJBTShmb3JtYXQpOwotICAgIFVO
VVNFRF9QQVJBTSh0eXBlKTsKLSAgICBpZiAoa0NWUmV0dXJuU3VjY2VzcyAhPSBDVk9wZW5HTFRl
eHR1cmVDYWNoZUNyZWF0ZVRleHR1cmVGcm9tSW1hZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9j
YWNoZS5nZXQoKSwgaW1hZ2UsIG51bGxwdHIsICZiYXJlVmlkZW9UZXh0dXJlKSkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0jZW5kaWYKLSAgICBSZXRhaW5QdHI8VGV4dHVyZVR5cGU+IHZpZGVv
VGV4dHVyZSA9IGFkb3B0Q0YoYmFyZVZpZGVvVGV4dHVyZSk7Ci0KLSAgICBhdXRvIHdlYWtUaGlz
ID0gbWFrZVdlYWtQdHIoKnRoaXMpOwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCksIFt3ZWFrVGhpc10gewotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChhdXRvIGNhY2hlID0gd2Vha1RoaXMtPm1fY2Fj
aGUuZ2V0KCkpCi0jaWYgVVNFKE9QRU5HTF9FUykKLSAgICAgICAgICAgIENWT3BlbkdMRVNUZXh0
dXJlQ2FjaGVGbHVzaChjYWNoZSwgMCk7Ci0jZWxpZiBVU0UoT1BFTkdMKQotICAgICAgICAgICAg
Q1ZPcGVuR0xUZXh0dXJlQ2FjaGVGbHVzaChjYWNoZSwgMCk7Ci0jZW5kaWYKLSAgICB9KTsKLQot
ICAgIHJldHVybiB2aWRlb1RleHR1cmU7Ci0jZW5kaWYKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29waWVyQ1YuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29waWVy
Q1YuY3BwCmluZGV4IGFhZmQ4MjM3ZGFmZjllZTk1NjJmMjA3MmU0MTdhZWI4YmI4ZWEwZjMuLjVh
MzI4MjI0OTUwN2FkMGM0MGVjYjIyNDQwZmFhOWJlMzBhMjI3ODggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGllckNWLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3Bp
ZXJDVi5jcHAKQEAgLTI4LDE3ICsyOCwxMiBAQAogCiAjaW5jbHVkZSAiRm91ckNDLmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIlRleHR1cmVDYWNoZUNWLmgiCiAjaW5jbHVkZSA8
cGFsL3NwaS9jb2NvYS9JT1N1cmZhY2VTUEkuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgogCi0jaWYgVVNFKE9QRU5HTF9FUykKLSNpbmNsdWRlIDxPcGVuR0xFUy9FUzMv
Z2xleHQuaD4KLSNlbmRpZgogCi0jaWYgVVNFKEFOR0xFKQogI2RlZmluZSBFR0xfRUdMX1BST1RP
VFlQRVMgMAogI2luY2x1ZGUgPEFOR0xFL2VnbC5oPgogI2luY2x1ZGUgPEFOR0xFL2VnbGV4dC5o
PgpAQCAtNDksMTIgKzQ0LDEzOCBAQAogI2RlZmluZSBHTF9BTkdMRV9leHBsaWNpdF9jb250ZXh0
CiAjaW5jbHVkZSA8QU5HTEUvZ2wyZXh0Lmg+CiAjaW5jbHVkZSA8QU5HTEUvZ2wyZXh0X2FuZ2xl
Lmg+Ci0jZW5kaWYKIAogI2luY2x1ZGUgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorbmFtZXNwYWNlIHsKKy8vIFRPRE86IEZpeCBzdHlsZSB0byBhbGxvdyBt
dWx0aS1saW5lIHJhdyBzdHJpbmdzLgorI2RlZmluZSBTSEFERVIodGV4dCkgI3RleHQjI19zCisK
K2NvbnN0IEFTQ0lJTGl0ZXJhbCBzX3JnYlZlcnRleFNoYWRlciB7IFNIQURFUigKKyAgICBhdHRy
aWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOworICAgIHVuaWZvcm0gaW50IHVfZmxpcFk7CisgICAgdmFy
eWluZyB2ZWMyIHZfdGV4dHVyZVBvc2l0aW9uOworICAgIHZvaWQgbWFpbigpCisgICAgeworICAg
ICAgICB2X3RleHR1cmVQb3NpdGlvbiA9IHZlYzIoKGFfcG9zaXRpb24ueCArIDEuMCkgLyAyLjAs
IChhX3Bvc2l0aW9uLnkgKyAxLjApIC8gMi4wKTsKKyAgICAgICAgaWYgKHVfZmxpcFkgPT0gMSkK
KyAgICAgICAgICAgIHZfdGV4dHVyZVBvc2l0aW9uLnkgPSAxLjAgLSB2X3RleHR1cmVQb3NpdGlv
bi55OworICAgICAgICBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247CisgICAgfSkKK307CisKK2Nv
bnN0IEFTQ0lJTGl0ZXJhbCBzX3JnYkZyYWdtZW50U2hhZGVyVGV4dHVyZTJEIHsgU0hBREVSKAor
ICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgIHVuaWZvcm0gc2FtcGxlcjJEIHVfdGV4
dHVyZTsKKyAgICB2YXJ5aW5nIHZlYzIgdl90ZXh0dXJlUG9zaXRpb247CisgICAgdW5pZm9ybSBp
bnQgdV9wcmVtdWx0aXBseTsKKyAgICB1bmlmb3JtIHZlYzIgdV90ZXh0dXJlRGltZW5zaW9uczsK
KyAgICB1bmlmb3JtIGludCB1X3N3YXBDb2xvckNoYW5uZWxzOworICAgIHZvaWQgbWFpbigpCisg
ICAgeworICAgICAgICB2ZWMyIHRleFBvcyA9IHZlYzIodl90ZXh0dXJlUG9zaXRpb24ueCAqIHVf
dGV4dHVyZURpbWVuc2lvbnMueCwgdl90ZXh0dXJlUG9zaXRpb24ueSAqIHVfdGV4dHVyZURpbWVu
c2lvbnMueSk7CisgICAgICAgIHZlYzQgY29sb3IgPSB0ZXh0dXJlMkQodV90ZXh0dXJlLCB0ZXhQ
b3MpOworICAgICAgICBpZiAodV9zd2FwQ29sb3JDaGFubmVscyA9PSAxKQorICAgICAgICAgICAg
Y29sb3IucmdiYSA9IGNvbG9yLmJncmE7CisgICAgICAgIGlmICh1X3ByZW11bHRpcGx5ID09IDEp
CisgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGNvbG9yLnIgKiBjb2xvci5hLCBjb2xv
ci5nICogY29sb3IuYSwgY29sb3IuYiAqIGNvbG9yLmEsIGNvbG9yLmEpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSBjb2xvcjsKKyAgICB9KQorfTsKKworY29uc3Qg
QVNDSUlMaXRlcmFsIHNfcmdiRnJhZ21lbnRTaGFkZXJUZXh0dXJlUmVjdGFuZ2xlIHsgU0hBREVS
KAorICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworICAgIHVuaWZvcm0gc2FtcGxlcjJEUmVj
dCB1X3RleHR1cmU7CisgICAgdmFyeWluZyB2ZWMyIHZfdGV4dHVyZVBvc2l0aW9uOworICAgIHVu
aWZvcm0gaW50IHVfcHJlbXVsdGlwbHk7CisgICAgdW5pZm9ybSB2ZWMyIHVfdGV4dHVyZURpbWVu
c2lvbnM7CisgICAgdW5pZm9ybSBpbnQgdV9zd2FwQ29sb3JDaGFubmVsczsKKyAgICB2b2lkIG1h
aW4oKQorICAgIHsKKyAgICAgICAgdmVjMiB0ZXhQb3MgPSB2ZWMyKHZfdGV4dHVyZVBvc2l0aW9u
LnggKiB1X3RleHR1cmVEaW1lbnNpb25zLngsIHZfdGV4dHVyZVBvc2l0aW9uLnkgKiB1X3RleHR1
cmVEaW1lbnNpb25zLnkpOworICAgICAgICB2ZWM0IGNvbG9yID0gdGV4dHVyZTJEUmVjdCh1X3Rl
eHR1cmUsIHRleFBvcyk7CisgICAgICAgIGlmICh1X3N3YXBDb2xvckNoYW5uZWxzID09IDEpCisg
ICAgICAgICAgICBjb2xvci5yZ2JhID0gY29sb3IuYmdyYTsKKyAgICAgICAgaWYgKHVfcHJlbXVs
dGlwbHkgPT0gMSkKKyAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoY29sb3IuciAqIGNv
bG9yLmEsIGNvbG9yLmcgKiBjb2xvci5hLCBjb2xvci5iICogY29sb3IuYSwgY29sb3IuYSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IGNvbG9yOworICAgIH0pCit9
OworCitjb25zdCBBU0NJSUxpdGVyYWwgc195dXZWZXJ0ZXhTaGFkZXJUZXh0dXJlMkQgeyBTSEFE
RVIoCisgICAgYXR0cmlidXRlIHZlYzIgYV9wb3NpdGlvbjsKKyAgICB1bmlmb3JtIHZlYzIgdV95
VGV4dHVyZVNpemU7CisgICAgdW5pZm9ybSB2ZWMyIHVfdXZUZXh0dXJlU2l6ZTsKKyAgICB1bmlm
b3JtIGludCB1X2ZsaXBZOworICAgIHZhcnlpbmcgdmVjMiB2X3lUZXh0dXJlQ29vcmRpbmF0ZTsK
KyAgICB2YXJ5aW5nIHZlYzIgdl91dlRleHR1cmVDb29yZGluYXRlOworICAgIHZvaWQgbWFpbigp
CisgICAgeworICAgICAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoYV9wb3NpdGlvbiwgMCwgMS4wKTsK
KyAgICAgICAgdmVjMiBub3JtYWxpemVkUG9zaXRpb24gPSBhX3Bvc2l0aW9uICogLjUgKyAuNTsK
KyAgICAgICAgaWYgKHVfZmxpcFkgPT0gMSkKKyAgICAgICAgICAgIG5vcm1hbGl6ZWRQb3NpdGlv
bi55ID0gMS4wIC0gbm9ybWFsaXplZFBvc2l0aW9uLnk7CisgICAgICAgIHZfeVRleHR1cmVDb29y
ZGluYXRlID0gbm9ybWFsaXplZFBvc2l0aW9uOworICAgICAgICB2X3V2VGV4dHVyZUNvb3JkaW5h
dGUgPSBub3JtYWxpemVkUG9zaXRpb247CisgICAgfSkgCit9OworCitjb25zdCBBU0NJSUxpdGVy
YWwgc195dXZWZXJ0ZXhTaGFkZXJUZXh0dXJlUmVjdGFuZ2xlIHsgU0hBREVSKAorICAgIGF0dHJp
YnV0ZSB2ZWMyIGFfcG9zaXRpb247CisgICAgdW5pZm9ybSB2ZWMyIHVfeVRleHR1cmVTaXplOwor
ICAgIHVuaWZvcm0gdmVjMiB1X3V2VGV4dHVyZVNpemU7CisgICAgdW5pZm9ybSBpbnQgdV9mbGlw
WTsKKyAgICB2YXJ5aW5nIHZlYzIgdl95VGV4dHVyZUNvb3JkaW5hdGU7CisgICAgdmFyeWluZyB2
ZWMyIHZfdXZUZXh0dXJlQ29vcmRpbmF0ZTsKKyAgICB2b2lkIG1haW4oKSAKKyAgICB7CisgICAg
ICAgIGdsX1Bvc2l0aW9uID0gdmVjNChhX3Bvc2l0aW9uLCAwLCAxLjApOworICAgICAgICB2ZWMy
IG5vcm1hbGl6ZWRQb3NpdGlvbiA9IGFfcG9zaXRpb24gKiAuNSArIC41OworICAgICAgICBpZiAo
dV9mbGlwWSA9PSAxKQorICAgICAgICAgICAgbm9ybWFsaXplZFBvc2l0aW9uLnkgPSAxLjAgLSBu
b3JtYWxpemVkUG9zaXRpb24ueTsKKyAgICAgICAgdl95VGV4dHVyZUNvb3JkaW5hdGUgPSBub3Jt
YWxpemVkUG9zaXRpb24gKiB1X3lUZXh0dXJlU2l6ZTsKKyAgICAgICAgdl91dlRleHR1cmVDb29y
ZGluYXRlID0gbm9ybWFsaXplZFBvc2l0aW9uICogdV91dlRleHR1cmVTaXplOworICAgIH0pCit9
OworCitjb25zdCBBU0NJSUxpdGVyYWwgc195dXZGcmFnbWVudFNoYWRlclRleHR1cmUyRCB7IFNI
QURFUigKKyAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKyAgICB1bmlmb3JtIHNhbXBsZXIy
RCB1X3lUZXh0dXJlOworICAgIHVuaWZvcm0gc2FtcGxlcjJEIHVfdXZUZXh0dXJlOworICAgIHVu
aWZvcm0gbWF0NCB1X2NvbG9yTWF0cml4OworICAgIHZhcnlpbmcgdmVjMiB2X3lUZXh0dXJlQ29v
cmRpbmF0ZTsKKyAgICB2YXJ5aW5nIHZlYzIgdl91dlRleHR1cmVDb29yZGluYXRlOworICAgIHZv
aWQgbWFpbigpCisgICAgeworICAgICAgICB2ZWM0IHl1djsKKyAgICAgICAgeXV2LnIgPSB0ZXh0
dXJlMkQodV95VGV4dHVyZSwgdl95VGV4dHVyZUNvb3JkaW5hdGUpLnI7CisgICAgICAgIHl1di5n
YiA9IHRleHR1cmUyRCh1X3V2VGV4dHVyZSwgdl91dlRleHR1cmVDb29yZGluYXRlKS5yZzsKKyAg
ICAgICAgeXV2LmEgPSAxLjA7CisgICAgICAgIGdsX0ZyYWdDb2xvciA9IHl1diAqIHVfY29sb3JN
YXRyaXg7CisgICAgfSkKK307CisKK2NvbnN0IEFTQ0lJTGl0ZXJhbCBzX3l1dkZyYWdtZW50U2hh
ZGVyVGV4dHVyZVJlY3RhbmdsZSB7IFNIQURFUigKKyAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKyAgICB1bmlmb3JtIHNhbXBsZXIyRFJlY3QgdV95VGV4dHVyZTsKKyAgICB1bmlmb3JtIHNh
bXBsZXIyRFJlY3QgdV91dlRleHR1cmU7CisgICAgdW5pZm9ybSBtYXQ0IHVfY29sb3JNYXRyaXg7
CisgICAgdmFyeWluZyB2ZWMyIHZfeVRleHR1cmVDb29yZGluYXRlOworICAgIHZhcnlpbmcgdmVj
MiB2X3V2VGV4dHVyZUNvb3JkaW5hdGU7CisgICAgdm9pZCBtYWluKCkKKyAgICB7CisgICAgICAg
IHZlYzQgeXV2OworICAgICAgICB5dXYuciA9IHRleHR1cmUyRFJlY3QodV95VGV4dHVyZSwgdl95
VGV4dHVyZUNvb3JkaW5hdGUpLnI7CisgICAgICAgIHl1di5nYiA9IHRleHR1cmUyRFJlY3QodV91
dlRleHR1cmUsIHZfdXZUZXh0dXJlQ29vcmRpbmF0ZSkucmc7CisgICAgICAgIHl1di5hID0gMS4w
OworICAgICAgICBnbF9GcmFnQ29sb3IgPSB5dXYgKiB1X2NvbG9yTWF0cml4OworICAgIH0pCit9
OworCiBlbnVtIGNsYXNzIFBpeGVsUmFuZ2UgewogICAgIFVua25vd24sCiAgICAgVmlkZW8sCkBA
IC0zNzIsNiArNDkzLDggQEAgc3RhdGljIGNvbnN0IFZlY3RvcjxHTGZsb2F0PiBZQ2JDclRvUkdC
TWF0cml4Rm9yUmFuZ2VBbmRUcmFuc2ZlckZ1bmN0aW9uKFBpeGVsUmEKICAgICByZXR1cm4gaXRl
cmF0b3ItPnNlY29uZDsKIH0KIAorfQorCiBWaWRlb1RleHR1cmVDb3BpZXJDVjo6VmlkZW9UZXh0
dXJlQ29waWVyQ1YoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmIGNvbnRleHQpCiAgICAgOiBtX3No
YXJlZENvbnRleHQoY29udGV4dCkKICAgICAsIG1fY29udGV4dChHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6Y3JlYXRlU2hhcmVkKGNvbnRleHQpKQpAQCAtNDk4LDIwICs2MjEsOCBAQCBzdGF0aWMg
U3RyaW5nTWFwJiBlbnVtVG9TdHJpbmdNYXAoKQogCiBib29sIFZpZGVvVGV4dHVyZUNvcGllckNW
Ojppbml0aWFsaXplQ29udGV4dE9iamVjdHMoKQogewotICAgIFN0cmluZ0J1aWxkZXIgdmVydGV4
U2hhZGVyU291cmNlOwotICAgIHZlcnRleFNoYWRlclNvdXJjZS5hcHBlbmRMaXRlcmFsKCJhdHRy
aWJ1dGUgdmVjNCBhX3Bvc2l0aW9uO1xuIik7Ci0gICAgdmVydGV4U2hhZGVyU291cmNlLmFwcGVu
ZExpdGVyYWwoInVuaWZvcm0gaW50IHVfZmxpcFk7XG4iKTsKLSAgICB2ZXJ0ZXhTaGFkZXJTb3Vy
Y2UuYXBwZW5kTGl0ZXJhbCgidmFyeWluZyB2ZWMyIHZfdGV4dHVyZVBvc2l0aW9uO1xuIik7Ci0g
ICAgdmVydGV4U2hhZGVyU291cmNlLmFwcGVuZExpdGVyYWwoInZvaWQgbWFpbigpIHtcbiIpOwot
ICAgIHZlcnRleFNoYWRlclNvdXJjZS5hcHBlbmRMaXRlcmFsKCIgICAgdl90ZXh0dXJlUG9zaXRp
b24gPSB2ZWMyKChhX3Bvc2l0aW9uLnggKyAxLjApIC8gMi4wLCAoYV9wb3NpdGlvbi55ICsgMS4w
KSAvIDIuMCk7XG4iKTsKLSAgICB2ZXJ0ZXhTaGFkZXJTb3VyY2UuYXBwZW5kTGl0ZXJhbCgiICAg
IGlmICh1X2ZsaXBZID09IDEpIHtcbiIpOwotICAgIHZlcnRleFNoYWRlclNvdXJjZS5hcHBlbmRM
aXRlcmFsKCIgICAgICAgIHZfdGV4dHVyZVBvc2l0aW9uLnkgPSAxLjAgLSB2X3RleHR1cmVQb3Np
dGlvbi55O1xuIik7Ci0gICAgdmVydGV4U2hhZGVyU291cmNlLmFwcGVuZExpdGVyYWwoIiAgICB9
XG4iKTsKLSAgICB2ZXJ0ZXhTaGFkZXJTb3VyY2UuYXBwZW5kTGl0ZXJhbCgiICAgIGdsX1Bvc2l0
aW9uID0gYV9wb3NpdGlvbjtcbiIpOwotICAgIHZlcnRleFNoYWRlclNvdXJjZS5hcHBlbmRMaXRl
cmFsKCJ9XG4iKTsKLQogICAgIFBsYXRmb3JtR0xPYmplY3QgdmVydGV4U2hhZGVyID0gbV9jb250
ZXh0LT5jcmVhdGVTaGFkZXIoR3JhcGhpY3NDb250ZXh0R0w6OlZFUlRFWF9TSEFERVIpOwotICAg
IG1fY29udGV4dC0+c2hhZGVyU291cmNlKHZlcnRleFNoYWRlciwgdmVydGV4U2hhZGVyU291cmNl
LnRvU3RyaW5nKCkpOworICAgIG1fY29udGV4dC0+c2hhZGVyU291cmNlKHZlcnRleFNoYWRlciwg
c19yZ2JWZXJ0ZXhTaGFkZXIpOwogICAgIG1fY29udGV4dC0+Y29tcGlsZVNoYWRlckRpcmVjdCh2
ZXJ0ZXhTaGFkZXIpOwogCiAgICAgR0NHTGludCB2YWx1ZSA9IDA7CkBAIC01MjIsNDMgKzYzMywx
MiBAQCBib29sIFZpZGVvVGV4dHVyZUNvcGllckNWOjppbml0aWFsaXplQ29udGV4dE9iamVjdHMo
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgU3RyaW5nQnVpbGRlciBmcmFn
bWVudFNoYWRlclNvdXJjZTsKLQotI2lmIFVTRShPUEVOR0xfRVMpIHx8IFVTRShBTkdMRSkKLSAg
ICBmcmFnbWVudFNoYWRlclNvdXJjZS5hcHBlbmRMaXRlcmFsKCJwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDtcbiIpOwotI2VuZGlmCi0jaWYgVVNFKE9QRU5HTF9FUykgfHwgKFVTRShBTkdMRSkgJiYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkpCi0gICAgZnJhZ21lbnRTaGFkZXJTb3VyY2UuYXBwZW5kTGl0
ZXJhbCgidW5pZm9ybSBzYW1wbGVyMkQgdV90ZXh0dXJlO1xuIik7Ci0jZWxpZiBVU0UoT1BFTkdM
KSB8fCAoVVNFKEFOR0xFKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkpCi0gICAgZnJhZ21lbnRT
aGFkZXJTb3VyY2UuYXBwZW5kTGl0ZXJhbCgidW5pZm9ybSBzYW1wbGVyMkRSZWN0IHVfdGV4dHVy
ZTtcbiIpOwotI2Vsc2UKLSNlcnJvciBVbnN1cHBvcnRlZCBjb25maWd1cmF0aW9uCi0jZW5kaWYK
LSAgICBmcmFnbWVudFNoYWRlclNvdXJjZS5hcHBlbmRMaXRlcmFsKCJ2YXJ5aW5nIHZlYzIgdl90
ZXh0dXJlUG9zaXRpb247XG4iKTsKLSAgICBmcmFnbWVudFNoYWRlclNvdXJjZS5hcHBlbmRMaXRl
cmFsKCJ1bmlmb3JtIGludCB1X3ByZW11bHRpcGx5O1xuIik7Ci0gICAgZnJhZ21lbnRTaGFkZXJT
b3VyY2UuYXBwZW5kTGl0ZXJhbCgidW5pZm9ybSB2ZWMyIHVfdGV4dHVyZURpbWVuc2lvbnM7XG4i
KTsKLSAgICBmcmFnbWVudFNoYWRlclNvdXJjZS5hcHBlbmRMaXRlcmFsKCJ1bmlmb3JtIGludCB1
X3N3YXBDb2xvckNoYW5uZWxzO1xuIik7Ci0gICAgZnJhZ21lbnRTaGFkZXJTb3VyY2UuYXBwZW5k
TGl0ZXJhbCgidm9pZCBtYWluKCkge1xuIik7Ci0gICAgZnJhZ21lbnRTaGFkZXJTb3VyY2UuYXBw
ZW5kTGl0ZXJhbCgiICAgIHZlYzIgdGV4UG9zID0gdmVjMih2X3RleHR1cmVQb3NpdGlvbi54ICog
dV90ZXh0dXJlRGltZW5zaW9ucy54LCB2X3RleHR1cmVQb3NpdGlvbi55ICogdV90ZXh0dXJlRGlt
ZW5zaW9ucy55KTtcbiIpOwotI2lmIFVTRShPUEVOR0xfRVMpIHx8IChVU0UoQU5HTEUpICYmIFBM
QVRGT1JNKElPU19GQU1JTFkpKQotICAgIGZyYWdtZW50U2hhZGVyU291cmNlLmFwcGVuZExpdGVy
YWwoIiAgICB2ZWM0IGNvbG9yID0gdGV4dHVyZTJEKHVfdGV4dHVyZSwgdGV4UG9zKTtcbiIpOwot
I2VsaWYgVVNFKE9QRU5HTCkgfHwgKFVTRShBTkdMRSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkp
KQotICAgIGZyYWdtZW50U2hhZGVyU291cmNlLmFwcGVuZExpdGVyYWwoIiAgICB2ZWM0IGNvbG9y
ID0gdGV4dHVyZTJEUmVjdCh1X3RleHR1cmUsIHRleFBvcyk7XG4iKTsKLSNlbHNlCi0jZXJyb3Ig
VW5zdXBwb3J0ZWQgY29uZmlndXJhdGlvbgotI2VuZGlmCi0gICAgZnJhZ21lbnRTaGFkZXJTb3Vy
Y2UuYXBwZW5kTGl0ZXJhbCgiICAgIGlmICh1X3N3YXBDb2xvckNoYW5uZWxzID09IDEpIHtcbiIp
OwotICAgIGZyYWdtZW50U2hhZGVyU291cmNlLmFwcGVuZExpdGVyYWwoIiAgICAgICAgY29sb3Iu
cmdiYSA9IGNvbG9yLmJncmE7XG4iKTsKLSAgICBmcmFnbWVudFNoYWRlclNvdXJjZS5hcHBlbmRM
aXRlcmFsKCIgICAgfVxuIik7Ci0gICAgZnJhZ21lbnRTaGFkZXJTb3VyY2UuYXBwZW5kTGl0ZXJh
bCgiICAgIGlmICh1X3ByZW11bHRpcGx5ID09IDEpIHtcbiIpOwotICAgIGZyYWdtZW50U2hhZGVy
U291cmNlLmFwcGVuZExpdGVyYWwoIiAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChjb2xvci5y
ICogY29sb3IuYSwgY29sb3IuZyAqIGNvbG9yLmEsIGNvbG9yLmIgKiBjb2xvci5hLCBjb2xvci5h
KTtcbiIpOwotICAgIGZyYWdtZW50U2hhZGVyU291cmNlLmFwcGVuZExpdGVyYWwoIiAgICB9IGVs
c2Uge1xuIik7Ci0gICAgZnJhZ21lbnRTaGFkZXJTb3VyY2UuYXBwZW5kTGl0ZXJhbCgiICAgICAg
ICBnbF9GcmFnQ29sb3IgPSBjb2xvcjtcbiIpOwotICAgIGZyYWdtZW50U2hhZGVyU291cmNlLmFw
cGVuZExpdGVyYWwoIiAgICB9XG4iKTsKLSAgICBmcmFnbWVudFNoYWRlclNvdXJjZS5hcHBlbmRM
aXRlcmFsKCJ9XG4iKTsKLQorICAgIGNvbnN0IGJvb2wgdXNlVGV4dHVyZTJEID0gR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OklPU3VyZmFjZVRleHR1cmVUYXJnZXQoKSA9PSBHcmFwaGljc0NvbnRl
eHRHTDo6VEVYVFVSRV8yRDsKICAgICBQbGF0Zm9ybUdMT2JqZWN0IGZyYWdtZW50U2hhZGVyID0g
bV9jb250ZXh0LT5jcmVhdGVTaGFkZXIoR3JhcGhpY3NDb250ZXh0R0w6OkZSQUdNRU5UX1NIQURF
Uik7Ci0gICAgbV9jb250ZXh0LT5zaGFkZXJTb3VyY2UoZnJhZ21lbnRTaGFkZXIsIGZyYWdtZW50
U2hhZGVyU291cmNlLnRvU3RyaW5nKCkpOworICAgIGlmICh1c2VUZXh0dXJlMkQpCisgICAgICAg
IG1fY29udGV4dC0+c2hhZGVyU291cmNlKGZyYWdtZW50U2hhZGVyLCBzX3JnYkZyYWdtZW50U2hh
ZGVyVGV4dHVyZTJEKTsKKyAgICBlbHNlCisgICAgICAgIG1fY29udGV4dC0+c2hhZGVyU291cmNl
KGZyYWdtZW50U2hhZGVyLCBzX3JnYkZyYWdtZW50U2hhZGVyVGV4dHVyZVJlY3RhbmdsZSk7CiAg
ICAgbV9jb250ZXh0LT5jb21waWxlU2hhZGVyRGlyZWN0KGZyYWdtZW50U2hhZGVyKTsKIAogICAg
IG1fY29udGV4dC0+Z2V0U2hhZGVyaXYoZnJhZ21lbnRTaGFkZXIsIEdyYXBoaWNzQ29udGV4dEdM
OjpDT01QSUxFX1NUQVRVUywgJnZhbHVlKTsKQEAgLTYxMCwzMyArNjkwLDE0IEBAIGJvb2wgVmlk
ZW9UZXh0dXJlQ29waWVyQ1Y6OmluaXRpYWxpemVDb250ZXh0T2JqZWN0cygpCiAKIGJvb2wgVmlk
ZW9UZXh0dXJlQ29waWVyQ1Y6OmluaXRpYWxpemVVVkNvbnRleHRPYmplY3RzKCkKIHsKLSAgICBT
dHJpbmcgdmVydGV4U2hhZGVyU291cmNlIHsKLSAgICAgICAgImF0dHJpYnV0ZSB2ZWMyIGFfcG9z
aXRpb247XG4iCi0gICAgICAgICJ1bmlmb3JtIHZlYzIgdV95VGV4dHVyZVNpemU7XG4iCi0gICAg
ICAgICJ1bmlmb3JtIHZlYzIgdV91dlRleHR1cmVTaXplO1xuIgotICAgICAgICAidW5pZm9ybSBp
bnQgdV9mbGlwWTtcbiIKLSAgICAgICAgInZhcnlpbmcgdmVjMiB2X3lUZXh0dXJlQ29vcmRpbmF0
ZTtcbiIKLSAgICAgICAgInZhcnlpbmcgdmVjMiB2X3V2VGV4dHVyZUNvb3JkaW5hdGU7XG4iCi0g
ICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBnbF9Qb3NpdGlvbiA9IHZlYzQo
YV9wb3NpdGlvbiwgMCwgMS4wKTtcbiIKLSAgICAgICAgIiAgIHZlYzIgbm9ybWFsaXplZFBvc2l0
aW9uID0gYV9wb3NpdGlvbiAqIC41ICsgLjU7XG4iCi0gICAgICAgICIgICBpZiAodV9mbGlwWSA9
PSAxKSB7XG4iCi0gICAgICAgICIgICAgICAgbm9ybWFsaXplZFBvc2l0aW9uLnkgPSAxLjAgLSBu
b3JtYWxpemVkUG9zaXRpb24ueTtcbiIKLSAgICAgICAgIiAgIH1cbiIKLSNpZiBVU0UoT1BFTkdM
X0VTKSB8fCAoVVNFKEFOR0xFKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKSkKLSAgICAgICAgIiAg
IHZfeVRleHR1cmVDb29yZGluYXRlID0gbm9ybWFsaXplZFBvc2l0aW9uO1xuIgotICAgICAgICAi
ICAgdl91dlRleHR1cmVDb29yZGluYXRlID0gbm9ybWFsaXplZFBvc2l0aW9uO1xuIgotI2VsaWYg
VVNFKE9QRU5HTCkgfHwgKFVTRShBTkdMRSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpKQotICAg
ICAgICAiICAgdl95VGV4dHVyZUNvb3JkaW5hdGUgPSBub3JtYWxpemVkUG9zaXRpb24gKiB1X3lU
ZXh0dXJlU2l6ZTtcbiIKLSAgICAgICAgIiAgIHZfdXZUZXh0dXJlQ29vcmRpbmF0ZSA9IG5vcm1h
bGl6ZWRQb3NpdGlvbiAqIHVfdXZUZXh0dXJlU2l6ZTtcbiIKLSNlbHNlCi0jZXJyb3IgVW5zdXBw
b3J0ZWQgY29uZmlndXJhdGlvbgotI2VuZGlmCi0gICAgICAgICJ9XG4iX3MKLSAgICB9OworICAg
IGNvbnN0IGJvb2wgdXNlVGV4dHVyZTJEID0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OklPU3Vy
ZmFjZVRleHR1cmVUYXJnZXQoKSA9PSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRDsKIAog
ICAgIFBsYXRmb3JtR0xPYmplY3QgdmVydGV4U2hhZGVyID0gbV9jb250ZXh0LT5jcmVhdGVTaGFk
ZXIoR3JhcGhpY3NDb250ZXh0R0w6OlZFUlRFWF9TSEFERVIpOwotICAgIG1fY29udGV4dC0+c2hh
ZGVyU291cmNlKHZlcnRleFNoYWRlciwgdmVydGV4U2hhZGVyU291cmNlKTsKKyAgICBpZiAodXNl
VGV4dHVyZTJEKQorICAgICAgICBtX2NvbnRleHQtPnNoYWRlclNvdXJjZSh2ZXJ0ZXhTaGFkZXIs
IHNfeXV2VmVydGV4U2hhZGVyVGV4dHVyZTJEKTsKKyAgICBlbHNlCisgICAgICAgIG1fY29udGV4
dC0+c2hhZGVyU291cmNlKHZlcnRleFNoYWRlciwgc195dXZWZXJ0ZXhTaGFkZXJUZXh0dXJlUmVj
dGFuZ2xlKTsKKwogICAgIG1fY29udGV4dC0+Y29tcGlsZVNoYWRlckRpcmVjdCh2ZXJ0ZXhTaGFk
ZXIpOwogCiAgICAgR0NHTGludCBzdGF0dXMgPSAwOwpAQCAtNjQ3LDM1ICs3MDgsMTIgQEAgYm9v
bCBWaWRlb1RleHR1cmVDb3BpZXJDVjo6aW5pdGlhbGl6ZVVWQ29udGV4dE9iamVjdHMoKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgU3RyaW5nIGZyYWdtZW50U2hhZGVyU291
cmNlIHsKLSNpZiBVU0UoT1BFTkdMX0VTKSB8fCBVU0UoQU5HTEUpCi0gICAgICAgICJwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDtcbiIKLSNlbmRpZgotI2lmIFVTRShPUEVOR0xfRVMpIHx8IChVU0Uo
QU5HTEUpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpKQotICAgICAgICAiI2RlZmluZSBTQU1QTEVS
VFlQRSBzYW1wbGVyMkRcbiIKLSAgICAgICAgIiNkZWZpbmUgVEVYVFVSRUZVTkMgdGV4dHVyZTJE
XG4iCi0jZWxpZiBVU0UoT1BFTkdMKSB8fCAoVVNFKEFOR0xFKSAmJiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkpCi0gICAgICAgICIjZGVmaW5lIFNBTVBMRVJUWVBFIHNhbXBsZXIyRFJlY3RcbiIKLSAg
ICAgICAgIiNkZWZpbmUgVEVYVFVSRUZVTkMgdGV4dHVyZTJEUmVjdFxuIgotI2Vsc2UKLSNlcnJv
ciBVbnN1cHBvcnRlZCBjb25maWd1cmF0aW9uCi0jZW5kaWYKLSAgICAgICAgInVuaWZvcm0gU0FN
UExFUlRZUEUgdV95VGV4dHVyZTtcbiIKLSAgICAgICAgInVuaWZvcm0gU0FNUExFUlRZUEUgdV91
dlRleHR1cmU7XG4iCi0gICAgICAgICJ1bmlmb3JtIG1hdDQgdV9jb2xvck1hdHJpeDtcbiIKLSAg
ICAgICAgInZhcnlpbmcgdmVjMiB2X3lUZXh0dXJlQ29vcmRpbmF0ZTtcbiIKLSAgICAgICAgInZh
cnlpbmcgdmVjMiB2X3V2VGV4dHVyZUNvb3JkaW5hdGU7XG4iCi0gICAgICAgICJ2b2lkIG1haW4o
KSB7XG4iCi0gICAgICAgICIgICAgdmVjNCB5dXY7XG4iCi0gICAgICAgICIgICAgeXV2LnIgPSBU
RVhUVVJFRlVOQyh1X3lUZXh0dXJlLCB2X3lUZXh0dXJlQ29vcmRpbmF0ZSkucjtcbiIKLSAgICAg
ICAgIiAgICB5dXYuZ2IgPSBURVhUVVJFRlVOQyh1X3V2VGV4dHVyZSwgdl91dlRleHR1cmVDb29y
ZGluYXRlKS5yZztcbiIKLSAgICAgICAgIiAgICB5dXYuYSA9IDEuMDtcbiIKLSAgICAgICAgIiAg
ICBnbF9GcmFnQ29sb3IgPSB5dXYgKiB1X2NvbG9yTWF0cml4O1xuIgotICAgICAgICAifVxuIl9z
Ci0gICAgfTsKLQogICAgIFBsYXRmb3JtR0xPYmplY3QgZnJhZ21lbnRTaGFkZXIgPSBtX2NvbnRl
eHQtPmNyZWF0ZVNoYWRlcihHcmFwaGljc0NvbnRleHRHTDo6RlJBR01FTlRfU0hBREVSKTsKLSAg
ICBtX2NvbnRleHQtPnNoYWRlclNvdXJjZShmcmFnbWVudFNoYWRlciwgZnJhZ21lbnRTaGFkZXJT
b3VyY2UpOworICAgIGlmICh1c2VUZXh0dXJlMkQpCisgICAgICAgIG1fY29udGV4dC0+c2hhZGVy
U291cmNlKGZyYWdtZW50U2hhZGVyLCBzX3l1dkZyYWdtZW50U2hhZGVyVGV4dHVyZTJEKTsKKyAg
ICBlbHNlCisgICAgICAgIG1fY29udGV4dC0+c2hhZGVyU291cmNlKGZyYWdtZW50U2hhZGVyLCBz
X3l1dkZyYWdtZW50U2hhZGVyVGV4dHVyZVJlY3RhbmdsZSk7CisKICAgICBtX2NvbnRleHQtPmNv
bXBpbGVTaGFkZXJEaXJlY3QoZnJhZ21lbnRTaGFkZXIpOwogCiAgICAgbV9jb250ZXh0LT5nZXRT
aGFkZXJpdihmcmFnbWVudFNoYWRlciwgR3JhcGhpY3NDb250ZXh0R0w6OkNPTVBJTEVfU1RBVFVT
LCAmc3RhdHVzKTsKQEAgLTcyNSw3ICs3NjMsNiBAQCBib29sIFZpZGVvVGV4dHVyZUNvcGllckNW
Ojppbml0aWFsaXplVVZDb250ZXh0T2JqZWN0cygpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLSNp
ZiBVU0UoQU5HTEUpCiB2b2lkKiBWaWRlb1RleHR1cmVDb3BpZXJDVjo6YXR0YWNoSU9TdXJmYWNl
VG9UZXh0dXJlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gdHlwZSwgSU9TdXJmYWNlUmVm
IHN1cmZhY2UsIEdDR0x1aW50IHBsYW5lKQogewogICAgIGF1dG8gZGlzcGxheSA9IG1fY29udGV4
dC0+cGxhdGZvcm1EaXNwbGF5KCk7CkBAIC03MzksNyArNzc2LDcgQEAgdm9pZCogVmlkZW9UZXh0
dXJlQ29waWVyQ1Y6OmF0dGFjaElPU3VyZmFjZVRvVGV4dHVyZShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIGkKICAgICAgICAgTE9HKFdlYkdMLCAiVW5rbm93biB0ZXh0dXJlIHRhcmdldCAlZC4i
LCBzdGF0aWNfY2FzdDxpbnQ+KHRhcmdldCkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9Ci0gICAgaWYgKGVnbFRleHR1cmVUYXJnZXQgIT0gR3JhcGhpY3NDb250ZXh0R0w6OkVHTElP
U3VyZmFjZVRleHR1cmVUYXJnZXQoKSkgeworICAgIGlmIChlZ2xUZXh0dXJlVGFyZ2V0ICE9IEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpFR0xJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0KCkpIHsKICAg
ICAgICAgTE9HKFdlYkdMLCAiTWlzbWF0Y2ggaW4gRUdMIHRleHR1cmUgdGFyZ2V0ICVkLiIsIHN0
YXRpY19jYXN0PGludD4odGFyZ2V0KSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
QEAgLTc3MiwzMSArODA5LDExIEBAIHZvaWQgVmlkZW9UZXh0dXJlQ29waWVyQ1Y6OmRldGFjaElP
U3VyZmFjZUZyb21UZXh0dXJlKHZvaWQqIGhhbmRsZSkKICAgICBFR0xfUmVsZWFzZVRleEltYWdl
KGRpc3BsYXksIGhhbmRsZSwgRUdMX0JBQ0tfQlVGRkVSKTsKICAgICBFR0xfRGVzdHJveVN1cmZh
Y2UoZGlzcGxheSwgaGFuZGxlKTsKIH0KLSNlbmRpZgogCiBib29sIFZpZGVvVGV4dHVyZUNvcGll
ckNWOjpjb3B5SW1hZ2VUb1BsYXRmb3JtVGV4dHVyZShDVlBpeGVsQnVmZmVyUmVmIGltYWdlLCBz
aXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIFBsYXRmb3JtR0xPYmplY3Qgb3V0cHV0VGV4dHVy
ZSwgR0NHTGVudW0gb3V0cHV0VGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5h
bEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5
QWxwaGEsIGJvb2wgZmxpcFkpCiB7Ci0gICAgLy8gQ1ZPcGVuR0xUZXh0dXJlQ2FjaGUgc2VlbXMg
dG8gYmUgZGlzYWJsZWQgc2luY2UgdGhlIGRlcHJlY2F0aW9uIG9mCi0gICAgLy8gT3BlbkdMLiBU
byBhdm9pZCBwb3J0aW5nIHVudXNlZCBjb2RlIHRvIHRoZSBBTkdMRSBjb2RlIHBhdGhzLCByZW1v
dmUgaXQuCi0jaWYgVVNFKEFOR0xFKQogICAgIFVOVVNFRF9QQVJBTShvdXRwdXRUYXJnZXQpOwog
ICAgIFVOVVNFRF9QQVJBTShwcmVtdWx0aXBseUFscGhhKTsKLSNlbHNlCi0gICAgaWYgKCFtX3Rl
eHR1cmVDYWNoZSkgewotICAgICAgICBtX3RleHR1cmVDYWNoZSA9IFRleHR1cmVDYWNoZUNWOjpj
cmVhdGUobV9jb250ZXh0KTsKLSAgICAgICAgaWYgKCFtX3RleHR1cmVDYWNoZSkKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAoYXV0byB0ZXh0dXJlID0gbV90ZXh0
dXJlQ2FjaGUtPnRleHR1cmVGcm9tSW1hZ2UoaW1hZ2UsIG91dHB1dFRhcmdldCwgbGV2ZWwsIGlu
dGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUpKSB7Ci0gICAgICAgIGJvb2wgc3dhcENvbG9yQ2hh
bm5lbHMgPSBmYWxzZTsKLSNpZiBVU0UoT1BFTkdMX0VTKQotICAgICAgICAvLyBGSVhNRTogUmVt
b3ZlIHRoaXMgd29ya2Fyb3VuZCBvbmNlIHJkYXI6Ly9wcm9ibGVtLzM1ODM0Mzg4IGlzIGZpeGVk
LgotICAgICAgICBzd2FwQ29sb3JDaGFubmVscyA9IENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1h
dFR5cGUoaW1hZ2UpID09IGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkE7Ci0jZW5kaWYKLSAgICAg
ICAgcmV0dXJuIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSh0ZXh0dXJlLmdldCgp
LCB3aWR0aCwgaGVpZ2h0LCBvdXRwdXRUZXh0dXJlLCBvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRl
cm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSwgc3dhcENv
bG9yQ2hhbm5lbHMpOwotICAgIH0KLSNlbmRpZiAvLyBVU0UoQU5HTEUpCiAKICAgICAvLyBGSVhN
RTogVGhpcyBjdXJyZW50bHkgb25seSBzdXBwb3J0cyAnNDIwdicgYW5kICc0MjBmJyBwaXhlbCBm
b3JtYXRzLiBJbnZlc3RpZ2F0ZSBzdXBwb3J0aW5nIG1vcmUgcGl4ZWwgZm9ybWF0cy4KICAgICBP
U1R5cGUgcGl4ZWxGb3JtYXQgPSBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKGltYWdl
KTsKQEAgLTgwNCw3ICs4MjEsNiBAQCBib29sIFZpZGVvVGV4dHVyZUNvcGllckNWOjpjb3B5SW1h
Z2VUb1BsYXRmb3JtVGV4dHVyZShDVlBpeGVsQnVmZmVyUmVmIGltYWdlLCBzaQogICAgICAgICBM
T0coV2ViR0wsICJWaWRlb1RleHR1cmVDb3BpZXJDVjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZv
cm1UZXh0dXJlKCVwKSAtIEFza2VkIHRvIGNvcHkgYW4gdW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0
ICgnJXMnKS4iLCB0aGlzLCBGb3VyQ0MocGl4ZWxGb3JtYXQpLnRvU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0KICAgICBJT1N1cmZhY2VSZWYg
c3VyZmFjZSA9IENWUGl4ZWxCdWZmZXJHZXRJT1N1cmZhY2UoaW1hZ2UpOwogICAgIGlmICghc3Vy
ZmFjZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODUzLDE1ICs4NjksOCBAQCBib29sIFZp
ZGVvVGV4dHVyZUNvcGllckNWOjpjb3B5SW1hZ2VUb1BsYXRmb3JtVGV4dHVyZShDVlBpeGVsQnVm
ZmVyUmVmIGltYWdlLCBzaQogICAgIGF1dG8gdXZQbGFuZVdpZHRoID0gSU9TdXJmYWNlR2V0V2lk
dGhPZlBsYW5lKHN1cmZhY2UsIDEpOwogICAgIGF1dG8gdXZQbGFuZUhlaWdodCA9IElPU3VyZmFj
ZUdldEhlaWdodE9mUGxhbmUoc3VyZmFjZSwgMSk7CiAKLSNpZiBVU0UoT1BFTkdMX0VTKQotICAg
IEdDR0xlbnVtIHZpZGVvVGV4dHVyZVRhcmdldCA9IEdyYXBoaWNzQ29udGV4dEdMOjpURVhUVVJF
XzJEOwotI2VsaWYgVVNFKE9QRU5HTCkKLSAgICBHQ0dMZW51bSB2aWRlb1RleHR1cmVUYXJnZXQg
PSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9SRUNUQU5HTEVfQVJCOwotI2VsaWYgVVNFKEFO
R0xFKQotICAgIEdDR0xlbnVtIHZpZGVvVGV4dHVyZVRhcmdldCA9IEdyYXBoaWNzQ29udGV4dEdM
OjpJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0KCk7Ci0jZWxzZQotI2Vycm9yIFVuc3VwcG9ydGVkIGNv
bmZpZ3VyYXRpb24KLSNlbmRpZgorICAgIEdDR0xlbnVtIHZpZGVvVGV4dHVyZVRhcmdldCA9IEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0KCk7CisKICAgICBh
dXRvIHV2VGV4dHVyZSA9IG1fY29udGV4dC0+Y3JlYXRlVGV4dHVyZSgpOwogICAgIG1fY29udGV4
dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRTEpOwogICAgIG1fY29u
dGV4dC0+YmluZFRleHR1cmUodmlkZW9UZXh0dXJlVGFyZ2V0LCB1dlRleHR1cmUpOwpAQCAtODY5
LDE4ICs4NzgsMTEgQEAgYm9vbCBWaWRlb1RleHR1cmVDb3BpZXJDVjo6Y29weUltYWdlVG9QbGF0
Zm9ybVRleHR1cmUoQ1ZQaXhlbEJ1ZmZlclJlZiBpbWFnZSwgc2kKICAgICBtX2NvbnRleHQtPnRl
eFBhcmFtZXRlcmkodmlkZW9UZXh0dXJlVGFyZ2V0LCBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVS
RV9NSU5fRklMVEVSLCBHcmFwaGljc0NvbnRleHRHTDo6TElORUFSKTsKICAgICBtX2NvbnRleHQt
PnRleFBhcmFtZXRlcmkodmlkZW9UZXh0dXJlVGFyZ2V0LCBHcmFwaGljc0NvbnRleHRHTDo6VEVY
VFVSRV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dEdMOjpDTEFNUF9UT19FREdFKTsKICAgICBtX2Nv
bnRleHQtPnRleFBhcmFtZXRlcmkodmlkZW9UZXh0dXJlVGFyZ2V0LCBHcmFwaGljc0NvbnRleHRH
TDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dEdMOjpDTEFNUF9UT19FREdFKTsKLSNp
ZiBVU0UoQU5HTEUpCiAgICAgYXV0byB1dkhhbmRsZSA9IGF0dGFjaElPU3VyZmFjZVRvVGV4dHVy
ZSh2aWRlb1RleHR1cmVUYXJnZXQsIEdyYXBoaWNzQ29udGV4dEdMOjpSRywgdXZQbGFuZVdpZHRo
LCB1dlBsYW5lSGVpZ2h0LCBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURSwgc3VyZmFj
ZSwgMSk7CiAgICAgaWYgKCF1dkhhbmRsZSkgewogICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVRl
eHR1cmUodXZUZXh0dXJlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSNlbHNlCi0g
ICAgaWYgKCFtX2NvbnRleHQtPnRleEltYWdlSU9TdXJmYWNlMkQodmlkZW9UZXh0dXJlVGFyZ2V0
LCBHcmFwaGljc0NvbnRleHRHTDo6UkcsIHV2UGxhbmVXaWR0aCwgdXZQbGFuZUhlaWdodCwgR3Jh
cGhpY3NDb250ZXh0R0w6OlJHLCBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURSwgc3Vy
ZmFjZSwgMSkpIHsKLSAgICAgICAgbV9jb250ZXh0LT5kZWxldGVUZXh0dXJlKHV2VGV4dHVyZSk7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0jZW5kaWYgLy8gVVNFKEFOR0xFKQogCiAg
ICAgYXV0byB5VGV4dHVyZSA9IG1fY29udGV4dC0+Y3JlYXRlVGV4dHVyZSgpOwogICAgIG1fY29u
dGV4dC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRTApOwpAQCAtODg5
LDIwICs4OTEsMTIgQEAgYm9vbCBWaWRlb1RleHR1cmVDb3BpZXJDVjo6Y29weUltYWdlVG9QbGF0
Zm9ybVRleHR1cmUoQ1ZQaXhlbEJ1ZmZlclJlZiBpbWFnZSwgc2kKICAgICBtX2NvbnRleHQtPnRl
eFBhcmFtZXRlcmkodmlkZW9UZXh0dXJlVGFyZ2V0LCBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVS
RV9NSU5fRklMVEVSLCBHcmFwaGljc0NvbnRleHRHTDo6TElORUFSKTsKICAgICBtX2NvbnRleHQt
PnRleFBhcmFtZXRlcmkodmlkZW9UZXh0dXJlVGFyZ2V0LCBHcmFwaGljc0NvbnRleHRHTDo6VEVY
VFVSRV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dEdMOjpDTEFNUF9UT19FREdFKTsKICAgICBtX2Nv
bnRleHQtPnRleFBhcmFtZXRlcmkodmlkZW9UZXh0dXJlVGFyZ2V0LCBHcmFwaGljc0NvbnRleHRH
TDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dEdMOjpDTEFNUF9UT19FREdFKTsKLSNp
ZiBVU0UoQU5HTEUpCiAgICAgYXV0byB5SGFuZGxlID0gYXR0YWNoSU9TdXJmYWNlVG9UZXh0dXJl
KHZpZGVvVGV4dHVyZVRhcmdldCwgR3JhcGhpY3NDb250ZXh0R0w6OlJFRCwgeVBsYW5lV2lkdGgs
IHlQbGFuZUhlaWdodCwgR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0JZVEUsIHN1cmZhY2Us
IDApOwogICAgIGlmICgheUhhbmRsZSkgewogICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVRleHR1
cmUoeVRleHR1cmUpOwogICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVRleHR1cmUodXZUZXh0dXJl
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSNlbHNlCi0gICAgaWYgKCFtX2NvbnRl
eHQtPnRleEltYWdlSU9TdXJmYWNlMkQodmlkZW9UZXh0dXJlVGFyZ2V0LCBHcmFwaGljc0NvbnRl
eHRHTDo6TFVNSU5BTkNFLCB5UGxhbmVXaWR0aCwgeVBsYW5lSGVpZ2h0LCBHcmFwaGljc0NvbnRl
eHRHTDo6TFVNSU5BTkNFLCBHcmFwaGljc0NvbnRleHRHTDo6VU5TSUdORURfQllURSwgc3VyZmFj
ZSwgMCkpIHsKLSAgICAgICAgbV9jb250ZXh0LT5kZWxldGVUZXh0dXJlKHlUZXh0dXJlKTsKLSAg
ICAgICAgbV9jb250ZXh0LT5kZWxldGVUZXh0dXJlKHV2VGV4dHVyZSk7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0jZW5kaWYgLy8gVVNFKEFOR0xFKQogCiAgICAgLy8gQ29uZmlndXJl
IHRoZSBkcmF3aW5nIHBhcmFtZXRlcnMuCiAgICAgbV9jb250ZXh0LT51bmlmb3JtMWkobV95VGV4
dHVyZVVuaWZvcm1Mb2NhdGlvbiwgMCk7CkBAIC05MTksMTkgKzkxMywxMSBAQCBib29sIFZpZGVv
VGV4dHVyZUNvcGllckNWOjpjb3B5SW1hZ2VUb1BsYXRmb3JtVGV4dHVyZShDVlBpeGVsQnVmZmVy
UmVmIGltYWdlLCBzaQogICAgIC8vIERvIHRoZSBhY3R1YWwgZHJhd2luZy4KICAgICBtX2NvbnRl
eHQtPmRyYXdBcnJheXMoR3JhcGhpY3NDb250ZXh0R0w6OlRSSUFOR0xFUywgMCwgNik7CiAKLSNp
ZiBVU0UoT1BFTkdMX0VTKSB8fCAoVVNFKEFOR0xFKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKSkK
LSAgICAvLyBmbHVzaCgpIG11c3QgYmUgY2FsbGVkIGhlcmUgaW4gb3JkZXIgdG8gcmUtc3luY2hy
b25pemUgdGhlIG91dHB1dCB0ZXh0dXJlJ3MgY29udGVudHMgYWNyb3NzIHRoZQotICAgIC8vIHR3
byBFQUdMIGNvbnRleHRzLgotICAgIG1fY29udGV4dC0+Zmx1c2goKTsKLSNlbmRpZgotCiAgICAg
Ly8gQ2xlYW4tdXAuCiAgICAgbV9jb250ZXh0LT5kZWxldGVUZXh0dXJlKHlUZXh0dXJlKTsKICAg
ICBtX2NvbnRleHQtPmRlbGV0ZVRleHR1cmUodXZUZXh0dXJlKTsKLSNpZiBVU0UoQU5HTEUpCiAg
ICAgZGV0YWNoSU9TdXJmYWNlRnJvbVRleHR1cmUoeUhhbmRsZSk7CiAgICAgZGV0YWNoSU9TdXJm
YWNlRnJvbVRleHR1cmUodXZIYW5kbGUpOwotI2VuZGlmCiAKICAgICBtX2xhc3RTdXJmYWNlID0g
c3VyZmFjZTsKICAgICBtX2xhc3RTdXJmYWNlU2VlZCA9IG5ld1N1cmZhY2VTZWVkOwpAQCAtOTQx
LDU3ICs5MjcsNiBAQCBib29sIFZpZGVvVGV4dHVyZUNvcGllckNWOjpjb3B5SW1hZ2VUb1BsYXRm
b3JtVGV4dHVyZShDVlBpeGVsQnVmZmVyUmVmIGltYWdlLCBzaQogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZpZGVvVGV4dHVyZUNvcGllckNWOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9y
bVRleHR1cmUoVGV4dHVyZVR5cGUgaW5wdXRWaWRlb1RleHR1cmUsIHNpemVfdCB3aWR0aCwgc2l6
ZV90IGhlaWdodCwgUGxhdGZvcm1HTE9iamVjdCBvdXRwdXRUZXh0dXJlLCBHQ0dMZW51bSBvdXRw
dXRUYXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51
bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlw
WSwgYm9vbCBzd2FwQ29sb3JDaGFubmVscykKLXsKLSAgICBpZiAoIWlucHV0VmlkZW9UZXh0dXJl
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBHTGZsb2F0IGxvd2VyTGVmdFsyXSA9IHsg
MCwgMCB9OwotICAgIEdMZmxvYXQgbG93ZXJSaWdodFsyXSA9IHsgMCwgMCB9OwotICAgIEdMZmxv
YXQgdXBwZXJSaWdodFsyXSA9IHsgMCwgMCB9OwotICAgIEdMZmxvYXQgdXBwZXJMZWZ0WzJdID0g
eyAwLCAwIH07Ci0gICAgUGxhdGZvcm1HTE9iamVjdCB2aWRlb1RleHR1cmVOYW1lOwotICAgIEdD
R0xlbnVtIHZpZGVvVGV4dHVyZVRhcmdldDsKLQotI2lmIFVTRShPUEVOR0xfRVMpCi0gICAgdmlk
ZW9UZXh0dXJlTmFtZSA9IENWT3BlbkdMRVNUZXh0dXJlR2V0TmFtZShpbnB1dFZpZGVvVGV4dHVy
ZSk7Ci0gICAgdmlkZW9UZXh0dXJlVGFyZ2V0ID0gQ1ZPcGVuR0xFU1RleHR1cmVHZXRUYXJnZXQo
aW5wdXRWaWRlb1RleHR1cmUpOwotICAgIENWT3BlbkdMRVNUZXh0dXJlR2V0Q2xlYW5UZXhDb29y
ZHMoaW5wdXRWaWRlb1RleHR1cmUsIGxvd2VyTGVmdCwgbG93ZXJSaWdodCwgdXBwZXJSaWdodCwg
dXBwZXJMZWZ0KTsKLSNlbGlmIFVTRShPUEVOR0wpCi0gICAgdmlkZW9UZXh0dXJlTmFtZSA9IENW
T3BlbkdMVGV4dHVyZUdldE5hbWUoaW5wdXRWaWRlb1RleHR1cmUpOwotICAgIHZpZGVvVGV4dHVy
ZVRhcmdldCA9IENWT3BlbkdMVGV4dHVyZUdldFRhcmdldChpbnB1dFZpZGVvVGV4dHVyZSk7Ci0g
ICAgQ1ZPcGVuR0xUZXh0dXJlR2V0Q2xlYW5UZXhDb29yZHMoaW5wdXRWaWRlb1RleHR1cmUsIGxv
d2VyTGVmdCwgbG93ZXJSaWdodCwgdXBwZXJSaWdodCwgdXBwZXJMZWZ0KTsKLSNlbGlmIFVTRShB
TkdMRSkKLSAgICAvLyBDVk9wZW5HTFRleHR1cmVDYWNoZUNyZWF0ZVRleHR1cmVGcm9tSW1hZ2Ug
c2VlbXMgdG8gYWx3YXlzIHJldHVybgotICAgIC8vIGtDVlJldHVyblBpeGVsQnVmZmVyTm90T3Bl
bkdMQ29tcGF0aWJsZSBvbiBkZXNrdG9wIG1hY09TIG5vdywgc28gdGhpcwotICAgIC8vIGVudGly
ZSBjb2RlIHBhdGggc2VlbXMgdG8gYmUgdW51c2VkLiBBc3N1bWUgdGhlIElPU3VyZmFjZSBwYXRo
IHdpbGwgYmUKLSAgICAvLyB0YWtlbiB3aGVuIHVzaW5nIEFOR0xFLgotICAgIFVOVVNFRF9QQVJB
TShsb3dlckxlZnQpOwotICAgIFVOVVNFRF9QQVJBTShsb3dlclJpZ2h0KTsKLSAgICBVTlVTRURf
UEFSQU0odXBwZXJMZWZ0KTsKLSAgICBVTlVTRURfUEFSQU0odXBwZXJSaWdodCk7Ci0gICAgVU5V
U0VEX1BBUkFNKHdpZHRoKTsKLSAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsKLSAgICBVTlVTRURf
UEFSQU0ob3V0cHV0VGV4dHVyZSk7Ci0gICAgVU5VU0VEX1BBUkFNKG91dHB1dFRhcmdldCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKGxldmVsKTsKLSAgICBVTlVTRURfUEFSQU0oaW50ZXJuYWxGb3JtYXQp
OwotICAgIFVOVVNFRF9QQVJBTShmb3JtYXQpOwotICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKLSAg
ICBVTlVTRURfUEFSQU0ocHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgVU5VU0VEX1BBUkFNKGZsaXBZ
KTsKLSAgICBVTlVTRURfUEFSQU0oc3dhcENvbG9yQ2hhbm5lbHMpOwotICAgIC8vIEZJWE1FOiBk
ZXRlcm1pbmUgaG93IHRvIGFjY2VzcyByZWN0YW5ndWxhciB0ZXh0dXJlcyB2aWEgQU5HTEUuCi0g
ICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotCi0gICAgaWYg
KGxvd2VyTGVmdFsxXSA8IHVwcGVyUmlnaHRbMV0pCi0gICAgICAgIGZsaXBZID0gIWZsaXBZOwot
Ci0gICAgcmV0dXJuIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSh2aWRlb1RleHR1
cmVOYW1lLCB2aWRlb1RleHR1cmVUYXJnZXQsIHdpZHRoLCBoZWlnaHQsIG91dHB1dFRleHR1cmUs
IG91dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIHByZW11
bHRpcGx5QWxwaGEsIGZsaXBZLCBzd2FwQ29sb3JDaGFubmVscyk7Ci19Ci0KIGJvb2wgVmlkZW9U
ZXh0dXJlQ29waWVyQ1Y6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShQbGF0Zm9y
bUdMT2JqZWN0IHZpZGVvVGV4dHVyZU5hbWUsIEdDR0xlbnVtIHZpZGVvVGV4dHVyZVRhcmdldCwg
c2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBQbGF0Zm9ybUdMT2JqZWN0IG91dHB1dFRleHR1
cmUsIEdDR0xlbnVtIG91dHB1dFRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJu
YWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBs
eUFscGhhLCBib29sIGZsaXBZLCBib29sIHN3YXBDb2xvckNoYW5uZWxzKQogewogICAgIExPRyhX
ZWJHTCwgIlZpZGVvVGV4dHVyZUNvcGllckNWOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRl
eHR1cmUoJXApIC0gaW50ZXJuYWxGb3JtYXQ6ICVzLCBmb3JtYXQ6ICVzLCB0eXBlOiAlcyBmbGlw
WTogJXMsIHByZW11bHRpcGx5QWxwaGE6ICVzIiwgdGhpcywgZW51bVRvU3RyaW5nTWFwKClbaW50
ZXJuYWxGb3JtYXRdLCBlbnVtVG9TdHJpbmdNYXAoKVtmb3JtYXRdLCBlbnVtVG9TdHJpbmdNYXAo
KVt0eXBlXSwgZmxpcFkgPyAidHJ1ZSIgOiAiZmFsc2UiLCBwcmVtdWx0aXBseUFscGhhID8gInRy
dWUiIDogImZhbHNlIik7CkBAIC0xMDM0LDExICs5NjksNyBAQCBib29sIFZpZGVvVGV4dHVyZUNv
cGllckNWOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoUGxhdGZvcm1HTE9iamVj
dCB2aQogCiAgICAgLy8gQ29uZmlndXJlIHRoZSBkcmF3aW5nIHBhcmFtZXRlcnMuCiAgICAgbV9j
b250ZXh0LT51bmlmb3JtMWkobV90ZXh0dXJlVW5pZm9ybUxvY2F0aW9uLCAwKTsKLSNpZiBVU0Uo
T1BFTkdMX0VTKQotICAgIG1fY29udGV4dC0+dW5pZm9ybTJmKG1fdGV4dHVyZURpbWVuc2lvbnNV
bmlmb3JtTG9jYXRpb24sIDEsIDEpOwotI2Vsc2UKICAgICBtX2NvbnRleHQtPnVuaWZvcm0yZiht
X3RleHR1cmVEaW1lbnNpb25zVW5pZm9ybUxvY2F0aW9uLCB3aWR0aCwgaGVpZ2h0KTsKLSNlbmRp
ZgogCiAgICAgbV9jb250ZXh0LT51bmlmb3JtMWkobV9mbGlwWVVuaWZvcm1Mb2NhdGlvbiwgZmxp
cFkpOwogICAgIG1fY29udGV4dC0+dW5pZm9ybTFpKG1fc3dhcENvbG9yQ2hhbm5lbHNVbmlmb3Jt
TG9jYXRpb24sIHN3YXBDb2xvckNoYW5uZWxzKTsKQEAgLTEwNTAsMTIgKzk4MSw2IEBAIGJvb2wg
VmlkZW9UZXh0dXJlQ29waWVyQ1Y6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShQ
bGF0Zm9ybUdMT2JqZWN0IHZpCiAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJQb2ludGVyKG1f
cG9zaXRpb25BdHRyaWJ1dGVMb2NhdGlvbiwgMiwgR3JhcGhpY3NDb250ZXh0R0w6OkZMT0FULCBm
YWxzZSwgMCwgMCk7CiAgICAgbV9jb250ZXh0LT5kcmF3QXJyYXlzKEdyYXBoaWNzQ29udGV4dEdM
OjpUUklBTkdMRVMsIDAsIDYpOwogCi0jaWYgVVNFKE9QRU5HTF9FUykKLSAgICAvLyBmbHVzaCgp
IG11c3QgYmUgY2FsbGVkIGhlcmUgaW4gb3JkZXIgdG8gcmUtc3luY2hyb25pemUgdGhlIG91dHB1
dCB0ZXh0dXJlJ3MgY29udGVudHMgYWNyb3NzIHRoZQotICAgIC8vIHR3byBFQUdMIGNvbnRleHRz
LgotICAgIG1fY29udGV4dC0+Zmx1c2goKTsKLSNlbmRpZgotCiAgICAgLy8gQ2xlYW4tdXAuCiAg
ICAgbV9jb250ZXh0LT5iaW5kVGV4dHVyZSh2aWRlb1RleHR1cmVUYXJnZXQsIDApOwogICAgIG1f
Y29udGV4dC0+YmluZFRleHR1cmUob3V0cHV0VGFyZ2V0LCBvdXRwdXRUZXh0dXJlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNv
cGllckNWLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1RleHR1
cmVDb3BpZXJDVi5oCmluZGV4IGUwMDRkMjJhNTY0NTgxMTJmMTNiNDNmMTk4N2Y1YWE5NWFmZDZh
NDMuLmNlZGYyZDU4YWEyODU0YzNiMmY0OTI4NjZhNTA3MGRkZWFiMGRhMTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGllckNW
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJl
Q29waWVyQ1YuaApAQCAtMzUsMjIgKzM1LDEzIEBAIHR5cGVkZWYgQ1ZJbWFnZUJ1ZmZlclJlZiBD
Vk9wZW5HTEVTVGV4dHVyZVJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBUZXh0
dXJlQ2FjaGVDVjsKLQogY2xhc3MgVmlkZW9UZXh0dXJlQ29waWVyQ1YgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFZpZGVvVGV4dHVyZUNvcGllckNWKEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMJik7CiAgICAgflZpZGVvVGV4dHVyZUNvcGllckNWKCk7CiAKLSNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHR5cGVkZWYgQ1ZPcGVuR0xFU1RleHR1cmVSZWYg
VGV4dHVyZVR5cGU7Ci0jZWxzZQotICAgIHR5cGVkZWYgQ1ZPcGVuR0xUZXh0dXJlUmVmIFRleHR1
cmVUeXBlOwotI2VuZGlmCi0KICAgICBib29sIGNvcHlJbWFnZVRvUGxhdGZvcm1UZXh0dXJlKENW
UGl4ZWxCdWZmZXJSZWYsIHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwgUGxhdGZvcm1HTE9i
amVjdCBvdXRwdXRUZXh0dXJlLCBHQ0dMZW51bSBvdXRwdXRUYXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSk7Ci0gICAgYm9vbCBjb3B5VmlkZW9U
ZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoVGV4dHVyZVR5cGUsIHNpemVfdCB3aWR0aCwgc2l6ZV90
IGhlaWdodCwgUGxhdGZvcm1HTE9iamVjdCBvdXRwdXRUZXh0dXJlLCBHQ0dMZW51bSBvdXRwdXRU
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSwg
Ym9vbCBzd2FwQ29sb3JDaGFubmVscyA9IGZhbHNlKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMJiBjb250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0OyB9CiAKQEAgLTY1LDE4ICs1Niwx
NCBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gbV9sYXN0VGV4dHVyZVNlZWQuZ2V0KHRleHR1
cmUpOwogICAgIH0KIAotI2lmIFVTRShBTkdMRSkKICAgICAvLyBSZXR1cm5zIGEgaGFuZGxlIHdo
aWNoLCBpZiBub24tbnVsbCwgbXVzdCBiZSByZWxlYXNlZCB2aWEgdGhlCiAgICAgLy8gZGV0YWNo
IGNhbGwgYmVsb3cuCiAgICAgdm9pZCogYXR0YWNoSU9TdXJmYWNlVG9UZXh0dXJlKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gdHlwZSwgSU9TdXJmYWNlUmVmLCBHQ0dMdWludCBwbGFuZSk7
CiAgICAgdm9pZCBkZXRhY2hJT1N1cmZhY2VGcm9tVGV4dHVyZSh2b2lkKiBoYW5kbGUpOwotI2Vu
ZGlmCiAKICAgICBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IG1fc2hhcmVkQ29udGV4dDsK
ICAgICBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IG1fY29udGV4dDsKLSNpZiAhVVNFKEFO
R0xFKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlQ2FjaGVDVj4gbV90ZXh0dXJlQ2FjaGU7
Ci0jZW5kaWYKKwogICAgIFBsYXRmb3JtR0xPYmplY3QgbV9mcmFtZWJ1ZmZlciB7IDAgfTsKICAg
ICBQbGF0Zm9ybUdMT2JqZWN0IG1fcHJvZ3JhbSB7IDAgfTsKICAgICBQbGF0Zm9ybUdMT2JqZWN0
IG1fdmVydGV4QnVmZmVyIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaW9zL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVNJT1MuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTSU9T
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4ZWUxMDMxODZjODA5ZDI2YTExMGQy
ZWY4YzA4MDY3MDMzNmMzYjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMRVNJT1MuaAorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpZiBVU0UoT1BFTkdMX0VTKQotCi0jZGVmaW5lIGdsQmluZEZyYW1lYnVmZmVyRVhUIGdsQmlu
ZEZyYW1lYnVmZmVyCi0jZGVmaW5lIGdsQmluZFJlbmRlcmJ1ZmZlckVYVCBnbEJpbmRSZW5kZXJi
dWZmZXIKLSNkZWZpbmUgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzRVhUIGdsQ2hlY2tGcmFtZWJ1
ZmZlclN0YXR1cwotI2RlZmluZSBnbERlbGV0ZUZyYW1lYnVmZmVyc0VYVCBnbERlbGV0ZUZyYW1l
YnVmZmVycwotI2RlZmluZSBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnNFWFQgZ2xEZWxldGVSZW5kZXJi
dWZmZXJzCi0jZGVmaW5lIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXJFWFQgZ2xGcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlcgotI2RlZmluZSBnbEZyYW1lYnVmZmVyVGV4dHVyZTJERVhUIGdsRnJhbWVi
dWZmZXJUZXh0dXJlMkQKLSNkZWZpbmUgZ2xHZW5lcmF0ZU1pcG1hcEVYVCBnbEdlbmVyYXRlTWlw
bWFwCi0jZGVmaW5lIGdsR2VuRnJhbWVidWZmZXJzRVhUIGdsR2VuRnJhbWVidWZmZXJzCi0jZGVm
aW5lIGdsR2VuUmVuZGVyYnVmZmVyc0VYVCBnbEdlblJlbmRlcmJ1ZmZlcnMKLSNkZWZpbmUgZ2xH
ZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdkVYVCBnbEdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcml2Ci0jZGVmaW5lIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZF
WFQgZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdgotI2RlZmluZSBnbElzRnJhbWVidWZmZXJF
WFQgZ2xJc0ZyYW1lYnVmZmVyCi0jZGVmaW5lIGdsSXNSZW5kZXJidWZmZXJFWFQgZ2xJc1JlbmRl
cmJ1ZmZlcgotI2RlZmluZSBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VFWFQgZ2xSZW5kZXJidWZmZXJT
dG9yYWdlCi0jZGVmaW5lIGdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlRVhUIGdsUmVu
ZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQVBQTEUKLQotI2RlZmluZSBnbERyYXdBcnJheXNJ
bnN0YW5jZWRBUkIgZ2xEcmF3QXJyYXlzSW5zdGFuY2VkRVhUCi0jZGVmaW5lIGdsRHJhd0VsZW1l
bnRzSW5zdGFuY2VkQVJCIGdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkRVhUCi0jZGVmaW5lIGdsVmVy
dGV4QXR0cmliRGl2aXNvckFSQiBnbFZlcnRleEF0dHJpYkRpdmlzb3JFWFQKLQotI2RlZmluZSBn
bEJpbmRWZXJ0ZXhBcnJheSBnbEJpbmRWZXJ0ZXhBcnJheU9FUwotI2RlZmluZSBnbERlbGV0ZVZl
cnRleEFycmF5cyBnbERlbGV0ZVZlcnRleEFycmF5c09FUwotI2RlZmluZSBnbEdlblZlcnRleEFy
cmF5cyBnbEdlblZlcnRleEFycmF5c09FUwotI2RlZmluZSBnbElzVmVydGV4QXJyYXkgZ2xJc1Zl
cnRleEFycmF5T0VTCi0KLSNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDBfRVhUIEdMX0NPTE9S
X0FUVEFDSE1FTlQwCi0jZGVmaW5lIEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUIEdMX0RFUFRIMjRf
U1RFTkNJTDhfT0VTCi0jZGVmaW5lIEdMX0RFUFRIX0FUVEFDSE1FTlRfRVhUICBHTF9ERVBUSF9B
VFRBQ0hNRU5UCi0jZGVmaW5lIEdMX0RSQVdfRlJBTUVCVUZGRVJfRVhUIEdMX0RSQVdfRlJBTUVC
VUZGRVJfQVBQTEUKLSNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfQ09NUExFVEVfRVhUIEdMX0ZSQU1F
QlVGRkVSX0NPTVBMRVRFCi0jZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0VYVCBHTF9GUkFNRUJVRkZF
UgotI2RlZmluZSBHTF9NQVhfU0FNUExFU19FWFQgR0xfTUFYX1NBTVBMRVNfQVBQTEUKLSNkZWZp
bmUgR0xfUkVBRF9GUkFNRUJVRkZFUl9FWFQgR0xfUkVBRF9GUkFNRUJVRkZFUl9BUFBMRQotI2Rl
ZmluZSBHTF9SRU5ERVJCVUZGRVJfRVhUIEdMX1JFTkRFUkJVRkZFUgotI2lmbmRlZiBHTF9SR0I4
Ci0jZGVmaW5lIEdMX1JHQjggR0xfUkdCCi0jZW5kaWYKLSNpZm5kZWYgR0xfUkdCQTgKLSNkZWZp
bmUgR0xfUkdCQTggR0xfUkdCQQotI2VuZGlmCi0jZGVmaW5lIEdMX1NURU5DSUxfQVRUQUNITUVO
VF9FWFQgR0xfU1RFTkNJTF9BVFRBQ0hNRU5UCi0jZGVmaW5lIEdMX1VOU0lHTkVEX0lOVF84Xzhf
OF84X1JFViBHTF9VTlNJR05FRF9CWVRFCi0KLSNlbmRpZiAvLyBVU0UoT1BFTkdMX0VTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAppbmRleCA5NjExMjU3MjM1ZDU4YjAxNjBjY2IyNzZiYmRh
NzM5ZGRhMzBiN2I0Li5iYmQ5ZDQ0NmY5MWVkNWUxYmJiYTRkMzcwMmQ0MzJmNzFlZmZhNGUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkV4dGVuc2lvbnNHTE9wZW5HTC5oIgogCi0jaWYgRU5BQkxF
KEdSQVBISUNTX0NPTlRFWFRfR0wpICYmIChVU0UoT1BFTkdMKSB8fCAoUExBVEZPUk0oQ09DT0Ep
ICYmIFVTRShPUEVOR0xfRVMpKSkKKyNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkgJiYg
VVNFKE9QRU5HTCkKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCiAKQEAg
LTM4LDEwICszOCw2IEBACiAjaW5jbHVkZSA8T3BlbkdML2dsLmg+CiAjZW5kaWYKIAotI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFU0lP
Uy5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRXh0ZW5zaW9uc0dMT3BlbkdM
OjpFeHRlbnNpb25zR0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIGNvbnRleHQsIGJv
b2wgdXNlSW5kZXhlZEdldFN0cmluZykKQEAgLTU0LDIxICs1MCw3IEBAIEV4dGVuc2lvbnNHTE9w
ZW5HTDo6fkV4dGVuc2lvbnNHTE9wZW5HTCgpID0gZGVmYXVsdDsKIAogdm9pZCBFeHRlbnNpb25z
R0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZlcihsb25nIHNyY1gwLCBsb25nIHNyY1kwLCBsb25nIHNy
Y1gxLCBsb25nIHNyY1kxLCBsb25nIGRzdFgwLCBsb25nIGRzdFkwLCBsb25nIGRzdFgxLCBsb25n
IGRzdFkxLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZmlsdGVyKQogewotI2lm
IFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoT1BFTkdMX0VTKQotICAgIFVOVVNFRF9QQVJBTShzcmNY
MCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY1kwKTsKLSAgICBVTlVTRURfUEFSQU0oc3JjWDEpOwot
ICAgIFVOVVNFRF9QQVJBTShzcmNZMSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRzdFgwKTsKLSAgICBV
TlVTRURfUEFSQU0oZHN0WTApOwotICAgIFVOVVNFRF9QQVJBTShkc3RYMSk7Ci0gICAgVU5VU0VE
X1BBUkFNKGRzdFkxKTsKLSAgICBVTlVTRURfUEFSQU0obWFzayk7Ci0gICAgVU5VU0VEX1BBUkFN
KGZpbHRlcik7Ci0gICAgOjpnbFJlc29sdmVNdWx0aXNhbXBsZUZyYW1lYnVmZmVyQVBQTEUoKTsK
LSNlbHNlCiAgICAgOjpnbEJsaXRGcmFtZWJ1ZmZlckVYVChzcmNYMCwgc3JjWTAsIHNyY1gxLCBz
cmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcik7Ci0jZW5kaWYK
IH0KIAogdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzLCB1bnNpZ25l
ZCBsb25nIGludGVybmFsZm9ybWF0LCB1bnNpZ25lZCBsb25nIHdpZHRoLCB1bnNpZ25lZCBsb25n
IGhlaWdodCkKQEAgLTgwLDcgKzYyLDcgQEAgUGxhdGZvcm1HTE9iamVjdCBFeHRlbnNpb25zR0xP
cGVuR0w6OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkKIHsKICAgICBtX2NvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpOwogICAgIEdMdWludCBhcnJheSA9IDA7Ci0jaWYgUExBVEZPUk0oR1RLKSB8
fCBQTEFURk9STShXSU4pIHx8IChQTEFURk9STShDT0NPQSkgJiYgVVNFKE9QRU5HTF9FUykpCisj
aWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pCiAgICAgaWYgKGlzVmVydGV4QXJyYXlP
YmplY3RTdXBwb3J0ZWQoKSkKICAgICAgICAgZ2xHZW5WZXJ0ZXhBcnJheXMoMSwgJmFycmF5KTsK
ICNlbGlmIGRlZmluZWQoR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCkgJiYgR0xfQVBQTEVf
dmVydGV4X2FycmF5X29iamVjdApAQCAtOTUsNyArNzcsNyBAQCB2b2lkIEV4dGVuc2lvbnNHTE9w
ZW5HTDo6ZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcnJheSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKLSNpZiBQ
TEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdJTikgfHwgKFBMQVRGT1JNKENPQ09BKSAmJiBVU0Uo
T1BFTkdMX0VTKSkKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdJTikKICAgICBpZiAo
aXNWZXJ0ZXhBcnJheU9iamVjdFN1cHBvcnRlZCgpKQogICAgICAgICBnbERlbGV0ZVZlcnRleEFy
cmF5cygxLCAmYXJyYXkpOwogI2VsaWYgZGVmaW5lZChHTF9BUFBMRV92ZXJ0ZXhfYXJyYXlfb2Jq
ZWN0KSAmJiBHTF9BUFBMRV92ZXJ0ZXhfYXJyYXlfb2JqZWN0CkBAIC0xMDksNyArOTEsNyBAQCBH
Q0dMYm9vbGVhbiBFeHRlbnNpb25zR0xPcGVuR0w6OmlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1H
TE9iamVjdCBhcnJheSkKICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogCiAgICAgbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKLSNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdJ
TikgfHwgKFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoT1BFTkdMX0VTKSkKKyNpZiBQTEFURk9STShH
VEspIHx8IFBMQVRGT1JNKFdJTikKICAgICBpZiAoaXNWZXJ0ZXhBcnJheU9iamVjdFN1cHBvcnRl
ZCgpKQogICAgICAgICByZXR1cm4gZ2xJc1ZlcnRleEFycmF5KGFycmF5KTsKICNlbGlmIGRlZmlu
ZWQoR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCkgJiYgR0xfQVBQTEVfdmVydGV4X2FycmF5
X29iamVjdApAQCAtMTIxLDcgKzEwMyw3IEBAIEdDR0xib29sZWFuIEV4dGVuc2lvbnNHTE9wZW5H
TDo6aXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFycmF5KQogdm9pZCBFeHRlbnNp
b25zR0xPcGVuR0w6OmJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFycmF5KQog
ewogICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0jaWYgUExBVEZPUk0oR1RL
KSB8fCBQTEFURk9STShXSU4pIHx8IChQTEFURk9STShDT0NPQSkgJiYgVVNFKE9QRU5HTF9FUykp
CisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pCiAgICAgaWYgKGlzVmVydGV4QXJy
YXlPYmplY3RTdXBwb3J0ZWQoKSkKICAgICAgICAgZ2xCaW5kVmVydGV4QXJyYXkoYXJyYXkpOwog
I2VsaWYgZGVmaW5lZChHTF9BUFBMRV92ZXJ0ZXhfYXJyYXlfb2JqZWN0KSAmJiBHTF9BUFBMRV92
ZXJ0ZXhfYXJyYXlfb2JqZWN0CkBAIC0xNTYsMzAgKzEzOCwxNyBAQCBib29sIEV4dGVuc2lvbnNH
TE9wZW5HTDo6c3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIGlmIChu
YW1lID09ICJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IikKICAgICAgICAgcmV0dXJuIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVyX2JsaXQiKTsKICAg
ICBpZiAobmFtZSA9PSAiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKQotI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0FQUExFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7Ci0jZWxzZQogICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVi
dWZmZXJfbXVsdGlzYW1wbGUiKTsKLSNlbmRpZgotCiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xF
X2luc3RhbmNlZF9hcnJheXMiKSB7CiAgICAgICAgIHJldHVybiAobV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9BUkJfaW5zdGFuY2VkX2FycmF5cyIpIHx8IG1fYXZhaWxhYmxlRXh0
ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9hcnJheXMiKSkKICAgICAgICAgICAg
ICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2luc3RhbmNl
ZCIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFu
Y2VkIikpOwogICAgIH0KIAogICAgIGlmIChuYW1lID09ICJHTF9FWFRfc1JHQiIpCi0jaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5j
b250YWlucygiR0xfRVhUX3NSR0IiKTsKLSNlbHNlCiAgICAgICAgIHJldHVybiBtX2F2YWlsYWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiKSAmJiAobV9hdmFpbGFi
bGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfc1JHQiIpIHx8IG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2ZyYW1lYnVmZmVyX3NSR0IiKSk7Ci0j
ZW5kaWYKIAogICAgIGlmIChuYW1lID09ICJHTF9FWFRfZnJhZ19kZXB0aCIpCi0jaWYgUExBVEZP
Uk0oTUFDKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCiAgICAgICAgIHJldHVybiBtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFnX2RlcHRoIik7Ci0jZW5kaWYK
IAogICAgIC8vIERlc2t0b3AgR0wgYWx3YXlzIHN1cHBvcnRzIEdMX09FU19yZ2I4X3JnYmE4Lgog
ICAgIGlmIChuYW1lID09ICJHTF9PRVNfcmdiOF9yZ2JhOCIpCkBAIC0xOTQsOCArMTYzLDYgQEAg
Ym9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYg
bmFtZSkKICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKSB7CiAj
aWYgKFBMQVRGT1JNKEdUSykpCiAgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0FSQl92ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7Ci0jZWxpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIpOwogI2Vsc2UKICAgICAgICAgcmV0dXJuIG1f
YXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVj
dCIpOwogI2VuZGlmCkBAIC0yMTYsOSArMTgzLDcgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6
OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgcmV0dXJuIG1f
YXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNv
dHJvcGljIik7CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX2RyYXdfYnVmZmVycyIpIHsKLSNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKG5hbWUpOwotI2VsaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShHVEsp
CisjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9BUkJfZHJhd19idWZmZXJzIik7CiAjZWxzZQogICAgICAgICAvLyBGSVhN
RTogaW1wbGVtZW50IHN1cHBvcnQgZm9yIG90aGVyIHBsYXRmb3Jtcy4KQEAgLTIyNiwyNiArMTkx
LDEzIEBAIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjpzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBT
dHJpbmcmIG5hbWUpCiAjZW5kaWYKICAgICB9CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8
fCBQTEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikKLSAgICBpZiAobmFtZSA9PSAiR0xfRVhU
X3BhY2tlZF9kZXB0aF9zdGVuY2lsIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7Ci0KLSAgICBpZiAo
bmFtZSA9PSAiR0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiCi0gICAgICAgIHx8
IG5hbWUgPT0gIkdMX0FOR0xFX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMiKSB7Ci0gICAgICAgIC8v
IEltcGxpY2l0bHkgZW5hYmxlZCB3aXRoIEVTIDMuMCBjb250ZXh0cy4KLSAgICAgICAgcmV0dXJu
IG1fY29udGV4dC0+bV9pc0ZvcldlYkdMMjsKLSAgICB9Ci0jZW5kaWYKLQogICAgIHJldHVybiBt
X2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMobmFtZSk7CiB9CiAKIHZvaWQgRXh0ZW5zaW9u
c0dMT3BlbkdMOjpkcmF3QnVmZmVyc0VYVChHQ0dMc2l6ZWkgbiwgY29uc3QgR0NHTGVudW0qIGJ1
ZnMpCiB7CiAgICAgLy8gIEZJWE1FOiBpbXBsZW1lbnQgc3VwcG9ydCBmb3Igb3RoZXIgcGxhdGZv
cm1zLgotI2lmIFBMQVRGT1JNKE1BQykKLSAgICA6OmdsRHJhd0J1ZmZlcnNBUkIobiwgYnVmcyk7
Ci0jZWxpZiBQTEFURk9STShHVEspCisjaWYgUExBVEZPUk0oR1RLKQogICAgIDo6Z2xEcmF3QnVm
ZmVycyhuLCBidWZzKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG4pOwpAQCAtMjU4LDggKzIx
MCw2IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xl
bnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzCiAgICAgbV9jb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKTsKICNpZiBQTEFURk9STShHVEspCiAgICAgOjpnbERyYXdBcnJheXNJbnN0YW5j
ZWQobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOwotI2VsaWYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgOjpnbERyYXdBcnJheXNJbnN0YW5jZWRBUkIobW9kZSwgZmlyc3QsIGNvdW50LCBwcmlt
Y291bnQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obW9kZSk7CiAgICAgVU5VU0VEX1BBUkFN
KGZpcnN0KTsKQEAgLTI3Myw4ICsyMjMsNiBAQCB2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJh
d0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgRwogICAg
IG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiAjaWYgUExBVEZPUk0oR1RLKQogICAg
IDo6Z2xEcmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZSwgY291bnQsIHR5cGUsIHJlaW50ZXJwcmV0
X2Nhc3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpLCBwcmltY291bnQp
OwotI2VsaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgOjpnbERyYXdFbGVtZW50c0luc3RhbmNlZEFS
Qihtb2RlLCBjb3VudCwgdHlwZSwgcmVpbnRlcnByZXRfY2FzdDxHTHZvaWQqPihzdGF0aWNfY2Fz
dDxpbnRwdHJfdD4ob2Zmc2V0KSksIHByaW1jb3VudCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TShtb2RlKTsKICAgICBVTlVTRURfUEFSQU0oY291bnQpOwpAQCAtMjg5LDggKzIzNyw2IEBAIHZv
aWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4
LCBHQ0dMdWludCBkaXZpc29yKQogICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7
CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIDo6Z2xWZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4LCBk
aXZpc29yKTsKLSNlbGlmIFBMQVRGT1JNKENPQ09BKQotICAgIDo6Z2xWZXJ0ZXhBdHRyaWJEaXZp
c29yQVJCKGluZGV4LCBkaXZpc29yKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGluZGV4KTsK
ICAgICBVTlVTRURfUEFSQU0oZGl2aXNvcik7CkBAIC0zMDMsNyArMjQ5LDcgQEAgU3RyaW5nIEV4
dGVuc2lvbnNHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCiAgICAgcmV0dXJuIFN0cmluZyhyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPig6OmdsR2V0U3RyaW5nKEdMX0VYVEVOU0lPTlMpKSk7
CiB9CiAKLSNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdJTikgfHwgKFBMQVRGT1JNKENP
Q09BKSAmJiBVU0UoT1BFTkdMX0VTKSkKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdJ
TikKIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjppc1ZlcnRleEFycmF5T2JqZWN0U3VwcG9ydGVk
KCkKIHsKICAgICBzdGF0aWMgY29uc3QgYm9vbCBzdXBwb3J0c1ZlcnRleEFycmF5T2JqZWN0ID0g
c3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7CkBAIC0zMTMsNCArMjU5LDQg
QEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OmlzVmVydGV4QXJyYXlPYmplY3RTdXBwb3J0ZWQo
KQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoR1JBUEhJQ1Nf
Q09OVEVYVF9HTCkgJiYgKFVTRShPUEVOR0wpIHx8IChQTEFURk9STShDT0NPQSkgJiYgVVNFKE9Q
RU5HTF9FUykpKQorI2VuZGlmIC8vIEVOQUJMRShHUkFQSElDU19DT05URVhUX0dMKSAmJiBVU0Uo
T1BFTkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCmluZGV4IGU0OTIyNGJmMWU3NGEwNjFhN2Q3
YWUxNjM0ZDRhNzZkNDBmYWZkYWUuLmQzYmU4Y2MyOGMxN2MyZGY1ZDNiNDg2NmJiM2M1Zjk0NGM0
NTVmMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHJvdGVj
dGVkOgogICAgIFN0cmluZyBnZXRFeHRlbnNpb25zKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0j
aWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pIHx8IChQTEFURk9STShDT0NPQSkgJiYg
VVNFKE9QRU5HTF9FUykpCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pCiAgICAg
Ym9vbCBpc1ZlcnRleEFycmF5T2JqZWN0U3VwcG9ydGVkKCk7CiAjZW5kaWYKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCmluZGV4IGQwZWVhZTAyYWIwYWRiNDdkYWRi
MWNmN2UyNGIzMTE0OGFlODg2NDYuLjgwNjEwZGU3ZDQzMWNmNDI2Mjk5N2Y0ZmZjZTM3YjZiZTFl
ZTc0MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBAIC0yMTQs
NyArMjE0LDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VHJhbnNsYXRl
ZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QKIAogdm9pZCBFeHRlbnNpb25zR0xP
cGVuR0xDb21tb246OmluaXRpYWxpemVBdmFpbGFibGVFeHRlbnNpb25zKCkKIHsKLSNpZiAoUExB
VEZPUk0oQ09DT0EpICYmIFVTRShPUEVOR0wpKSB8fCAoUExBVEZPUk0oR1RLKSAmJiAhVVNFKE9Q
RU5HTF9FUykpCisjaWYgUExBVEZPUk0oR1RLKSAmJiAhVVNFKE9QRU5HTF9FUykKICAgICBpZiAo
bV91c2VJbmRleGVkR2V0U3RyaW5nKSB7CiAgICAgICAgIEdMaW50IG51bUV4dGVuc2lvbnMgPSAw
OwogICAgICAgICA6OmdsR2V0SW50ZWdlcnYoR0xfTlVNX0VYVEVOU0lPTlMsICZudW1FeHRlbnNp
b25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IGJkNWM2ZTY2
ZjMxMTdiYWJmZWVkZGMxMmQ5MTM2ZjNhNWFmOWZhYjYuLmMxZjkyNjViMTY5NWE1ZDY0YzM3Y2Zh
ZjVjOGMwNGRjMDljNTgxYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNw
cApAQCAtODA4LDEzICs4MDgsMTEgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFj
a1BpeGVscyhjb25zdCB1aW50OF90KiBzb3VyY2VEYXRhLCBEYXRhRm9ybWF0IHMKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotI2lmICEoUExBVEZPUk0oQ09DT0EpICYmIChVU0UoT1BFTkdMKSB8fCBV
U0UoQU5HTEUpKSkKKyNpZiAhUExBVEZPUk0oQ09DT0EpCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKQogewogfQotI2VuZGlmCiAKLSNpZiAh
UExBVEZPUk0oQ09DT0EpCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzaW11bGF0ZUNv
bnRleHRDaGFuZ2VkKCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5k
ZXggNzcxOWM5MTQxMzI0YmI2ZTk5MjVjNGU0NzhmOWRhNTZhNDhjMTZlNy4uZjg1ODJjNjE3YjA3
NjhhMDUzNDI0YWU5N2I3YzljNjYyY2UwMzBiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmgKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2lmIEVOQUJMRShHUkFQSElDU19DT05URVhU
X0dMKQogCi0jaW5jbHVkZSAiQU5HTEVXZWJLaXRCcmlkZ2UuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHRHTC5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaENvdW50
ZWRTZXQuaD4KQEAgLTQwLDYgKzM5LDEwIEBACiAjaW5jbHVkZSAiUGxhdGZvcm1DQUxheWVyLmgi
CiAjZW5kaWYKIAorI2lmICFVU0UoQU5HTEUpCisjaW5jbHVkZSAiQU5HTEVXZWJLaXRCcmlkZ2Uu
aCIKKyNlbmRpZgorCiAvLyBGSVhNRTogRmluZCBhIGJldHRlciB3YXkgdG8gYXZvaWQgdGhlIG5h
bWUgY29uZmxpY3Rpb24gZm9yIE5PX0VSUk9SLgogI2lmIFBMQVRGT1JNKFdJTikKICN1bmRlZiBO
T19FUlJPUgpAQCAtNDksMTIgKzUyLDYgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
Ci0jaWYgVVNFKE9QRU5HTF9FUykKLSNpbmNsdWRlIDxPcGVuR0xFUy9FUzIvZ2wuaD4KLSNpZmRl
ZiBfX09CSkNfXwotI2ltcG9ydCA8T3BlbkdMRVMvRUFHTC5oPgotI2VuZGlmIC8vIF9fT0JKQ19f
Ci0jZW5kaWYgLy8gVVNFKE9QRU5HTF9FUykKIE9CSkNfQ0xBU1MgQ0FMYXllcjsKIE9CSkNfQ0xB
U1MgV2ViR0xMYXllcjsKIHR5cGVkZWYgc3RydWN0IF9fSU9TdXJmYWNlKiBJT1N1cmZhY2VSZWY7
CkBAIC03MCw5ICs2Nyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEV4dGVuc2lvbnNH
TDsKICNpZiBVU0UoQU5HTEUpCiBjbGFzcyBFeHRlbnNpb25zR0xBTkdMRTsKLSNlbGlmICFQTEFU
Rk9STShDT0NPQSkgJiYgVVNFKE9QRU5HTF9FUykKKyNlbGlmIFVTRShPUEVOR0xfRVMpCiBjbGFz
cyBFeHRlbnNpb25zR0xPcGVuR0xFUzsKLSNlbGlmIFVTRShPUEVOR0wpIHx8IChQTEFURk9STShD
T0NPQSkgJiYgVVNFKE9QRU5HTF9FUykpCisjZWxpZiBVU0UoT1BFTkdMKQogY2xhc3MgRXh0ZW5z
aW9uc0dMT3BlbkdMOwogI2VuZGlmCiBjbGFzcyBIb3N0V2luZG93OwpAQCAtMTAyLDE2ICs5OSwx
NCBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBzdGF0aWMgUmVmPEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMPiBjcmVhdGVTaGFyZWQoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wm
IHNoYXJlZENvbnRleHQpOwotI2VuZGlmCi0KLSNpZiBQTEFURk9STShDT0NPQSkKICAgICBQbGF0
Zm9ybUdyYXBoaWNzQ29udGV4dEdMIHBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0woKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2NvbnRleHRPYmo7IH0KICAgICBQbGF0Zm9ybUdMT2JqZWN0IHBs
YXRmb3JtVGV4dHVyZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdGV4dHVyZTsgfQogICAg
IENBTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByZWludGVy
cHJldF9jYXN0PENBTGF5ZXIqPihtX3dlYkdMTGF5ZXIuZ2V0KCkpOyB9Ci0jaWYgVVNFKEFOR0xF
KQogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xEaXNwbGF5IHBsYXRmb3JtRGlzcGxheSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheU9iajsgfQogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0R0xDb25maWcgcGxhdGZvcm1Db25maWcoKSBjb25zdCB7IHJldHVybiBtX2NvbmZpZ09iajsg
fQotI2VuZGlmIC8vIFVTRShBTkdMRSkKKyAgICBzdGF0aWMgR0NHTGVudW0gSU9TdXJmYWNlVGV4
dHVyZVRhcmdldCgpOworICAgIHN0YXRpYyBHQ0dMZW51bSBJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0
UXVlcnkoKTsKKyAgICBzdGF0aWMgR0NHTGludCBFR0xJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0KCk7
CiAjZWxzZQogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgcGxhdGZvcm1HcmFwaGljc0Nv
bnRleHRHTCgpIGNvbnN0IGZpbmFsOwogICAgIFBsYXRmb3JtR0xPYmplY3QgcGxhdGZvcm1UZXh0
dXJlKCkgY29uc3QgZmluYWw7CkBAIC0xMTksNyArMTE0LDcgQEAgcHVibGljOgogI2VuZGlmCiAK
ICAgICBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpOwotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
ICYmIFVTRShBTkdMRSkKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGVudW0gY2xhc3Mg
UmVsZWFzZUJlaGF2aW9yIHsKICAgICAgICAgUHJlc2VydmVUaHJlYWRSZXNvdXJjZXMsCiAgICAg
ICAgIFJlbGVhc2VUaHJlYWRSZXNvdXJjZXMKQEAgLTU0OCwxOSArNTQzLDExIEBAIHB1YmxpYzoK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgYm9vbCB0ZXhJbWFnZUlPU3VyZmFj
ZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBJ
T1N1cmZhY2VSZWYsIEdDR0x1aW50IHBsYW5lKTsKLQotI2lmIFVTRShPUEVOR0xfRVMpCi0gICAg
dm9pZCBwcmVzZW50UmVuZGVyYnVmZmVyKCk7Ci0jZW5kaWYKLQotI2lmIFVTRShPUEVOR0wpIHx8
IFVTRShBTkdMRSkKICAgICBib29sIGFsbG9jYXRlSU9TdXJmYWNlQmFja2luZ1N0b3JlKEludFNp
emUpOwogICAgIHZvaWQgdXBkYXRlRnJhbWVidWZmZXJUZXh0dXJlQmFja2luZ1N0b3JlRnJvbUxh
eWVyKCk7Ci0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKKyNpZiBQ
TEFURk9STShNQUMpCiAgICAgdm9pZCB1cGRhdGVDR0xDb250ZXh0KCk7CiAjZW5kaWYKLSNlbmRp
ZgogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQogCiAgICAgdm9pZCBzZXRDb250ZXh0VmlzaWJp
bGl0eShib29sKTsKQEAgLTY5NSw3ICs2ODIsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCByZXNo
YXBlRkJPcyhjb25zdCBJbnRTaXplJik7CiAgICAgdm9pZCByZXNvbHZlTXVsdGlzYW1wbGluZ0lm
TmVjZXNzYXJ5KGNvbnN0IEludFJlY3QmID0gSW50UmVjdCgpKTsKLSAgICB2b2lkIGF0dGFjaERl
cHRoQW5kU3RlbmNpbEJ1ZmZlcklmTmVlZGVkKEdMdWludCBpbnRlcm5hbERlcHRoU3RlbmNpbEZv
cm1hdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKyAgICB2b2lkIGF0dGFjaERlcHRoQW5kU3Rl
bmNpbEJ1ZmZlcklmTmVlZGVkKEdDR0x1aW50IGludGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0LCBp
bnQgd2lkdGgsIGludCBoZWlnaHQpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCBh
bGxvd09mZmxpbmVSZW5kZXJlcnMoKSBjb25zdDsKQEAgLTcwNywxNiArNjk0LDE1IEBAIHByaXZh
dGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2Vi
R0xMYXllcjsKICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMIG1fY29udGV4dE9iaiB7IG51
bGxwdHIgfTsKLSNpZiBVU0UoQU5HTEUpCiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTERp
c3BsYXkgbV9kaXNwbGF5T2JqIHsgbnVsbHB0ciB9OwogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0R0xDb25maWcgbV9jb25maWdPYmogeyBudWxscHRyIH07Ci0jZW5kaWYgLy8gVVNFKEFOR0xF
KQogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQogCiAjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0Uo
Q0EpCiAgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gbV93ZWJHTExheWVyOwogI2VuZGlmCiAK
KyNpZiAhVVNFKEFOR0xFKQogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIHNoOjpTaGFkZXJW
YXJpYWJsZT4gU2hhZGVyU3ltYm9sTWFwOwogCiAgICAgc3RydWN0IFNoYWRlclNvdXJjZUVudHJ5
IHsKQEAgLTc0NSw3ICs3MzEsNiBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgfTsKIAotI2lm
ICFVU0UoQU5HTEUpCiAgICAgLy8gRklYTUU6IFNoYWRlcnMgYXJlIG5ldmVyIHJlbW92ZWQgZnJv
bSB0aGlzIG1hcCwgZXZlbiBpZiB0aGV5IGFuZCB0aGVpciBwcm9ncmFtIGFyZSBkZWxldGVkLgog
ICAgIC8vIFRoaXMgaXMgYmFkLCBhbmQgaXQgYWxzbyByZWxpZXMgb24gdGhlIGZhY3Qgd2UgbmV2
ZXIgcmV1c2UgUGxhdGZvcm1HTE9iamVjdCBudW1iZXJzLgogICAgIHR5cGVkZWYgSGFzaE1hcDxQ
bGF0Zm9ybUdMT2JqZWN0LCBTaGFkZXJTb3VyY2VFbnRyeT4gU2hhZGVyU291cmNlTWFwOwpAQCAt
Nzg5LDExICs3NzQsMTEgQEAgcHJpdmF0ZToKICNpZiBVU0UoQU5HTEUpCiAgICAgZnJpZW5kIGNs
YXNzIEV4dGVuc2lvbnNHTEFOR0xFOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25zR0xB
TkdMRT4gbV9leHRlbnNpb25zOwotI2VsaWYgIVBMQVRGT1JNKENPQ09BKSAmJiBVU0UoT1BFTkdM
X0VTKQorI2VsaWYgVVNFKE9QRU5HTF9FUykKICAgICBmcmllbmQgY2xhc3MgRXh0ZW5zaW9uc0dM
T3BlbkdMRVM7CiAgICAgZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uc0dMT3BlbkdMRVM+IG1fZXh0ZW5zaW9uczsKLSNl
bGlmIFVTRShPUEVOR0wpIHx8IChQTEFURk9STShDT0NPQSkgJiYgVVNFKE9QRU5HTF9FUykpCisj
ZWxpZiBVU0UoT1BFTkdMKQogICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0w7CiAg
ICAgZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8RXh0ZW5zaW9uc0dMT3BlbkdMPiBtX2V4dGVuc2lvbnM7CkBAIC04MjAsMTAgKzgwNSw2
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2xheWVyQ29tcG9zaXRlZCB7IGZhbHNlIH07CiAgICAg
R0NHTHVpbnQgbV9pbnRlcm5hbENvbG9yRm9ybWF0IHsgMCB9OwogCi0jaWYgVVNFKEFOR0xFKSAm
JiBQTEFURk9STShDT0NPQSkKLSAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMU3VyZmFjZSBt
X3BidWZmZXI7Ci0jZW5kaWYKLQogICAgIHN0cnVjdCBHcmFwaGljc0NvbnRleHRHTFN0YXRlIHsK
ICAgICAgICAgR0NHTHVpbnQgYm91bmRSZWFkRkJPIHsgMCB9OwogICAgICAgICBHQ0dMdWludCBi
b3VuZERyYXdGQk8geyAwIH07CkBAIC05MDgsMTMgKzg4OSw5IEBAIHByaXZhdGU6CiAgICAgUGxh
dGZvcm1HTE9iamVjdCBtX3ZhbyB7IDAgfTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0Ep
ICYmIChVU0UoT1BFTkdMKSB8fCBVU0UoQU5HTEUpKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IGJvb2wgbV9oYXNTd2l0Y2hlZFRvSGlnaFBlcmZvcm1hbmNlR1BVIHsgZmFsc2UgfTsKICNlbmRp
ZgotCi0jaWYgUExBVEZPUk0oTUFDKSAmJiBVU0UoT1BFTkdMKQotICAgIGJvb2wgbV9uZWVkc0Zs
dXNoQmVmb3JlRGVsZXRlVGV4dHVyZXMgeyBmYWxzZSB9OwotI2VuZGlmCiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2Uu
Y3BwCmluZGV4IGM0ZjhiNmExZTI5MDdlZGZhMDdkZjBjNmViNzk3ODczYmRkNjkzOTMuLmI1OGJi
MDJjZTdmOGFkM2NlOWJhZmExNjE1Zjc0ZjI2NzY1YWNhZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCkBAIC0yNywxMSArMjcsOCBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCiAKLSNpZiBF
TkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkgJiYgKFVTRShPUEVOR0wpIHx8IChQTEFURk9STShD
T0NPQSkgJiYgVVNFKE9QRU5HTF9FUykpKQorI2lmIEVOQUJMRShHUkFQSElDU19DT05URVhUX0dM
KSAmJiBVU0UoT1BFTkdMKQogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHRHTE9wZW5HTEVTSU9TLmgiCi0jZW5kaWYKICNpbmNsdWRlICJFeHRlbnNp
b25zR0xPcGVuR0wuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5o
IgpAQCAtNjMsMTYgKzYwLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgUExBVEZP
Uk0oTUFDKQotc3RhdGljIHZvaWQgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMoaW50IHdpZHRo
LCBpbnQgaGVpZ2h0LCB1bnNpZ25lZCBjaGFyKiBwaXhlbHMpCi17Ci0gICAgLy8gV2UgY2FuIGFz
c3VtZSB0aGlzIGRvZXNuJ3Qgb3ZlcmZsb3cgYmVjYXVzZSB0aGUgY2FsbGluZyBmdW5jdGlvbnMK
LSAgICAvLyB1c2UgY2hlY2tlZCBhcml0aG1ldGljLgotICAgIGludCB0b3RhbEJ5dGVzID0gd2lk
dGggKiBoZWlnaHQgKiA0OwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdG90YWxCeXRlczsgaSAr
PSA0KQotICAgICAgICBwaXhlbHNbaSArIDNdID0gMjU1OwotfQotI2VuZGlmCiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNBbmRDb252ZXJ0VG9CR1JBSWZOZWNlc3Nh
cnkoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVuc2lnbmVkIGNoYXIqIHBp
eGVscykKIHsKQEAgLTEwNSwxMCArOTIsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZWFkUGl4ZWxzQW5kQ29udmVydFRvQkdSQUlmTmVjZXNzYXJ5KGludCB4LCBpbnQgeQogICAg
IH0gZWxzZQogICAgICAgICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBHTF9C
R1JBLCBHTF9VTlNJR05FRF9JTlRfOF84XzhfOF9SRVYsIHBpeGVscyk7CiAKLSNpZiBQTEFURk9S
TShNQUMpCi0gICAgaWYgKCFhdHRycy5hbHBoYSkKLSAgICAgICAgd2lwZUFscGhhQ2hhbm5lbEZy
b21QaXhlbHMod2lkdGgsIGhlaWdodCwgcGl4ZWxzKTsKLSNlbmRpZgogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJpYnV0ZXMoKQpAQCAtMTM4LDExICsxMjEs
NyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRT
aXplJiBzaXplKQogICAgICAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tl
ZF9kZXB0aF9zdGVuY2lsIikpCiAgICAgICAgICAgICBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1h
dCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOwogICAgICAgICBlbHNlCi0jaWYgUExBVEZPUk0o
Q09DT0EpICYmIFVTRShPUEVOR0xfRVMpCi0gICAgICAgICAgICBpbnRlcm5hbERlcHRoU3RlbmNp
bEZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVOVDE2OwotI2Vsc2UKICAgICAgICAgICAgIGludGVy
bmFsRGVwdGhTdGVuY2lsRm9ybWF0ID0gR0xfREVQVEhfQ09NUE9ORU5UOwotI2VuZGlmCiAgICAg
fQogCiAgICAgLy8gUmVzaXplIG11bHRpc2FtcGxlIEZCTy4KQEAgLTE1NCwxMSArMTMzLDcgQEAg
Ym9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYg
c2l6ZSkKICAgICAgICAgR0xpbnQgc2FtcGxlQ291bnQgPSBzdGQ6Om1pbig0LCBtYXhTYW1wbGVD
b3VudCk7CiAgICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhU
LCBtX211bHRpc2FtcGxlRkJPKTsKICAgICAgICAgOjpnbEJpbmRSZW5kZXJidWZmZXJFWFQoR0xf
UkVOREVSQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVyKTsKLSNpZiBQTEFURk9S
TShDT0NPQSkgJiYgVVNFKE9QRU5HTF9FUykKLSAgICAgICAgOjpnbFJlbmRlcmJ1ZmZlclN0b3Jh
Z2VNdWx0aXNhbXBsZUVYVChHTF9SRU5ERVJCVUZGRVJfRVhULCBzYW1wbGVDb3VudCwgR0xfUkdC
QThfT0VTLCB3aWR0aCwgaGVpZ2h0KTsKLSNlbHNlCiAgICAgICAgIDo6Z2xSZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGVFWFQoR0xfUkVOREVSQlVGRkVSX0VYVCwgc2FtcGxlQ291bnQsIG1f
aW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCk7Ci0jZW5kaWYKICAgICAgICAgOjpn
bEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgR0xfQ09MT1Jf
QVRUQUNITUVOVDBfRVhULCBHTF9SRU5ERVJCVUZGRVJfRVhULCBtX211bHRpc2FtcGxlQ29sb3JC
dWZmZXIpOwogICAgICAgICBpZiAoYXR0cnMuc3RlbmNpbCB8fCBhdHRycy5kZXB0aCkgewogICAg
ICAgICAgICAgOjpnbEJpbmRSZW5kZXJidWZmZXJFWFQoR0xfUkVOREVSQlVGRkVSX0VYVCwgbV9t
dWx0aXNhbXBsZURlcHRoU3RlbmNpbEJ1ZmZlcik7CkBAIC0yNTIsMjcgKzIyNywxMyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNvbHZlTXVsdGlzYW1wbGluZ0lmTmVjZXNzYXJ5
KGNvbnN0IEludFJlY3QmIHJlYwogICAgIFRlbXBvcmFyeU9wZW5HTFNldHRpbmcgc2NvcGVkRGVw
dGgoR0xfREVQVEhfVEVTVCwgR0xfRkFMU0UpOwogICAgIFRlbXBvcmFyeU9wZW5HTFNldHRpbmcg
c2NvcGVkU3RlbmNpbChHTF9TVEVOQ0lMX1RFU1QsIEdMX0ZBTFNFKTsKIAotI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiBVU0UoT1BFTkdMX0VTKQotICAgIEdMaW50IGJvdW5kRnJhbWVCdWZmZXI7Ci0g
ICAgOjpnbEdldEludGVnZXJ2KEdMX0ZSQU1FQlVGRkVSX0JJTkRJTkcsICZib3VuZEZyYW1lQnVm
ZmVyKTsKLSNlbmRpZgotCiAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9SRUFEX0ZSQU1F
QlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7CiAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVY
VChHTF9EUkFXX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOwotI2lmIFBMQVRGT1JNKENPQ09BKSAm
JiBVU0UoT1BFTkdMX0VTKQotICAgIFVOVVNFRF9QQVJBTShyZWN0KTsKLSAgICA6OmdsRmx1c2go
KTsKLSAgICA6OmdsUmVzb2x2ZU11bHRpc2FtcGxlRnJhbWVidWZmZXJBUFBMRSgpOwotICAgIGNv
bnN0IEdMZW51bSBkaXNjYXJkc1tdID0geyBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfREVQVEhf
QVRUQUNITUVOVCB9OwotICAgIDo6Z2xEaXNjYXJkRnJhbWVidWZmZXJFWFQoR0xfUkVBRF9GUkFN
RUJVRkZFUl9BUFBMRSwgMiwgZGlzY2FyZHMpOwotICAgIDo6Z2xCaW5kRnJhbWVidWZmZXIoR0xf
RlJBTUVCVUZGRVIsIGJvdW5kRnJhbWVCdWZmZXIpOwotI2Vsc2UKICAgICBJbnRSZWN0IHJlc29s
dmVSZWN0ID0gcmVjdDsKICAgICBpZiAocmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJlc29sdmVS
ZWN0ID0gSW50UmVjdCgwLCAwLCBtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0KTsKIAog
ICAgIDo6Z2xCbGl0RnJhbWVidWZmZXJFWFQocmVzb2x2ZVJlY3QueCgpLCByZXNvbHZlUmVjdC55
KCksIHJlc29sdmVSZWN0Lm1heFgoKSwgcmVzb2x2ZVJlY3QubWF4WSgpLCByZXNvbHZlUmVjdC54
KCksIHJlc29sdmVSZWN0LnkoKSwgcmVzb2x2ZVJlY3QubWF4WCgpLCByZXNvbHZlUmVjdC5tYXhZ
KCksIEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX0xJTkVBUik7Ci0jZW5kaWYKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVuZGVyYnVmZmVyU3RvcmFnZShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQpCkBAIC0zMzksMjAgKzMwMCw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50KiB2YWx1ZSkKICAgICAgICAgaWYg
KGdldEV4dGVuc2lvbnMoKS5yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSkK
ICAgICAgICAgICAgICp2YWx1ZSA9IHN0ZDo6bWluKDEwMjQsICp2YWx1ZSk7CiAgICAgICAgIGJy
ZWFrOwotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAvLyBTb21lIG9sZGVyIGhhcmR3YXJlIGFkdmVy
dGlzZXMgYSBsYXJnZXIgbWF4aW11bSB0aGFuIHRoZXkKLSAgICAvLyBjYW4gYWN0dWFsbHkgaGFu
ZGxlLiBSYXRoZXIgdGhhbiBkZXRlY3Rpbmcgc3VjaCBkZXZpY2VzLCBzaW1wbHkKLSAgICAvLyBj
bGFtcCB0aGUgbWF4aW11bSB0byA4MTkyLCB3aGljaCBpcyBiaWcgZW5vdWdoIGZvciBhIDVLIGRp
c3BsYXkuCi0gICAgY2FzZSBNQVhfUkVOREVSQlVGRkVSX1NJWkU6Ci0gICAgICAgIDo6Z2xHZXRJ
bnRlZ2VydihNQVhfUkVOREVSQlVGRkVSX1NJWkUsIHZhbHVlKTsKLSAgICAgICAgKnZhbHVlID0g
c3RkOjptaW4oODE5MiwgKnZhbHVlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNQVhfVklF
V1BPUlRfRElNUzoKLSAgICAgICAgOjpnbEdldEludGVnZXJ2KE1BWF9WSUVXUE9SVF9ESU1TLCB2
YWx1ZSk7Ci0gICAgICAgIHZhbHVlWzBdID0gc3RkOjptaW4oODE5MiwgdmFsdWVbMF0pOwotICAg
ICAgICB2YWx1ZVsxXSA9IHN0ZDo6bWluKDgxOTIsIHZhbHVlWzFdKTsKLSAgICAgICAgYnJlYWs7
Ci0jZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICA6OmdsR2V0SW50ZWdlcnYocG5hbWUsIHZh
bHVlKTsKICAgICB9CkBAIC00NTgsMzIgKzQwNSwyMCBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dQogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZGVwdGhSYW5nZShHQ0dMY2xhbXBmIHpO
ZWFyLCBHQ0dMY2xhbXBmIHpGYXIpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0jaWYg
UExBVEZPUk0oQ09DT0EpICYmIFVTRShPUEVOR0xfRVMpCi0gICAgOjpnbERlcHRoUmFuZ2VmKHN0
YXRpY19jYXN0PGZsb2F0Pih6TmVhciksIHN0YXRpY19jYXN0PGZsb2F0Pih6RmFyKSk7Ci0jZWxz
ZQogICAgIDo6Z2xEZXB0aFJhbmdlKHpOZWFyLCB6RmFyKTsKLSNlbmRpZgogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjbGVhckRlcHRoKEdDR0xjbGFtcGYgZGVwdGgpCiB7CiAg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0jaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShPUEVO
R0xfRVMpCi0gICAgOjpnbENsZWFyRGVwdGhmKHN0YXRpY19jYXN0PGZsb2F0PihkZXB0aCkpOwot
I2Vsc2UKICAgICA6OmdsQ2xlYXJEZXB0aChkZXB0aCk7Ci0jZW5kaWYKIH0KIAogI2lmICFQTEFU
Rk9STShHVEspCiBFeHRlbnNpb25zR0wmIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRl
bnNpb25zKCkKIHsKICAgICBpZiAoIW1fZXh0ZW5zaW9ucykKLSNpZiBQTEFURk9STShDT0NPQSkg
JiYgVVNFKE9QRU5HTF9FUykKLSAgICAgICAgbV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRl
bnNpb25zR0xPcGVuR0w+KHRoaXMsIGZhbHNlKTsKLSNlbHNlCiAgICAgICAgIG1fZXh0ZW5zaW9u
cyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uc0dMT3BlbkdMPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50
KCkpOwotI2VuZGlmCiAgICAgcmV0dXJuICptX2V4dGVuc2lvbnM7CiB9CiAjZW5kaWYKQEAgLTUw
NSwxMyArNDQwLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVscyhH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLAogICAgIDo6Z2xSZWFkUGl4ZWxz
KHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YSk7CiAgICAgaWYgKGF0dHJz
LmFudGlhbGlhcyAmJiBtX3N0YXRlLmJvdW5kRHJhd0ZCTyA9PSBtX211bHRpc2FtcGxlRkJPKQog
ICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJV
RkZFUiwgbV9tdWx0aXNhbXBsZUZCTyk7Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKCFh
dHRycy5hbHBoYSAmJiAoZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpSR0JBIHx8IGZvcm1h
dCA9PSBHcmFwaGljc0NvbnRleHRHTDo6QkdSQSkgJiYgKG1fc3RhdGUuYm91bmREcmF3RkJPID09
IG1fZmJvIHx8IChhdHRycy5hbnRpYWxpYXMgJiYgbV9zdGF0ZS5ib3VuZERyYXdGQk8gPT0gbV9t
dWx0aXNhbXBsZUZCTykpKQotICAgICAgICB3aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVscyh3aWR0
aCwgaGVpZ2h0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oZGF0YSkpOwotI2VuZGlmCiB9
CiAKIH0KIAotI2VuZGlmIC8vIEVOQUJMRShHUkFQSElDU19DT05URVhUX0dMKSAmJiAoVVNFKE9Q
RU5HTCkgfHwgKFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoT1BFTkdMX0VTKSkpCisjZW5kaWYgLy8g
RU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfR0wpICYmIFVTRShPUEVOR0wpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAppbmRleCBiMDYwZGIwNGU4OTAzMTYz
NTIzOTYyMWQ2ODUzOGRmMTJiOGI2MmJlLi43NDFlZTRjMTRlYWEyNjZhNzlmZWI3ZDEyMDYyYWFh
YTNjZWI1MWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1v
bi5jcHAKQEAgLTMxLDExICszMSw3IEBACiAKICNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9H
TCkgJiYgKFVTRShPUEVOR0wpIHx8IFVTRShPUEVOR0xfRVMpKQogCi0jaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTSU9TLmgiCi0jZW5k
aWYKLQotI2lmICFQTEFURk9STShDT0NPQSkgJiYgVVNFKE9QRU5HTF9FUykKKyNpZiBVU0UoT1BF
TkdMX0VTKQogI2luY2x1ZGUgIkV4dGVuc2lvbnNHTE9wZW5HTEVTLmgiCiAjZWxzZQogI2luY2x1
ZGUgIkV4dGVuc2lvbnNHTE9wZW5HTC5oIgpAQCAtNTksMjQgKzU1LDYgQEAKICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgog
Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0KLSNpZiBVU0UoT1BFTkdMX0VTKQotI2ltcG9ydCA8T3Bl
bkdMRVMvRVMyL2dsZXh0Lmg+Ci0jaW1wb3J0IDxPcGVuR0xFUy9FUzMvZ2wuaD4KLS8vIEZyb20g
PE9wZW5HTEVTL2dsZXh0Lmg+Ci0jZGVmaW5lIEdMX1JHQkEzMkZfQVJCICAgICAgICAgICAgICAg
ICAgICAgIDB4ODgxNAotI2RlZmluZSBHTF9SR0IzMkZfQVJCICAgICAgICAgICAgICAgICAgICAg
ICAweDg4MTUKLSNlbHNlCi0jZGVmaW5lIEdMX0RPX05PVF9XQVJOX0lGX01VTFRJX0dMX1ZFUlNJ
T05fSEVBREVSU19JTkNMVURFRAotI2luY2x1ZGUgPE9wZW5HTC9nbC5oPgotI2luY2x1ZGUgPE9w
ZW5HTC9nbDMuaD4KLSNpbmNsdWRlIDxPcGVuR0wvZ2wzZXh0Lmg+Ci0jdW5kZWYgR0xfRE9fTk9U
X1dBUk5fSUZfTVVMVElfR0xfVkVSU0lPTl9IRUFERVJTX0lOQ0xVREVECi0jZW5kaWYKLQotI2Vs
c2UKLQogI2lmIFVTRShMSUJFUE9YWSkKICNpbmNsdWRlICJFcG94eVNoaW1zLmgiCiAjZWxpZiBV
U0UoT1BFTkdMX0VTKQpAQCAtODUsOSArNjMsNiBAQAogI2luY2x1ZGUgIk9wZW5HTFNoaW1zLmgi
CiAjZW5kaWYKIAotI2VuZGlmCi0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgVGhy
ZWFkU3BlY2lmaWM8U2hhZGVyTmFtZUhhc2gqPiYgZ2V0Q3VycmVudE5hbWVIYXNoTWFwRm9yU2hh
ZGVyKCkKQEAgLTE4OSwxMCArMTY0LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqIGltYWdlQnUKICAgICB9
CiAKICAgICBwYWludFRvQ2FudmFzKHBpeGVscy5nZXQoKSwgSW50U2l6ZShtX2N1cnJlbnRXaWR0
aCwgbV9jdXJyZW50SGVpZ2h0KSwgaW1hZ2VCdWZmZXItPmJhY2tlbmRTaXplKCksIGltYWdlQnVm
ZmVyLT5jb250ZXh0KCkpOwotCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShPUEVOR0xfRVMp
Ci0gICAgcHJlc2VudFJlbmRlcmJ1ZmZlcigpOwotI2VuZGlmCiB9CiAKIGJvb2wgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZl
ciopCkBAIC03MTEsMTEgKzY4Miw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNv
cHlUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHCiAgICAgOjpn
bENvcHlUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB4LCB5LCB3aWR0
aCwgaGVpZ2h0LCBib3JkZXIpOwogICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgbV9zdGF0ZS5i
b3VuZERyYXdGQk8gPT0gbV9tdWx0aXNhbXBsZUZCTykKICAgICAgICAgOjpnbEJpbmRGcmFtZWJ1
ZmZlckVYVChHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVIsIG1fbXVsdGlzYW1wbGVGQk8p
OwotCi0jaWYgUExBVEZPUk0oTUFDKSAmJiBVU0UoT1BFTkdMKQotICAgIGlmIChnZXRFeHRlbnNp
b25zKCkuaXNJbnRlbCgpKQotICAgICAgICBtX25lZWRzRmx1c2hCZWZvcmVEZWxldGVUZXh0dXJl
cyA9IHRydWU7Ci0jZW5kaWYKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29w
eVRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhv
ZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKQEAgLTczMSwxMSArNjk3LDYgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Y29weVRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLAogICAgIDo6Z2xDb3B5VGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zm
c2V0LCB5b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKICAgICBpZiAoYXR0cnMuYW50aWFs
aWFzICYmIG1fc3RhdGUuYm91bmREcmF3RkJPID09IG1fbXVsdGlzYW1wbGVGQk8pCiAgICAgICAg
IDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSLCBt
X211bHRpc2FtcGxlRkJPKTsKLQotI2lmIFBMQVRGT1JNKE1BQykgJiYgVVNFKE9QRU5HTCkKLSAg
ICBpZiAoZ2V0RXh0ZW5zaW9ucygpLmlzSW50ZWwoKSkKLSAgICAgICAgbV9uZWVkc0ZsdXNoQmVm
b3JlRGVsZXRlVGV4dHVyZXMgPSB0cnVlOwotI2VuZGlmCiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmN1bGxGYWNlKEdDR0xlbnVtIG1vZGUpCkBAIC04MDcsMTggKzc2OCwxMiBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpmaW5pc2goKQogewogICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOwogICAgIDo6Z2xGaW5pc2goKTsKLSNpZiBQTEFURk9STShNQUMpICYmIFVT
RShPUEVOR0wpCi0gICAgbV9uZWVkc0ZsdXNoQmVmb3JlRGVsZXRlVGV4dHVyZXMgPSBmYWxzZTsK
LSNlbmRpZgogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpmbHVzaCgpCiB7CiAg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgOjpnbEZsdXNoKCk7Ci0jaWYgUExBVEZPUk0o
TUFDKSAmJiBVU0UoT1BFTkdMKQotICAgIG1fbmVlZHNGbHVzaEJlZm9yZURlbGV0ZVRleHR1cmVz
ID0gZmFsc2U7Ci0jZW5kaWYKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZnJh
bWVidWZmZXJSZW5kZXJidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50
LCBHQ0dMZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyKQpA
QCAtMTk5MSwxMCArMTk0Niw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRlbGV0
ZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmRlbGV0ZVRleHR1cmUoUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlKQogewogICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOwotI2lmIFBMQVRGT1JNKE1BQykgJiYgVVNFKE9QRU5HTCkKLSAg
ICBpZiAobV9uZWVkc0ZsdXNoQmVmb3JlRGVsZXRlVGV4dHVyZXMpCi0gICAgICAgIGZsdXNoKCk7
Ci0jZW5kaWYKICAgICBtX3N0YXRlLmJvdW5kVGV4dHVyZU1hcC5yZW1vdmVJZihbdGV4dHVyZV0g
KGF1dG8mIGtleVZhbHVlKSB7CiAgICAgICAgIHJldHVybiBrZXlWYWx1ZS52YWx1ZS5maXJzdCA9
PSB0ZXh0dXJlOwogICAgIH0pOwpAQCAtMjEwNCw3ICsyMDU1LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gcmVhZFRhcmdldCwgR0NH
TGVudW0gd3IKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICA6OmdsQ29weUJ1ZmZlclN1
YkRhdGEocmVhZFRhcmdldCwgd3JpdGVUYXJnZXQsIHJlYWRPZmZzZXQsIHdyaXRlT2Zmc2V0LCBz
aXplKTsKIH0KLSNlbGlmICFVU0UoQU5HTEUpCisjZWxzZQogdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Y29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMaW50cHRy
LCBHQ0dMaW50cHRyLCBHQ0dMc2l6ZWlwdHIpCiB7CiB9CkBAIC0yMTMxLDcgKzIwODIsNyBAQCBH
Q0dMYm9vbGVhbiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5tYXBCdWZmZXIoR0NHTGVudW0g
dGFyZ2V0KQogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIHJldHVybiA6OmdsVW5tYXBC
dWZmZXIodGFyZ2V0KTsKIH0KLSNlbGlmICFVU0UoQU5HTEUpCisjZWxzZQogdm9pZCogR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6Om1hcEJ1ZmZlclJhbmdlKEdDR0xlbnVtLCBHQ0dMaW50cHRyLCBH
Q0dMc2l6ZWlwdHIsIEdDR0xiaXRmaWVsZCkKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIy
MjMsNyArMjE3NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleFN0b3JhZ2Uz
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDCiAgICAgOjpnbFRleFN0b3Jh
Z2UzRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRo
KTsKICAgICBtX3N0YXRlLnRleHR1cmVTZWVkQ291bnQuYWRkKG1fc3RhdGUuY3VycmVudEJvdW5k
VGV4dHVyZSgpKTsKIH0KLSNlbGlmICFVU0UoQU5HTEUpCisjZWxzZQogdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Z2V0SW50ZXJuYWxmb3JtYXRpdihHQ0dMZW51bSwgR0NHTGVudW0sIEdD
R0xlbnVtLCBHQ0dMc2l6ZWksIEdDR0xpbnQqKQogewogfQpAQCAtMjcxOSw3ICsyNjcwLDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dW5pZm9ybUJsb2NrQmluZGluZyhQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIEdDR0wKICAgICBVTlVTRURfUEFSQU0odW5pZm9ybUJsb2NrSW5k
ZXgpOwogICAgIFVOVVNFRF9QQVJBTSh1bmlmb3JtQmxvY2tCaW5kaW5nKTsKIH0KLSNlbGlmICFV
U0UoQU5HTEUpCisjZWxzZQogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0QWN0aXZl
VW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYsIEdDR0xl
bnVtLCBWZWN0b3I8R0NHTGludD4mKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMRVMuY3BwCmluZGV4IDMwZDEwYjFlMTBjN2FjOTQxNWRkNTNkMWVmZjMwNGZlZmE3ZTEw
MTguLjkzODk1ZTU2YjBjNWE1YmQ4NGNiMGFhNDk4NjgyMGFhNjcxMTQ4MTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgogCi0j
aWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfR0wpICYmIFVTRShPUEVOR0xfRVMpICYmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQorI2lmIEVOQUJMRShHUkFQSElDU19DT05URVhUX0dMKSAmJiBVU0Uo
T1BFTkdMX0VTKQogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMT3BlbkdMRVMuaCIKICNpbmNsdWRl
ICJJbnRSZWN0LmgiCkBAIC00MDYsNCArNDA2LDQgQEAgUGxhdGZvcm1MYXllciogR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogCiB9CiAKLSNlbmRpZiAvLyBF
TkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkgJiYgVVNFKE9QRU5HTF9FUykgJiYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCisjZW5kaWYgLy8gRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfR0wpICYmIFVT
RShPUEVOR0xfRVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFn
ZXIuY3BwCmluZGV4IGFiZWIzYTI0NWRhZTBhZThhMGMwODRiZjkwNTZhYjlhNzY4MTczYzkuLjNk
MzVjZDU2ODhkNDg4ZGMxMzY4MjhjMGI3Nzg1MGZmZmZhMzZiOWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuY3BwCkBAIC0zNSw5ICszNSw4IEBACiAj
aW5jbHVkZSA8c3lzL3N5c2N0bC5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpICYmIChV
U0UoT1BFTkdMKSB8fCBVU0UoQU5HTEUpKQorI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlICJT
d2l0Y2hpbmdHUFVDbGllbnQuaCIKLSNpbmNsdWRlIDxPcGVuR0wvT3BlbkdMLmg+CiAjZW5kaWYK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTM0LDcgKzEzMyw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpkaXNwbGF5V2FzUmVjb25maWd1cmVkKENHRGlyZWN0RGlz
cGxheUlELCBDCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjp1cGRhdGVB
bGxDb250ZXh0cygpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKSAmJiAoVVNFKE9QRU5HTCkgfHwgVVNF
KEFOR0xFKSkKKyNpZiBQTEFURk9STShNQUMpCiAgICAgZm9yIChjb25zdCBhdXRvJiBjb250ZXh0
IDogbV9jb250ZXh0cykgewogICAgICAgICBjb250ZXh0LT51cGRhdGVDR0xDb250ZXh0KCk7CiAg
ICAgICAgIGNvbnRleHQtPmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKTsKQEAg
LTIyMSw3ICsyMjAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6cmVt
b3ZlQ29udGV4dFJlcXVpcmluZ0hpZ2hQZXJmb3JtYW5jZShHcmFwaAogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMTWFuYWdlcjo6dXBkYXRlSGlnaFBlcmZvcm1hbmNlU3RhdGUoKQogewot
I2lmIFBMQVRGT1JNKE1BQykgJiYgKFVTRShPUEVOR0wpIHx8IFVTRShBTkdMRSkpCisjaWYgUExB
VEZPUk0oTUFDKQogICAgIGlmICghaGFzTG93QW5kSGlnaFBvd2VyR1BVcygpKQogICAgICAgICBy
ZXR1cm47CiAgICAgCkBAIC0yMzUsMTAgKzIzNCw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xNYW5hZ2VyOjp1cGRhdGVIaWdoUGVyZm9ybWFuY2VTdGF0ZSgpCiAgICAgICAgIGlmICgh
bV9yZXF1ZXN0aW5nSGlnaFBlcmZvcm1hbmNlKSB7CiAgICAgICAgICAgICBMT0coV2ViR0wsICJS
ZXF1ZXN0IHRoZSBoaWdoLXBlcmZvcm1hbmNlIEdQVS4iKTsKICAgICAgICAgICAgIG1fcmVxdWVz
dGluZ0hpZ2hQZXJmb3JtYW5jZSA9IHRydWU7Ci0jaWYgUExBVEZPUk0oTUFDKQogICAgICAgICAg
ICAgaWYgKGF1dG8qIHNpbmdsZXRvbiA9IFN3aXRjaGluZ0dQVUNsaWVudDo6c2luZ2xldG9uSWZF
eGlzdHMoKSkKICAgICAgICAgICAgICAgICBzaW5nbGV0b24tPnJlcXVlc3RIaWdoUGVyZm9ybWFu
Y2VHUFUoKTsKLSNlbmRpZgogICAgICAgICB9CiAKICAgICB9IGVsc2UgewpAQCAtMjYyLDcgKzI1
OSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyOjpkaXNhYmxlSGlnaFBl
cmZvcm1hbmNlR1BVVGltZXJGaXJlZCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcmVxdWVz
dGluZ0hpZ2hQZXJmb3JtYW5jZSA9IGZhbHNlOwotI2lmIFBMQVRGT1JNKE1BQykgJiYgKFVTRShP
UEVOR0wpIHx8IFVTRShBTkdMRSkpCisjaWYgUExBVEZPUk0oTUFDKQogICAgIGlmIChhdXRvKiBz
aW5nbGV0b24gPSBTd2l0Y2hpbmdHUFVDbGllbnQ6OnNpbmdsZXRvbklmRXhpc3RzKCkpCiAgICAg
ICAgIHNpbmdsZXRvbi0+cmVsZWFzZUhpZ2hQZXJmb3JtYW5jZUdQVSgpOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmgKaW5kZXggYWMzOWE3MzBk
ZDMwYWIwYzdiMThkM2RmOWJjNWRiY2U2MzQ2ODYzYy4uM2FmOGEwNTJhZThlMmExNWQ1YzA1MTc4
NGZiMDg1NDVlZTlhMWQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TE1hbmFnZXIuaApAQCAtMzEsNyArMzEsNiBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQogI2luY2x1
ZGUgPENvcmVHcmFwaGljcy9DR0Rpc3BsYXlDb25maWd1cmF0aW9uLmg+Ci0jaW5jbHVkZSA8T3Bl
bkdML0NHTFR5cGVzLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410819</attachid>
            <date>2020-10-08 02:00:10 -0700</date>
            <delta_ts>2020-10-08 11:56:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217374-20201008120008.patch</filename>
            <type>text/plain</type>
            <size>151830</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmIxNDM4NjEyYTZlZTY3
ZGY4ZTJiZTE1MmZkZTM1MDI5MDE0NDE5ZC4uYTVmMzU2NGVmZmJkNWYwNTliZWQ2ZDk3ZjhjNGYy
ODZmNjBmMWJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOCBAQAorMjAyMC0xMC0wOCAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIE1hYzogUmVtb3Zl
IE9wZW5HTCBhbmQgT3BlbkdMIEVTIGJhY2tlbmRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTczNzQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KKworICAgICAgICBSZW1vdmUgbWFjT1MgT3BlbkdMIChDR0wpIGFuZCBpT1MgT3Bl
bkdMIEVTIChFQUdMKQorICAgICAgICBpbXBsZW1lbnRhdGlvbnMgb2YgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuIFRoZXNlCisgICAgICAgIGFyZSBub3QgdXNlZCBhbnltb3JlIGFuZCBjYW5ub3Qg
YmUgdXNlZCBmb3IgY29uZm9ybWFudAorICAgICAgICBXZWJHTC4gVGhlIHR3byByZW1vdmVkIGJh
Y2tlbmRzIHdvdWxkIGp1c3QgY3JlYXRlCisgICAgICAgIG1haW50YWluYW5jZSBidXJkZW4uCisK
KyAgICAgICAgUmVtb3ZlcyBUZXh0dXJlQ2FjaGVDViwgdGhpcyB3YXMgbm90IGltcGxlbWVudGVk
IGZvcgorICAgICAgICBBTkdMRSBhbmQgaW4gY29tbWVudHMgaXQgd2FzIHNhaWQgdG8gYmUgZGlz
YWJsZWQgaW4KKyAgICAgICAgdGhlIHBsYXRmb3JtLgorCisgICAgICAgIEZpeGVzIGEgYnVnIHdo
ZXJlIGlPUyBhcHBzIG9uIE1hYyBBcHBsZSBTaWxpY29uIHdvdWxkCisgICAgICAgIG5vdCB1c2Ug
Y29ycmVjdCB0ZXh0dXJlIHRhcmdldCB0byBjb252ZXJ0IHRoZSB2aWRlbworICAgICAgICBmcmFt
ZXMgaW4gVmlkZW9UZXh0dXJlQ29waWVyQ1YuCisKKyAgICAgICAgRml4ZXMgZmV3IGluc3RhbmNl
cyBvZiB1c2luZyBHTCB0eXBlcyBpbiBXZWJHTCBpbXBsZW1lbnRhdGlvbgorICAgICAgICBpbnN0
ZWFkIG9mIFdlYkNvcmUgZGVmaW5lZCBHQ0dMIHR5cGVzLiBUaGlzIGlzIG5lZWRlZAorICAgICAg
ICBub3cgdGhhdCB0aGUgaW5jbHVkZXMgYXJlIChhIGJpdCkgbW9yZSBjb3JyZWN0LgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cywgYSByZWZhY3RvcmluZy4KKworICAgICAgICAqIFBsYXRmb3JtTWFj
LmNtYWtlOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL0FOR0xFSW5z
dGFuY2VkQXJyYXlzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFSW5zdGFuY2VkQXJyYXlz
OjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZWFkUGl4ZWxz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdS
ZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2Eu
bW06CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6On5HcmFwaGljc0NvbnRleHRHTE9wZW5HTCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6SU9TdXJmYWNlVGV4dHVyZVRhcmdldCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6SU9TdXJmYWNlVGV4dHVyZVRhcmdldFF1ZXJ5
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpFR0xJT1N1cmZh
Y2VUZXh0dXJlVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjptYWtlQ29udGV4dEN1cnJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmNoZWNrR1BVU3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpzZXRDb250ZXh0VmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2NyZWVuRGlkQ2hhbmdlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbToKKyAgICAgICAgKC1bV2ViR0xMYXllciBpbml0
V2l0aEdyYXBoaWNzQ29udGV4dEdMOl0pOgorICAgICAgICAoLVtXZWJHTExheWVyIHNldEFuY2hv
clBvaW50Ol0pOgorICAgICAgICAoLVtXZWJHTExheWVyIGNvcHlJbWFnZVNuYXBzaG90V2l0aENv
bG9yU3BhY2U6XSk6CisgICAgICAgICgtW1dlYkdMTGF5ZXIgcHJlcGFyZUZvckRpc3BsYXldKToK
KyAgICAgICAgKC1bV2ViR0xMYXllciBkaXNwbGF5XSk6CisgICAgICAgICgtW1dlYkdMTGF5ZXIg
cmVsZWFzZUdMUmVzb3VyY2VzXSk6CisgICAgICAgICgtW1dlYkdMTGF5ZXIgYWxsb2NhdGVJT1N1
cmZhY2VCYWNraW5nU3RvcmVXaXRoU2l6ZTp1c2luZ0FscGhhOl0pOgorICAgICAgICAoLVtXZWJH
TExheWVyIGJpbmRGcmFtZWJ1ZmZlclRvTmV4dEF2YWlsYWJsZVN1cmZhY2VdKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5oOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLm1tOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGllckNWLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZGVvVGV4dHVyZUNvcGllckNWOjppbml0aWFsaXplQ29udGV4dE9i
amVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UZXh0dXJlQ29waWVyQ1Y6OmluaXRpYWxp
emVVVkNvbnRleHRPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVGV4dHVyZUNvcGll
ckNWOjphdHRhY2hJT1N1cmZhY2VUb1RleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9U
ZXh0dXJlQ29waWVyQ1Y6OmRldGFjaElPU3VyZmFjZUZyb21UZXh0dXJlKToKKyAgICAgICAgKFdl
YkNvcmU6OlZpZGVvVGV4dHVyZUNvcGllckNWOjpjb3B5SW1hZ2VUb1BsYXRmb3JtVGV4dHVyZSk6
CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RleHR1cmVDb3BpZXJDVjo6Y29weVZpZGVvVGV4dHVy
ZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRl
b1RleHR1cmVDb3BpZXJDVi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lvcy9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTEVTSU9TLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xPcGVuR0w6OmJsaXRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zR0xPcGVuR0w6OmNyZWF0ZVZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKFdl
YkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTDo6ZGVsZXRlVmVydGV4QXJyYXlPRVMpOgorICAgICAg
ICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMOjppc1ZlcnRleEFycmF5T0VTKToKKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTDo6YmluZFZlcnRleEFycmF5T0VTKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTDo6c3VwcG9ydHNFeHRlbnNpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3QnVmZmVyc0VYVCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdBcnJheXNJbnN0YW5jZWQp
OgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMOjpkcmF3RWxlbWVudHNJbnN0
YW5jZWQpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMOjp2ZXJ0ZXhBdHRy
aWJEaXZpc29yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVu
R0xDb21tb246OmluaXRpYWxpemVBdmFpbGFibGVFeHRlbnNpb25zKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnNldENvbnRleHRWaXNpYmlsaXR5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkUGl4ZWxzQW5kQ29udmVydFRvQkdSQUlmTmVjZXNzYXJ5KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzb2x2ZU11bHRpc2FtcGxpbmdJ
Zk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Z2V0SW50ZWdlcnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmRlcHRoUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmNsZWFyRGVwdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmdldEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlYWRQaXhlbHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvcHlUZXhJbWFnZTJEKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb3B5VGV4U3ViSW1hZ2Uy
RCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZmluaXNoKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpmbHVzaCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZGVsZXRlVGV4dHVyZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
RVMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xNYW5hZ2VyOjp1cGRhdGVBbGxDb250ZXh0cyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnVwZGF0ZUhpZ2hQZXJmb3JtYW5jZVN0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6ZGlz
YWJsZUhpZ2hQZXJmb3JtYW5jZUdQVVRpbWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaDoKKwogMjAyMC0x
MC0wNyAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQg
c3VwcG9ydCBmb3Igbm9uLWFjY2VsZXJhdGVkIGFuaW1hdGlvbiBvZiBpbmRpdmlkdWFsIHRyYW5z
Zm9ybSBwcm9wZXJ0aWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5j
bWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDkyNTk0MDc0YmI5
NGUwZGNmOGI1MTVjODI1YTY5NzI3ZDBmYTgzYjQuLjBmMTZmNDRjNTUwMzA3YzljNjdlZDA5NmUx
YmMyOTM5Yzk1MjdmMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0zMjgsNyArMzI4
LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY3Yv
UGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0
dXJlQ2FjaGVDVi5tbQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGll
ckNWLmNwcAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCkBAIC0zNDgs
MTEgKzM0Nyw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL21hYy9XZWJMYXllci5tbQogCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTC5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9UZW1wb3JhcnlPcGVuR0xTZXR0aW5nLmNwcAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZU1hdGhEYXRhLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMDU4NTIzYjc3
YzQ2ODMzMzM1MDdlM2VkNTY0MzYzYWFjNjI3N2QwMi4uZTNiMmUyOWU4MDJhNDFiMjE4YTE3YmI1
NDMyZGYwOWNiODIyYjFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zNzYsNyArMzc2
LDYgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvR2x5cGhQYWdlQ29yZVRleHQuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tCiBwbGF0Zm9ybS9n
cmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNwcAotcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvVGV4dHVyZUNhY2hlQ1YubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNv
cGllckNWLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRl
cmVyQ29yZUltYWdlLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKQEAgLTQx
NiwxMiArNDE1LDggQEAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRl
eHQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvU3dpdGNoaW5nR1BVQ2xpZW50LmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL1dlYktpdE5TSW1hZ2VFeHRyYXMubW0KIHBsYXRmb3JtL2dyYXBo
aWNzL21hYy9XZWJMYXllci5tbQotcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTC5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xCYXNlLmNwcAotcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMQ29tbW9uLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMTWFuYWdlci5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZW1wb3JhcnlPcGVu
R0xTZXR0aW5nLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVDRy5jcHAK
IHBsYXRmb3JtL2lvcy9Db2xvcklPUy5tbQogcGxhdGZvcm0vaW9zL0RldmljZS5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBm
ZDc0MDM4MzA1ZjYxOThkOTE4ZTM2OGE0NDRmZGQ3ODJhZGY5YWI3Li5jMGI1NmU2MDUyZmNmODdj
NGFiNjI3MmNkNDJlOGEwNDBmNzVkMzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05NTEsNyArOTUxLDYgQEAKIAkJMzFBMDg5
ODkxRTczOEQ1QTAwM0I2NjA5IC8qIEpTV2ViR1BVVGV4dHVyZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5NTAxRTczOEQ1OTAwM0I2NjA5IC8q
IEpTV2ViR1BVVGV4dHVyZS5oICovOyB9OwogCQkzMUEwODk4QzFFNzM4RDVBMDAzQjY2MDkgLyog
SlNXZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzFBMDg5NTMxRTczOEQ1OTAwM0I2NjA5IC8qIEpTV2ViR1BVVGV4
dHVyZURlc2NyaXB0b3IuaCAqLzsgfTsKIAkJMzFBNzk1QzcxODg4QkNCMjAwMzgyRjkwIC8qIEFO
R0xFSW5zdGFuY2VkQXJyYXlzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzMUE3OTVDMjE4ODhCNzI0MDAzODJGOTAgLyogQU5HTEVJbnN0YW5jZWRBcnJh
eXMuaCAqLzsgfTsKLQkJMzFBQjUwMDAxMjI4NzhBMjAwMUE3REIwIC8qIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMRVNJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxQUI0RkZGMTIyODc4QTIwMDFBN0RCMCAvKiBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TEVTSU9TLmggKi87IH07CiAJCTMxQzBGRjIyMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRBbmlt
YXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzFDMEZGMUMwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdEFuaW1hdGlvbkV2ZW50LmggKi87
IH07CiAJCTMxQzBGRjI1MEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRUcmFuc2l0aW9uRXZlbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQzBGRjFG
MEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCAqLzsgfTsKIAkJMzFD
MEZGM0UwRTRDRUZBQzAwN0Q2RkU1IC8qIEpTV2ViS2l0QW5pbWF0aW9uRXZlbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQzBGRjNBMEU0Q0VGQUMw
MDdENkZFNSAvKiBKU1dlYktpdEFuaW1hdGlvbkV2ZW50LmggKi87IH07CkBAIC0xMjEwLDcgKzEy
MDksNiBAQAogCQk0NEEyOEFBRjEyREZCOEJGMDBBRTkyM0IgLyogTWF0aE1MTmFtZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QTI4QUFFMTJERkI4
QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oICovOyB9OwogCQk0NEM5OTE4NjBGM0QxRUJFMDA1
ODY2NzAgLyogU2Nyb2xsYmFyVGhlbWVJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Qzk5MTg1MEYzRDFFQkUwMDU4NjY3MCAvKiBTY3JvbGxiYXJU
aGVtZUlPUy5oICovOyB9OwogCQk0NEM5OTE5RjBGM0QyMTBFMDA1ODY2NzAgLyogVGhlbWVJT1Mu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Qzk5MTlE
MEYzRDIxMEUwMDU4NjY3MCAvKiBUaGVtZUlPUy5oICovOyB9OwotCQk0NERBQjVCMjE1QTYyMzU4
MDA5N0MxRTQgLyogRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NERBQjVCMDE1QTYyMzU4MDA5N0MxRTQgLyog
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmggKi87IH07CiAJCTQ0RTM0OUY5MjQ2RjRFMTkwMDY4
NDc5QyAvKiBMaWJXZWJSVENFbnVtVHJhaXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NEUzNDlGNzI0NkY0REM3MDA2ODQ3OUMgLyogTGliV2ViUlRD
RW51bVRyYWl0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTQ1MENFQkYxMTUwNzNCQkUwMDJCQjE0OSAvKiBMYWJlbGFibGVFbGVtZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTBDRUJFRjE1MDcz
QkJFMDAyQkIxNDkgLyogTGFiZWxhYmxlRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ1MTI1MDIzMTVEQ0UzN0QwMDJGODRFMiAvKiBT
cGluQnV0dG9uRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDUxMjUwMjExNURDRTM3RDAwMkY4NEUyIC8qIFNwaW5CdXR0b25FbGVtZW50Lmgg
Ki87IH07CkBAIC0xMjY2LDcgKzEyNjQsNiBAQAogCQk0NkVGQUYxMjFFNUZCOUYxMDBFN0YzNEIg
LyogTG93UG93ZXJNb2RlTm90aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2RUZBRjEwMUU1RkI5RTEwMEU3RjM0QiAvKiBMb3dQb3dlck1vZGVO
b3RpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQ2RjAyQTFBMjM3MzdGODMwMDEwNkE2NCAvKiBFdmVudExvb3AuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMEFCQ0ExMjM2NzlBQjMwMEI0NTA4
NSAvKiBFdmVudExvb3AuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0NkZDQjYxODFBNzA4MjBFMDBDNUEyMUUgLyogRGlhZ25vc3RpY0xvZ2dpbmdL
ZXlzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDM3
QjM3NTE1QzFBN0UxMDA2REM4OTggLyogRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDkwNzA3RTcxMjE5QzA0
MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJpZGdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTA3MDdFNTEyMTlDMDQzMDBEOTBFNTEgLyogQU5HTEVX
ZWJLaXRCcmlkZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0OTI5MUU0QjEzNDE3MkM4MDBFNzUzREUgLyogSW1hZ2VSZW5kZXJpbmdNb2RlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTI5MUU0QTEz
NDE3MkM4MDBFNzUzREUgLyogSW1hZ2VSZW5kZXJpbmdNb2RlLmggKi87IH07CiAJCTQ5M0U1RTA5
MTJENjQyMDUwMDAyMDA4MSAvKiBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5M0U1RTA4MTJENjQyMDUwMDAyMDA4
MSAvKiBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0OTQ1QkZENDEzQ0Y4MDkwMDBDQzNCMzggLyogVHJhbnNm
b3JtU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ5NDVCRkQyMTNDRjgwOTAwMENDM0IzOCAvKiBUcmFuc2Zvcm1TdGF0ZS5oICovOyB9OwpAQCAt
MjAzMyw3ICsyMDMwLDYgQEAKIAkJNkU0N0U2NjExMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMQW55
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTQ3RTY1
RjEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xBbnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RTRBQkNENTEzOEVBMEI3MDA3MUQyOTEgLyogSlNI
VE1MVW5rbm93bkVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDZFNEFCQ0QzMTM4RUEwQjcwMDcxRDI5MSAvKiBKU0hUTUxVbmtub3duRWxlbWVu
dC5oICovOyB9OwogCQk2RTRFOTFBRjEwRjdGQjMxMDBBMjc3OUMgLyogV2ViR0xDb250ZXh0QXR0
cmlidXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NkU0RTkxQUExMEY3RkIzMTAwQTI3NzlDIC8qIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk2RTY3RDJBNzEy
ODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uc0dMT3BlbkdMLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTY3RDJBNTEyODBFOEE0MDA4NzU4RjcgLyog
RXh0ZW5zaW9uc0dMT3BlbkdMLmggKi87IH07CiAJCTZFNjdEMkE5MTI4MEU4QkQwMDg3NThGNyAv
KiBFeHRlbnNpb25zR0wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDZFNjdEMkE4MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zR0wuaCAqLzsgfTsK
IAkJNkU3MkY1NEMyMjlEQ0QwQzAwQjNFMTUxIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMjdGMjQzMjI5QzlG
ODQwMEYxRjYzMiAvKiBFeHRlbnNpb25zR0xBTkdMRS5jcHAgKi87IH07CiAJCTZFNzJGNTRFMjI5
RENEMTAwMEIzRTE1MSAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFMjdGMjQyMjI5OENFNEIwMEYxRjYz
MiAvKiBHcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCAqLzsgfTsKQEAgLTQyMTMsNyArNDIwOSw2
IEBACiAJCUNEOTRBNUREMUY3MUQ1RDgwMEY1MjVDNSAvKiBDRE1DbGVhcktleS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDk0QTVEQjFGNzFDQkIw
MDBGNTI1QzUgLyogQ0RNQ2xlYXJLZXkuY3BwICovOyB9OwogCQlDRDk0QTVERTFGNzJGNTdCMDBG
NTI1QzUgLyogQ0RNQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRDk0QTVDOTFGNzFDQTlEMDBGNTI1QzUgLyogQ0RNQ2xpZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0Q5Q0M1ODUyNEM2
QkJFQjAwQ0QzQzY0IC8qIFZQOVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q2RkU1QkEyNEJDRTdCNjAwOUZDREE0IC8qIFZQOVV0aWxp
dGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CUNEOUQ4Mjc2MUM3QUU1MzUwMDZGRjA2NiAvKiBUZXh0dXJlQ2FjaGVDVi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q5RDgyNzQxQzdBRTUzNTAwNkZG
MDY2IC8qIFRleHR1cmVDYWNoZUNWLmggKi87IH07CiAJCUNEOUQ4MjdBMUM3QjhFRTEwMDZGRjA2
NiAvKiBWaWRlb1RleHR1cmVDb3BpZXJDVi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0Q5RDgyNzgxQzdCOEVFMTAwNkZGMDY2IC8qIFZpZGVvVGV4dHVy
ZUNvcGllckNWLmggKi87IH07CiAJCUNEOURFMTc1MTdBQUM3NEMwMEVBMzg2RCAvKiBKU01lZGlh
U291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RDlERTE3MzE3QUFDNzRDMDBFQTM4NkQgLyogSlNNZWRpYVNvdXJjZS5oICovOyB9OwogCQlDRDlE
RTE3QjE3QUFDNzVCMDBFQTM4NkQgLyogSlNTb3VyY2VCdWZmZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOURFMTc3MTdBQUM3NUIwMEVBMzg2RCAv
KiBKU1NvdXJjZUJ1ZmZlci5oICovOyB9OwpAQCAtNzMxOCw3ICs3MzEzLDYgQEAKIAkJMzFBNzk1
QzMxODg4QjcyNDAwMzgyRjkwIC8qIEFOR0xFSW5zdGFuY2VkQXJyYXlzLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBBTkdMRUluc3RhbmNlZEFycmF5cy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTMxQTc5NUM0MTg4OEJBRDEwMDM4MkY5MCAvKiBKU0FOR0xFSW5zdGFuY2Vk
QXJyYXlzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQU5HTEVJ
bnN0YW5jZWRBcnJheXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUE3OTVD
NTE4ODhCQUQxMDAzODJGOTAgLyogSlNBTkdMRUluc3RhbmNlZEFycmF5cy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FOR0xFSW5zdGFuY2VkQXJyYXlzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxQUI0RkZGMTIyODc4QTIwMDFBN0RCMCAvKiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTEVTSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVNJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzFDMEZGMUIwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdEFuaW1hdGlvbkV2ZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYktpdEFuaW1hdGlvbkV2
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFDMEZGMUMwRTRDRUI2RTAw
N0Q2RkU1IC8qIFdlYktpdEFuaW1hdGlvbkV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYktpdEFuaW1hdGlvbkV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTMxQzBGRjFEMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRBbmltYXRpb25FdmVudC5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0QW5pbWF0aW9uRXZlbnQuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzkzNCw4ICs3OTI4LDYgQEAKIAkJNDRDQTI4NDMy
NDVGQ0E1MDAwQzk0QzdGIC8qIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dElPUy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDREOERBOTgxMzk1
NDVCRTAwMzM3Qjc1IC8qIFNWR01QYXRoRWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gU1ZHTVBhdGhFbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRE
OERBOUExMzk1NDVDRDAwMzM3Qjc1IC8qIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBTVkdBbmltYXRlTW90aW9uRWxlbWVudC5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ0REFCNUFGMTVBNjIzNTgwMDk3QzFFNCAvKiBFeHRlbnNp
b25zR0xPcGVuR0xDb21tb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNDREQUI1QjAxNUE2MjM1ODAwOTdDMUU0IC8qIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRFMzQ5RjcyNDZGNERDNzAw
Njg0NzlDIC8qIExpYldlYlJUQ0VudW1UcmFpdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gTGliV2ViUlRDRW51bVRyYWl0cy5oOyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJU
Q0VudW1UcmFpdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRFODhFNEMyMzY5
MTI4QTAwOUI0ODQ3IC8qIEhpZ2hsaWdodE1hcC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
SGlnaGxpZ2h0TWFwLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRFODhFNEQy
MzY5MTI4QjAwOUI0ODQ3IC8qIEhpZ2hsaWdodFJhbmdlR3JvdXAuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IEhpZ2hsaWdodFJhbmdlR3JvdXAuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtODA0NSw4ICs4MDM3LDYgQEAKIAkJNDZFRkFGMEYxRTVGQjlFMTAwRTdGMzRCIC8q
IExvd1Bvd2VyTW9kZU5vdGlmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IExvd1Bvd2VyTW9kZU5vdGlmaWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDZFRkFGMTAxRTVGQjlFMTAwRTdGMzRCIC8qIExvd1Bvd2VyTW9kZU5vdGlmaWVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvd1Bvd2VyTW9kZU5vdGlmaWVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RjkxQkM5MUZDREQwRkUwMDE1OTlDMyAv
KiBKU1dvcmtlck5hdmlnYXRvckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU1dvcmtlck5hdmlnYXRvckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTQ5MDcwN0U0MTIxOUMwNDMwMEQ5MEU1MSAvKiBBTkdMRVdlYktpdEJyaWRn
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBTkdMRVdlYktpdEJy
aWRnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5MDcwN0U1MTIxOUMwNDMw
MEQ5MEU1MSAvKiBBTkdMRVdlYktpdEJyaWRnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBTkdMRVdlYktpdEJyaWRnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0OTI5MUU0QTEzNDE3MkM4MDBFNzUzREUgLyogSW1hZ2VSZW5kZXJpbmdNb2RlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlUmVuZGVyaW5nTW9kZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0OTNFNUUwODEyRDY0MjA1MDAwMjAwODEgLyogUGxhdGZv
cm1DQUxheWVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRm
b3JtQ0FMYXllckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTQ1QkZE
MTEzQ0Y4MDkwMDBDQzNCMzggLyogVHJhbnNmb3JtU3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVHJhbnNmb3JtU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtOTU2Myw4ICs5NTUzLDYgQEAKIAkJNkU1Mzg4RTAyNDU4QUUxRDAwNzZB
RTAzIC8qIFdlYkdMQ29sb3JCdWZmZXJGbG9hdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJH
TENvbG9yQnVmZmVyRmxvYXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTUz
ODhFMTI0NThBRTFEMDA3NkFFMDMgLyogV2ViR0xDb2xvckJ1ZmZlckZsb2F0LmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBX
ZWJHTENvbG9yQnVmZmVyRmxvYXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
RTU3NkJDMzI0RUI1MDlDMDA5NEQ0QUEgLyogSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxDYW52YXNFbGVtZW50
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNkU2N0QyQTQxMjgwRThB
NDAwODc1OEY3IC8qIEV4dGVuc2lvbnNHTE9wZW5HTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBFeHRlbnNpb25zR0xPcGVuR0wuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk2RTY3RDJBNTEyODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uc0dMT3Bl
bkdMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dGVuc2lvbnNHTE9wZW5H
TC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTY3RDJBODEyODBFOEJEMDA4NzU4
RjcgLyogRXh0ZW5zaW9uc0dMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4
dGVuc2lvbnNHTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTg0RTlERTE3NjY4
QkFEMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmFzdGVyU2hhcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk2RTg0RTlERjE3NjY4QkFEMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmFzdGVyU2hhcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTEwMDMzLDggKzEwMDIxLDYgQEAKIAkJN0ExRDdGQ0ExOEY4NUYwRjAwQzM4NUFE
IC8qIGVuICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0gZW47IHBhdGggPSBlbi5scHJvai9tZWRpYUNv
bnRyb2xzTG9jYWxpemVkU3RyaW5ncy5qczsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9Owog
CQk3QTIyNzMxRTIwQzlGOUQ5MDBEQjFERUYgLyogV2ViS2l0TlNJbWFnZUV4dHJhcy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFdlYktpdE5TSW1hZ2VFeHRyYXMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdBMjI3MzFGMjBDOUY5REEwMERCMURFRiAvKiBXZWJLaXROU0ltYWdl
RXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdE5TSW1hZ2VFeHRyYXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0EyOUJBNjcxODdCNzMyMjAwRjI5Q0VCIC8qIFRlbXBvcmFy
eU9wZW5HTFNldHRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9y
YXJ5T3BlbkdMU2V0dGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QTI5QkE2
OTE4N0I3ODFDMDBGMjlDRUIgLyogVGVtcG9yYXJ5T3BlbkdMU2V0dGluZy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZW1wb3JhcnlPcGVuR0xTZXR0aW5nLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0EyOUY1NzExOEM2OTUxNDAwNEQwRjgxIC8q
IE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QTNFQkVBQTIxQkYwNTRDMDAwRDA0M0QgLyogSlNTVkdWaWV3U3BlY0N1
c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NWR1ZpZXdTcGVjQ3VzdG9tLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E0NTAzMkQxOERCNzE3MjAwMzc3QjM0IC8qIEJ1
ZmZlcmVkTGluZVJlYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBCdWZmZXJlZExpbmVSZWFkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTE0NzUsNyArMTE0NjEsNiBAQAogCQk5NTIwNzYwMTFGMjY3NUY5MDA3RDJBQUIgLyogQ2FsbFRy
YWNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsVHJhY2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk1MjA3NjAyMUYyNjc1RjkwMDdEMkFBQiAvKiBDYWxsVHJhY2VyVHlwZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2FsbFRyYWNlclR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTk1REY5RDIzMjUyQkVEOTkwMDBEN0Y0NiAvKiBQb2ludGVyQ2hhcmFjdGVyaXN0aWNz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3MuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJOTZBQkE0MjIxNEJDQjgwRTAwRDU2MjA0IC8qIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMQ29tbW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTcwNTk5NzUxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9saWN5Q2hlY2tlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3MDU5OTc2MTA3RDk3NTIwMEE1MEE3QyAv
KiBQb2xpY3lDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvbGlj
eUNoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcwQjcyODkxNDRGRkFD
NjAwRjAwQTM3IC8qIEV2ZW50SW50ZXJmYWNlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBFdmVudEludGVyZmFjZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
RXZlbnRJbnRlcmZhY2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBA
IC0xNDQ5NSw4ICsxNDQ4MCw2IEBACiAJCUNEOUE4N0Y5MjE1RDZDRjMwMDZGMTdCNSAvKiBRdWly
a3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVpcmtzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0Q5QTg3RkIyMTVENkNGMzAwNkYxN0I1IC8qIFF1aXJrcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBRdWlya3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q5RDM3NUEy
MTUxNjNFNDAwNDk2NTdCIC8qIENETUluc3RhbmNlU2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
RE1JbnN0YW5jZVNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0Q5RDgy
NzMxQzdBRTUzNTAwNkZGMDY2IC8qIFRleHR1cmVDYWNoZUNWLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGV4dHVyZUNhY2hlQ1YubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUNEOUQ4Mjc0MUM3QUU1MzUwMDZGRjA2NiAvKiBUZXh0dXJlQ2FjaGVD
Vi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0dXJlQ2FjaGVDVi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDlEODI3NzFDN0I4RUUxMDA2RkYwNjYgLyog
VmlkZW9UZXh0dXJlQ29waWVyQ1YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVmlkZW9UZXh0dXJlQ29waWVyQ1YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRDlEODI3ODFDN0I4RUUxMDA2RkYwNjYgLyogVmlkZW9UZXh0dXJlQ29waWVyQ1YuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9UZXh0dXJlQ29waWVyQ1YuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q5REUxNzIxN0FBQzc0QzAwRUEzODZEIC8q
IEpTTWVkaWFTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNNZWRpYVNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjQxMSw3
ICsxNjM5NCw2IEBACiAJCUZCOTJERjQ5MTVGRUQwODcwMDk5NDQzMyAvKiBDbGlwUGF0aE9wZXJh
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDbGlwUGF0aE9wZXJhdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQjk2NUI4MTE3QkJCNUY5MDBFODM1
QjkgLyogQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDU1NGaWx0ZXJJbWFnZVZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZCOTY1QjgyMTdCQkI2MkMwMEU4MzVCOSAvKiBDU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU0ZpbHRlckltYWdlVmFsdWUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGQkMyMjBERTEyMzdGQkVCMDBCQ0Y3ODgg
LyogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZCRDZBRjgyMTVFRjIxQTMwMDhCNzExMCAvKiBCYXNpY1No
YXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYXNpY1NoYXBl
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZCRDZBRjgzMTVFRjIxQTMwMDhC
NzExMCAvKiBCYXNpY1NoYXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBC
YXNpY1NoYXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQkQ2QUY4NDE1RUYy
MUQ0MDA4QjcxMTAgLyogQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBCYXNpY1NoYXBlRnVuY3Rpb25zLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE5MzQwLDcgKzE5MzIyLDYgQEAKIAkJCQkyRDI5RUNDOTE5MkYx
RjFEMDA5ODRCNzggLyogRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TLmggKi8sCiAJCQkJMEY5N0E2
NTcxNTVEQTgxRTAwRkFERDRDIC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5tbSAqLywKIAkJ
CQkxQUMyRDg5QzFCMUUyOTFGMDBENTJFODcgLyogRm9udEFudGlhbGlhc2luZ1N0YXRlU2F2ZXIu
aCAqLywKLQkJCQkzMUFCNEZGRjEyMjg3OEEyMDAxQTdEQjAgLyogR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xFU0lPUy5oICovLAogCQkJCUZFRDEzRDNGMENFQTkzOTQwMEQ4OTQ2NiAvKiBJY29uSU9T
Lm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBpb3M7CkBAIC0yNjA1OSw4ICsyNjA0MCw2IEBACiAJ
CQkJMzcyMTQ5MzMxOEYwQjZENjAwMTU2RURDIC8qIG9wZW50eXBlICovLAogCQkJCTQ5RTkxMUIy
MEVGODZEMjcwMDlEMENBRiAvKiB0cmFuc2Zvcm1zICovLAogCQkJCTcyOTlCQzY0MjNENjg2QTYw
MENDNjg4MyAvKiBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmggKi8sCi0JCQkJNDkwNzA3RTQxMjE5
QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJpZGdlLmNwcCAqLywKLQkJCQk0OTA3MDdFNTEy
MTlDMDQzMDBEOTBFNTEgLyogQU5HTEVXZWJLaXRCcmlkZ2UuaCAqLywKIAkJCQk3MjJBODE1QzIz
OEZENTA1MDBDMDA1ODMgLyogQW5pbWF0aW9uRnJhbWVSYXRlLmggKi8sCiAJCQkJQkVGMjlFRTkx
NzE1REQwOTAwQzRCNEM5IC8qIEF1ZGlvVHJhY2tQcml2YXRlLmggKi8sCiAJCQkJQTg5OTQzMjcw
QjQyMzM4NzAwRDdDODAyIC8qIEJpdG1hcEltYWdlLmNwcCAqLywKQEAgLTI3NDg1LDggKzI3NDY0
LDYgQEAKIAkJCQkwNzQ2RDMwQTIxNDZFQTM3MDAzRERGODQgLyogSW1hZ2VUcmFuc2ZlclNlc3Np
b25WVC5tbSAqLywKIAkJCQlDRDdEMzM0MTFDN0ExMjNGMDAwNDEyOTMgLyogUGl4ZWxCdWZmZXJD
b25mb3JtZXJDVi5jcHAgKi8sCiAJCQkJQ0Q3RDMzNDIxQzdBMTIzRjAwMDQxMjkzIC8qIFBpeGVs
QnVmZmVyQ29uZm9ybWVyQ1YuaCAqLywKLQkJCQlDRDlEODI3NDFDN0FFNTM1MDA2RkYwNjYgLyog
VGV4dHVyZUNhY2hlQ1YuaCAqLywKLQkJCQlDRDlEODI3MzFDN0FFNTM1MDA2RkYwNjYgLyogVGV4
dHVyZUNhY2hlQ1YubW0gKi8sCiAJCQkJQ0Q5RDgyNzcxQzdCOEVFMTAwNkZGMDY2IC8qIFZpZGVv
VGV4dHVyZUNvcGllckNWLmNwcCAqLywKIAkJCQlDRDlEODI3ODFDN0I4RUUxMDA2RkYwNjYgLyog
VmlkZW9UZXh0dXJlQ29waWVyQ1YuaCAqLywKIAkJCSk7CkBAIC0yOTg5OCwxOCArMjk4NzUsMTAg
QEAKIAkJRkJDMjIwREQxMjM3RkJFQjAwQkNGNzg4IC8qIG9wZW5nbCAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNkU2N0QyQTQxMjgwRThBNDAwODc1OEY3
IC8qIEV4dGVuc2lvbnNHTE9wZW5HTC5jcHAgKi8sCi0JCQkJNkU2N0QyQTUxMjgwRThBNDAwODc1
OEY3IC8qIEV4dGVuc2lvbnNHTE9wZW5HTC5oICovLAotCQkJCTQ0REFCNUFGMTVBNjIzNTgwMDk3
QzFFNCAvKiBFeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwICovLAotCQkJCTQ0REFCNUIwMTVB
NjIzNTgwMDk3QzFFNCAvKiBFeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaCAqLywKIAkJCQk2RTIx
QzZCRjExMjYzMzg1MDBBN0JFMDIgLyogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwICovLAog
CQkJCTQ5QzdCOUZCMTA0MkQzNjUwMDA5RDQ0NyAvKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5o
ICovLAotCQkJCUZCQzIyMERFMTIzN0ZCRUIwMEJDRjc4OCAvKiBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTEJhc2UuY3BwICovLAotCQkJCTk2QUJBNDIyMTRCQ0I4MEUwMEQ1NjIwNCAvKiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAgKi8sCiAJCQkJRDA4NDNBNEMyMEZFQzE2NTAwRkU4
NjBFIC8qIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5jcHAgKi8sCiAJCQkJMzE5QTcy
ODcyM0MyNjdFNzAwODUzNTNDIC8qIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5oICov
LAotCQkJCTdBMjlCQTY5MTg3Qjc4MUMwMEYyOUNFQiAvKiBUZW1wb3JhcnlPcGVuR0xTZXR0aW5n
LmNwcCAqLywKLQkJCQk3QTI5QkE2NzE4N0I3MzIyMDBGMjlDRUIgLyogVGVtcG9yYXJ5T3BlbkdM
U2V0dGluZy5oICovLAogCQkJKTsKIAkJCXBhdGggPSBvcGVuZ2w7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpAQCAtMzA0OTgsNyArMzA0NjcsNiBAQAogCQkJCUZEMzE2MDNFMTJCMDI2NzYw
MEMxQTM1OSAvKiBBbmFseXNlck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU3RTAzNTcyMjRE
NEUxOTYwMDhERkVGQiAvKiBBbmFseXNlck9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTMx
QTc5NUM3MTg4OEJDQjIwMDM4MkY5MCAvKiBBTkdMRUluc3RhbmNlZEFycmF5cy5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJNDkwNzA3RTcxMjE5QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJpZGdl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTJBQjBFRkFDOTA2MDA5RDBDQUYgLyogQW5pbWF0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MUVGQ0VEQzIwMkIzOEE5MDBEN0M0MTEgLyogQW5p
bWF0aW9uRWZmZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MUUyQzQyNjIxQzkzNTI4MDAyNEY4
QzggLyogQW5pbWF0aW9uRWZmZWN0UGhhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtMzE0MzcsOCAr
MzE0MDUsNiBAQAogCQkJCTMxRENERjQ0MURBMUM0NTQwMEVBNUI5MyAvKiBFeHRlbmRlZENvbG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQk2RTY3RDJBOTEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5z
aW9uc0dMLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RTcyRjU1MDIyOURDRDE3MDBCM0UxNTEgLyog
RXh0ZW5zaW9uc0dMQU5HTEUuaCBpbiBIZWFkZXJzICovLAotCQkJCTZFNjdEMkE3MTI4MEU4QTQw
MDg3NThGNyAvKiBFeHRlbnNpb25zR0xPcGVuR0wuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ0REFC
NUIyMTVBNjIzNTgwMDk3QzFFNCAvKiBFeHRlbnNpb25zR0xPcGVuR0xDb21tb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCUU0N0UyNzY1MTYwMzZFRDIwMEVFMkFGQiAvKiBFeHRlbnNpb25TdHlsZVNo
ZWV0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM0MzA0QjExOTFBQzkwODAwMEUyQkMwIC8qIEVY
VFNoYWRlclRleHR1cmVMT0QuaCBpbiBIZWFkZXJzICovLAogCQkJCTc3Mjg2OTRGMTRGODg4MjUw
MEY0ODREQyAvKiBFWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuaCBpbiBIZWFkZXJzICovLApA
QCAtMzE2NDcsNyArMzE2MTMsNiBAQAogCQkJCTMxM0RFODcwMjNBOTY5NzMwMDhGQzQ3QiAvKiBH
cmFwaGljc0NvbnRleHRHTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MzMzBBMDIxREY4RkFDNjAw
RDMzOTVDIC8qIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDlDN0I5RkMxMDQyRDM2NTAwMDlENDQ3IC8qIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgg
aW4gSGVhZGVycyAqLywKLQkJCQkzMUFCNTAwMDEyMjg3OEEyMDAxQTdEQjAgLyogR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xFU0lPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE5QTcyODgyM0MyNjdG
RTAwODUzNTNDIC8qIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkRBQ0I5RTkyMzc1NUQwMDAwQjRDMTg1IC8qIEdyYXBoaWNzQ29udGV4dEltcGwu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEQ2NzA4MEU5RTlERUIwMEU0MjBGMCAvKiBHcmFwaGlj
c0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDQxMCw3ICsz
NDM3NSw2IEBACiAJCQkJMUM3M0E3MTMyMTg1NzU3RTAwNENDRUE1IC8qIFRleHRVbmRlcmxpbmVP
ZmZzZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5RkFGNEI2MTk1QUIwODkwMEE1MjJEQyAvKiBU
ZXh0VW5kb0luc2VydGlvbk1hcmt1cE1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk4NzcwRjEx
MjQyQzUzNTAwMjIyNkJBIC8qIFRleHR1cmUuaCBpbiBIZWFkZXJzICovLAotCQkJCUNEOUQ4Mjc2
MUM3QUU1MzUwMDZGRjA2NiAvKiBUZXh0dXJlQ2FjaGVDVi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NkZCMTFCNUMyMTc4M0ZEMDAwRTJBNTc0IC8qIFRleHRVdGlsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQ0U2NThGRjBFQTkyNDhBMDA3RTQ1MzMgLyogVGhlbWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTMxMEQ3MTk2MUIzMzVDOUUwMDlDN0I3MyAvKiBUaGVtZUNvY29hLmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJy
YXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlz
LmNwcAppbmRleCA4MGIyYTcyZTFmNWQ1ZjM4MWFmNWJjYzFjMDE2NmZlZjlkNzRmY2EwLi4yOTZh
ZjNlMDNhYjdhMmM2ZDAxYzJiNDI0OWVlODdkZjcxNDU0MmRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuY3BwCkBAIC01NSwxNCAr
NTUsNyBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBBTkdMRUluc3RhbmNlZEFycmF5
czo6Z2V0TmFtZSgpIGNvbnN0CiAKIGJvb2wgQU5HTEVJbnN0YW5jZWRBcnJheXM6OnN1cHBvcnRl
ZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogewotI2lmIFBMQVRGT1JNKENP
Q09BKQotI2lmIFVTRShBTkdMRSkKLSAgICByZXR1cm4gY29udGV4dC5ncmFwaGljc0NvbnRleHRH
TCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMi
KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwotICAgIHJldHVybiB0cnVlOwot
I2VuZGlmCi0jZWxpZiBQTEFURk9STShHVEspCisjaWYgVVNFKEFOR0xFKSB8fCBQTEFURk9STShH
VEspCiAgICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9u
cygpLnN1cHBvcnRzKCJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIik7CiAjZWxzZQogICAgIFVO
VVNFRF9QQVJBTShjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaAppbmRleCA2YmM2ZWI0YWYzMTZjZWJlMDZjMDI3Nzkx
M2I2OGYxYjQ4MjlhZjU1Li41MDNjNTBkNzcyNDQyOTc3MGNhOGFkZWU1ODZlNTdhY2M1ZjcxZGY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5n
Q29udGV4dC5oCkBAIC0xMjEsNyArMTIxLDcgQEAgcHVibGljOgogICAgIHZvaWQgY29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhv
ZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEFycmF5QnVmZmVyVmlldyYgc3JjRGF0YSk7CiAgICAgLy8gV2Vi
R0wgMi4wIGVudHJ5IHBvaW50czoKICAgICB2b2lkIGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlv
ZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCk7Ci0gICAgdm9pZCBjb21w
cmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xp
bnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgQXJyYXlCdWZmZXJWaWV3JiBzcmNEYXRhLCBHTHVpbnQg
c3JjT2Zmc2V0LCBHTHVpbnQgc3JjTGVuZ3RoT3ZlcnJpZGUpOworICAgIHZvaWQgY29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhv
ZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEFycmF5QnVmZmVyVmlldyYgc3JjRGF0YSwgR0NHTHVpbnQgc3Jj
T2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGhPdmVycmlkZSk7CiAKICAgICB2b2lkIGNvbXByZXNz
ZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4
b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
THNpemVpIGltYWdlU2l6ZSwgR0NHTGludDY0IG9mZnNldCk7CiAgICAgdm9pZCBjb21wcmVzc2Vk
VGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9m
ZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEFycmF5
QnVmZmVyVmlldyYgc3JjRGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5n
dGhPdmVycmlkZSk7CkBAIC0xNTYsMjYgKzE1NiwyNiBAQCBwdWJsaWM6CiAgICAgdXNpbmcgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTJmdjsKICAgICB1c2luZyBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtM2Z2OwogICAgIHVzaW5nIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnVuaWZvcm00ZnY7Ci0gICAgdm9pZCB1bmlmb3JtMWZ2KFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiBsb2NhdGlvbiwgRmxvYXQzMkxpc3QgZGF0YSwgR0x1aW50IHNyY09mZnNldCwgR0x1
aW50IHNyY0xlbmd0aCk7Ci0gICAgdm9pZCB1bmlmb3JtMmZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9u
KiBsb2NhdGlvbiwgRmxvYXQzMkxpc3QgZGF0YSwgR0x1aW50IHNyY09mZnNldCwgR0x1aW50IHNy
Y0xlbmd0aCk7Ci0gICAgdm9pZCB1bmlmb3JtM2Z2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2Nh
dGlvbiwgRmxvYXQzMkxpc3QgZGF0YSwgR0x1aW50IHNyY09mZnNldCwgR0x1aW50IHNyY0xlbmd0
aCk7Ci0gICAgdm9pZCB1bmlmb3JtNGZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwg
RmxvYXQzMkxpc3QgZGF0YSwgR0x1aW50IHNyY09mZnNldCwgR0x1aW50IHNyY0xlbmd0aCk7Cisg
ICAgdm9pZCB1bmlmb3JtMWZ2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgRmxvYXQzMkxpc3QgZGF0
YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpOworICAgIHZvaWQgdW5p
Zm9ybTJmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEZsb2F0MzJMaXN0IGRhdGEsIEdDR0x1aW50
IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKTsKKyAgICB2b2lkIHVuaWZvcm0zZnYoV2Vi
R0xVbmlmb3JtTG9jYXRpb24qLCBGbG9hdDMyTGlzdCBkYXRhLCBHQ0dMdWludCBzcmNPZmZzZXQs
IEdDR0x1aW50IHNyY0xlbmd0aCk7CisgICAgdm9pZCB1bmlmb3JtNGZ2KFdlYkdMVW5pZm9ybUxv
Y2F0aW9uKiwgRmxvYXQzMkxpc3QgZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBz
cmNMZW5ndGgpOwogCiAgICAgdXNpbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9y
bTFpdjsKICAgICB1c2luZyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3JtMml2Owog
ICAgIHVzaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm0zaXY7CiAgICAgdXNp
bmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5pZm9ybTRpdjsKLSAgICB2b2lkIHVuaWZv
cm0xaXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uLCBJbnQzMkxpc3QgZGF0YSwgR0x1
aW50IHNyY09mZnNldCwgR0x1aW50IHNyY0xlbmd0aCk7Ci0gICAgdm9pZCB1bmlmb3JtMml2KFdl
YkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgSW50MzJMaXN0IGRhdGEsIEdMdWludCBzcmNP
ZmZzZXQsIEdMdWludCBzcmNMZW5ndGgpOwotICAgIHZvaWQgdW5pZm9ybTNpdihXZWJHTFVuaWZv
cm1Mb2NhdGlvbiogbG9jYXRpb24sIEludDMyTGlzdCBkYXRhLCBHTHVpbnQgc3JjT2Zmc2V0LCBH
THVpbnQgc3JjTGVuZ3RoKTsKLSAgICB2b2lkIHVuaWZvcm00aXYoV2ViR0xVbmlmb3JtTG9jYXRp
b24qIGxvY2F0aW9uLCBJbnQzMkxpc3QgZGF0YSwgR0x1aW50IHNyY09mZnNldCwgR0x1aW50IHNy
Y0xlbmd0aCk7CisgICAgdm9pZCB1bmlmb3JtMWl2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiwgSW50
MzJMaXN0IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVpbnQgc3JjTGVuZ3RoKTsKKyAg
ICB2b2lkIHVuaWZvcm0yaXYoV2ViR0xVbmlmb3JtTG9jYXRpb24qLCBJbnQzMkxpc3QgZGF0YSwg
R0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpOworICAgIHZvaWQgdW5pZm9y
bTNpdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEludDMyTGlzdCBkYXRhLCBHQ0dMdWludCBzcmNP
ZmZzZXQsIEdDR0x1aW50IHNyY0xlbmd0aCk7CisgICAgdm9pZCB1bmlmb3JtNGl2KFdlYkdMVW5p
Zm9ybUxvY2F0aW9uKiwgSW50MzJMaXN0IGRhdGEsIEdDR0x1aW50IHNyY09mZnNldCwgR0NHTHVp
bnQgc3JjTGVuZ3RoKTsKIAogICAgIHVzaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVu
aWZvcm1NYXRyaXgyZnY7CiAgICAgdXNpbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dW5p
Zm9ybU1hdHJpeDNmdjsKICAgICB1c2luZyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlm
b3JtTWF0cml4NGZ2OwotICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiogbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkxpc3QgZGF0YSwg
R0x1aW50IHNyY09mZnNldCwgR0x1aW50IHNyY0xlbmd0aCk7Ci0gICAgdm9pZCB1bmlmb3JtTWF0
cml4M2Z2KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNw
b3NlLCBGbG9hdDMyTGlzdCBkYXRhLCBHTHVpbnQgc3JjT2Zmc2V0LCBHTHVpbnQgc3JjTGVuZ3Ro
KTsKLSAgICB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEZsb2F0MzJMaXN0IGRhdGEsIEdMdWludCBzcmNP
ZmZzZXQsIEdMdWludCBzcmNMZW5ndGgpOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihXZWJH
TFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkxpc3QgZGF0
YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5ndGgpOworICAgIHZvaWQgdW5p
Zm9ybU1hdHJpeDNmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdDR0xib29sZWFuIHRyYW5zcG9z
ZSwgRmxvYXQzMkxpc3QgZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0LCBHQ0dMdWludCBzcmNMZW5n
dGgpOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDRmdihXZWJHTFVuaWZvcm1Mb2NhdGlvbiosIEdD
R0xib29sZWFuIHRyYW5zcG9zZSwgRmxvYXQzMkxpc3QgZGF0YSwgR0NHTHVpbnQgc3JjT2Zmc2V0
LCBHQ0dMdWludCBzcmNMZW5ndGgpOwogCiAgICAgLy8gV3JpdGluZyB0byB0aGUgZHJhd2luZyBi
dWZmZXIKICAgICB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1
aW50IGRpdmlzb3IpOwpAQCAtMjUyLDcgKzI1Miw3IEBAIHB1YmxpYzoKICAgICAvLyBNdXN0IG92
ZXJyaWRlIHRoZSBXZWJHTCAxLjAgc2lnbmF0dXJlIGluIG9yZGVyIHRvIGFkZCBleHRyYSB2YWxp
ZGF0aW9uLgogICAgIHZvaWQgcmVhZFBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEFycmF5QnVmZmVyVmlldyYgcGl4ZWxzKSBvdmVycmlkZTsKICAgICB2b2lkIHJlYWRQaXhl
bHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCk7Ci0g
ICAgdm9pZCByZWFkUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgQXJyYXlC
dWZmZXJWaWV3JiBkc3REYXRhLCBHTHVpbnQgZHN0T2Zmc2V0KTsKKyAgICB2b2lkIHJlYWRQaXhl
bHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBBcnJheUJ1ZmZlclZpZXcmIGRzdERh
dGEsIEdDR0x1aW50IGRzdE9mZnNldCk7CiAKICAgICBHQ0dMdWludCBtYXhUcmFuc2Zvcm1GZWVk
YmFja1NlcGFyYXRlQXR0cmlicygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDA0NWQ2
YTZiZjkxNmU1YWYzYmEwMjlhMWI0NjU2ZjkzNWQxMGE1ZTAuLjViYzAyYTg2YTE1OWYwOTg4YzMw
NDM1NDk5MDEwNTRlZTEyNDZkNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC03MjEsMTMgKzcyMSw2
IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlPiBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpjcmVhdGUoQ2FuCiAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMo
IkdMX0VYVF9kZWJ1Z19tYXJrZXIiX3MpKQogICAgICAgICBleHRlbnNpb25zLnB1c2hHcm91cE1h
cmtlckVYVCgiV2ViR0xSZW5kZXJpbmdDb250ZXh0Il9zKTsKIAotI2lmIEVOQUJMRShXRUJHTDIp
ICYmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShBTkdMRSkKLSAgICAvLyBnbFRleFN0b3JhZ2UoKSB3
YXMgb25seSBhZGRlZCB0byBDb3JlIGluIE9wZW5HTCA0LjIuCi0gICAgLy8gSG93ZXZlciwgYWNj
b3JkaW5nIHRvIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9vcGVuZ2wvY2FwYWJpbGl0aWVz
LyBhbGwgQXBwbGUgR1BVcyBzdXBwb3J0IHRoaXMgZXh0ZW5zaW9uLgotICAgIGlmIChhdHRyaWJ1
dGVzLmlzV2ViR0wyICYmICFleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9BUkJfdGV4dHVyZV9zdG9y
YWdlIikpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotI2VuZGlmCi0KICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4gcmVuZGVyaW5nQ29udGV4dDsKICNpZiBF
TkFCTEUoV0VCR0wyKQogICAgIGlmICh0eXBlID09ICJ3ZWJnbDIiKQpAQCAtNDM0Nyw3ICs0MzQw
LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZWFkUGl4ZWxzKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgKICAgICB2b2lkKiBkYXRhID0gcGl4ZWxzLmJh
c2VBZGRyZXNzKCk7CiAKICNpZiBVU0UoQU5HTEUpCi0gICAgICAgIEdMc2l6ZWkgbGVuZ3RoLCBj
b2x1bW5zLCByb3dzOworICAgICAgICBHQ0dMc2l6ZWkgbGVuZ3RoLCBjb2x1bW5zLCByb3dzOwog
ICAgICAgICBtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgICAgICBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5yZWFkblBpeGVsc1JvYnVzdEFOR0xFKHgsIHksIHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ5dGVMZW5ndGgoKSwgJmxlbmd0aCwgJmNvbHVt
bnMsICZyb3dzLCBkYXRhLCBmYWxzZSk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCmluZGV4IDhkMGVhYjlj
Y2UwM2VhNmZiNDkxZDg3OTM3Y2U4NTQ0ODMzMDFjMzAuLjE2Y2MxMGM3N2UyZjY2ZGUwYWE3OTgw
MzliNzgzNjRlYTk2ZGY4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTE4NCwyMyArMTg0LDYgQEAgdWlu
dDhfdCBHcmFwaGljc0NvbnRleHRHTDo6Z2V0Q2hhbm5lbEJpdHNCeUZvcm1hdChHQ0dMZW51bSBm
b3JtYXQpCiAgICAgfQogfQogCi0jaWYgIVBMQVRGT1JNKENPQ09BKSAmJiBVU0UoQU5HTEUpCi1H
Q0dMZW51bSBHcmFwaGljc0NvbnRleHRHTDo6SU9TdXJmYWNlVGV4dHVyZVRhcmdldCgpCi17Ci0g
ICAgcmV0dXJuIFRFWFRVUkVfMkQ7Ci19Ci0KLUdDR0xlbnVtIEdyYXBoaWNzQ29udGV4dEdMOjpJ
T1N1cmZhY2VUZXh0dXJlVGFyZ2V0UXVlcnkoKQotewotICAgIHJldHVybiBURVhUVVJFX0JJTkRJ
TkdfMkQ7Ci19Ci0KLUdDR0xpbnQgR3JhcGhpY3NDb250ZXh0R0w6OkVHTElPU3VyZmFjZVRleHR1
cmVUYXJnZXQoKQotewotICAgIHJldHVybiAweDMwNUY7IC8vIEVHTF9URVhUVVJFXzJECi19Ci0j
ZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdM
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dEdMLmgKaW5kZXggZmEyNDFiYmU4YzNmMTcyMzA1YjFmNDgwYmEyZjM5OGNjZDcyMTMyZC4u
OWZlZTcyZjJjNzJiMWI2ZWZlY2VjNzc4ZDU2ZDBlZTU1YjI5MWIwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCkBAIC03
NzcsMTUgKzc3Nyw2IEBAIHB1YmxpYzoKICAgICAgICAgRE9NU291cmNlTm9uZSwKICAgICB9Owog
Ci0jaWYgVVNFKEFOR0xFKQotICAgIC8vIFRoZXNlIGNvbnN0YW50cyBhcmUgcmVkZWZpbmVkIGhl
cmUgZnJvbSBBTkdMRSdzIE9wZW5HTCBFUyBoZWFkZXJzIHRvCi0gICAgLy8gcHJvdmlkZSBhIHNp
bmdsZSBwbGFjZSB3aGVyZSBtdWx0aXBsZSBwb3J0aW9ucyBvZiBwbGF0Zm9ybSBjb2RlIGNhbgot
ICAgIC8vIHJlZmVyZW5jZSB0aGVtLgotICAgIHN0YXRpYyBHQ0dMZW51bSBJT1N1cmZhY2VUZXh0
dXJlVGFyZ2V0KCk7Ci0gICAgc3RhdGljIEdDR0xlbnVtIElPU3VyZmFjZVRleHR1cmVUYXJnZXRR
dWVyeSgpOwotICAgIHN0YXRpYyBHQ0dMaW50IEVHTElPU3VyZmFjZVRleHR1cmVUYXJnZXQoKTsK
LSNlbmRpZiAvLyBVU0UoQU5HTEUpCi0KICAgICB2aXJ0dWFsIFBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0R0wgcGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IFBsYXRmb3JtR0xPYmplY3QgcGxhdGZvcm1UZXh0dXJlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdM
QU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXggNzJlZWViMzIwN2QxY2EzNjQ5MThhMmY5NDk5NWQz
NTIyM2EzMzI1OC4uNTU1NTZkNDYwMTdjYzExMjMzMTlhYzI5MTkwYjBkYmUzMzI0NGFjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3ND
b250ZXh0R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTI5LDkgKzI5LDYgQEAKICNpZiBF
TkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkgJiYgVVNFKEFOR0xFKQogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dEdMLmgiCiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMRVNJT1MuaCIKLSNlbmRpZgogI2luY2x1ZGUgIkV4dGVuc2lv
bnNHTEFOR0xFLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJJbWFnZURh
dGEuaCIKQEAgLTIzMSwxMCArMjI4LDEwIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgICAgIGdsOjpCaW5kVGV4dHVy
ZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlMkRCaW5kaW5nKTsKICAgICAgICAgLy8gQXR0YWNoIG1f
dGV4dHVyZSB0byBtX3ByZXNlcnZlRHJhd2luZ0J1ZmZlckZCTyBmb3IgbGF0ZXIgYmxpdHRpbmcu
CiAgICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1fcHJlc2VydmVE
cmF3aW5nQnVmZmVyRkJPKTsKLSAgICAgICAgZ2w6OkZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZS
QU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0R0w6OklPU3Vy
ZmFjZVRleHR1cmVUYXJnZXQoKSwgbV90ZXh0dXJlLCAwKTsKKyAgICAgICAgZ2w6OkZyYW1lYnVm
ZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgSU9TdXJm
YWNlVGV4dHVyZVRhcmdldCgpLCBtX3RleHR1cmUsIDApOwogICAgICAgICBnbDo6QmluZEZyYW1l
YnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtX2Zibyk7CiAgICAgfSBlbHNlCi0gICAgICAgIGdsOjpG
cmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAs
IEdyYXBoaWNzQ29udGV4dEdMOjpJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0KCksIG1fdGV4dHVyZSwg
MCk7CisgICAgICAgIGdsOjpGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xf
Q09MT1JfQVRUQUNITUVOVDAsIElPU3VyZmFjZVRleHR1cmVUYXJnZXQoKSwgbV90ZXh0dXJlLCAw
KTsKICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICBnbDo6QmluZFRleHR1cmUoR0xfVEVYVFVSRV9S
RUNUQU5HTEVfQU5HTEUsIG1fdGV4dHVyZSk7CiAgICAgZ2w6OlRleEltYWdlMkQoR0xfVEVYVFVS
RV9SRUNUQU5HTEVfQU5HTEUsIDAsIG1faW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdo
dCwgMCwgY29sb3JGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUsIDApOwpAQCAtNDg2LDExICs0ODMs
NiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNU
b0NhbnZhcyhJbWFnZUJ1ZmZlciogaW1hZ2VCdQogICAgIH0KIAogICAgIHBhaW50VG9DYW52YXMo
cGl4ZWxzLmdldCgpLCBJbnRTaXplKG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQpLCBp
bWFnZUJ1ZmZlci0+YmFja2VuZFNpemUoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7Ci0KLSNp
ZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKE9QRU5HTF9FUykKLSAgICAvLyBGSVhNRTogd29yayBv
biBpT1MgaW50ZWdyYXRpb24uCi0gICAgcHJlc2VudFJlbmRlcmJ1ZmZlcigpOwotI2VuZGlmCiB9
CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNU
b0NhbnZhcyhJbWFnZUJ1ZmZlciopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCA1OWY3OThm
OWE3YWIyOTg0NmE2NTIxN2Q1OTVjYzgwNmY1NGM3ZTNhLi5hZGJkNWUyNTFjYmI4ZDU3ZWQwMjA4
OGMxZjQ4OWEyYmJjNTZiODM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTU5LDcgKzU5
LDYgQEAKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgogI2ltcG9ydCAiVGV4dEVuY29kaW5nLmgi
CiAjaW1wb3J0ICJUZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5oIgotI2ltcG9ydCAiVGV4dHVyZUNh
Y2hlQ1YuaCIKICNpbXBvcnQgIlZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5oIgogI2ltcG9ydCAiVmlk
ZW9UZXh0dXJlQ29waWVyQ1YuaCIKICNpbXBvcnQgIlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCA4Y2UzYjdiNDA1ZGZkZjk3MDJmMmY5NTE4
YWQ2OWRkODViZGY3Nzc5Li5lN2JmN2E3NjczMzBhNjcyN2YwNjMyMTYxNGRlMWIwYTM4MDdmOWFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtNTUsNyArNTUsNiBAQCBjbGFzcyBFZmZl
Y3RpdmVSYXRlQ2hhbmdlZExpc3RlbmVyOwogY2xhc3MgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2Jq
QzsKIGNsYXNzIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y7CiBjbGFzcyBQbGF0Zm9ybUNsb2NrQ007
Ci1jbGFzcyBUZXh0dXJlQ2FjaGVDVjsKIGNsYXNzIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzsKIGNs
YXNzIFZpZGVvVGV4dHVyZUNvcGllckNWOwogY2xhc3MgV2ViQ29yZURlY29tcHJlc3Npb25TZXNz
aW9uOwpAQCAtMzI0LDcgKzMyMyw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc0F2YWlsYWJs
ZVZpZGVvRnJhbWUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9hbGxSZW5kZXJlcnNIYXZlQXZhaWxh
YmxlU2FtcGxlcyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Zpc2libGUgeyBmYWxzZSB9OwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlQ2FjaGVDVj4gbV90ZXh0dXJlQ2FjaGU7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFZpZGVvVGV4dHVyZUNvcGllckNWPiBtX3ZpZGVvVGV4dHVyZUNvcGllcjsK
ICAgICBSZXRhaW5QdHI8Q1ZPcGVuR0xUZXh0dXJlUmVmPiBtX2xhc3RUZXh0dXJlOwogI2lmIEVO
QUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0K
aW5kZXggNmZmODM0YjA2N2YyMzBlZjc3YzYyNGFjYmYyN2YyYjRhYTEzMDQxMC4uOTI1YmY0ZTFm
OTBiNTRjNDI4NjZjMjY1ODA1OWM2MTFhY2MxYmIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5tbQpAQCAtMzgsNyArMzgsNiBAQAogI2ltcG9ydCAiTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50
LmgiCiAjaW1wb3J0ICJQaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgiCiAjaW1wb3J0ICJUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbi5oIgotI2ltcG9ydCAiVGV4dHVyZUNhY2hlQ1YuaCIKICNpbXBvcnQg
IlZpZGVvTGF5ZXJNYW5hZ2VyT2JqQy5oIgogI2ltcG9ydCAiVmlkZW9UZXh0dXJlQ29waWVyQ1Yu
aCIKICNpbXBvcnQgIldlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KaW5kZXggMzhlN2Y4Yjc4ZDU3NzRlYjIzOGYz
YzQzMGIzZDNjNzUyMjA1YjFhNS4uOTVlZDA5NmM3Nzc0YjBiNWY4N2NjNDJjMGJlZjBlMDRkODA3
ZjMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCkBAIC0y
OCwzOCArMjgsMTggQEAKICNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkKICNpbXBvcnQg
IkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAm
JiAhVVNFKEFOR0xFKQotI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFU0lPUy5oIgot
I2VuZGlmCi0KLSNpbXBvcnQgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKLSNpbXBvcnQgIkdy
YXBoaWNzQ29udGV4dC5oIgorI2ltcG9ydCAiRXh0ZW5zaW9uc0dMQU5HTEUuaCIKICNpbXBvcnQg
IkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5oIgotI2ltcG9ydCAiSFRNTENhbnZhc0Vs
ZW1lbnQuaCIKICNpbXBvcnQgIkhvc3RXaW5kb3cuaCIKLSNpbXBvcnQgIkltYWdlQnVmZmVyLmgi
CiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJPcGVuR0xTb2Z0TGlua0NvY29hLmgiCisj
aW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKKyNpbXBvcnQgIldlYkNvcmVUaHJl
YWQuaCIKICNpbXBvcnQgIldlYkdMTGF5ZXIuaCIKLSNpbXBvcnQgIldlYkdMT2JqZWN0LmgiCi0j
aW1wb3J0ICJXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgiCiAjaW1wb3J0IDxDb3JlR3JhcGhp
Y3MvQ0dCaXRtYXBDb250ZXh0Lmg+Ci0jaW1wb3J0IDxzeXMvc3lzY3RsLmg+Ci0jaW1wb3J0IDxz
eXNleGl0cy5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotI2lmIFVTRShPUEVOR0xfRVMpCi0jaW1wb3J0IDxPcGVu
R0xFUy9FQUdMLmg+Ci0jaW1wb3J0IDxPcGVuR0xFUy9FQUdMRHJhd2FibGUuaD4KLSNpbXBvcnQg
PE9wZW5HTEVTL0VBR0xJT1N1cmZhY2UuaD4KLSNpbXBvcnQgPE9wZW5HTEVTL0VTMi9nbGV4dC5o
PgotI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL2lv
cy9PcGVuR0xFU1NQSS5oPgotI2VsaWYgVVNFKE9QRU5HTCkKLSNpbXBvcnQgPElPS2l0L0lPS2l0
TGliLmg+Ci0jaW1wb3J0IDxPcGVuR0wvZ2wuaD4KLSNlbGlmIFVTRShBTkdMRSkKICNkZWZpbmUg
RUdMX0VHTF9QUk9UT1RZUEVTIDAKIC8vIFNraXAgdGhlIGluY2x1c2lvbiBvZiBBTkdMRSdzIGV4
cGxpY2l0IGNvbnRleHQgZW50cnkgcG9pbnRzIGZvciBub3cuCiAjZGVmaW5lIEdMX0FOR0xFX2V4
cGxpY2l0X2NvbnRleHQKQEAgLTc0LDMzICs1NCwxOCBAQCB0eXBlZGVmIHZvaWQqIEdMZWdsQ29u
dGV4dDsKICNpbXBvcnQgPEFOR0xFL2VudHJ5X3BvaW50c19nbGVzX2V4dF9hdXRvZ2VuLmg+CiAj
aW1wb3J0IDxBTkdMRS9nbDJleHQuaD4KICNpbXBvcnQgPEFOR0xFL2dsMmV4dF9hbmdsZS5oPgot
I2VuZGlmCi0KLSNpZiBVU0UoT1BFTkdMX0VTKSB8fCBVU0UoT1BFTkdMKQotI2ltcG9ydCAiRXh0
ZW5zaW9uc0dMT3BlbkdMLmgiCi0jZWxpZiBVU0UoQU5HTEUpCi0jaW1wb3J0ICJFeHRlbnNpb25z
R0xBTkdMRS5oIgotI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCi0jaW1wb3J0
ICJXZWJDb3JlVGhyZWFkLmgiCi0jZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbXBvcnQg
IlNjcmVlblByb3BlcnRpZXMuaCIKLSNpZiBVU0UoT1BFTkdMKSB8fCBVU0UoQU5HTEUpCiAjaW1w
b3J0IDxPcGVuR0wvQ0dMUmVuZGVyZXJzLmg+CiAjZW5kaWYKLSNlbmRpZgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLW5hbWVzcGFjZSB7Ci0KLSNpZiBVU0UoQU5HTEUpCi0KICNpZiBBU1NFUlRf
RU5BQkxFRAogLy8gUmV0dXJucyB0cnVlIGlmIHdlIGhhdmUgdm9sYXRpbGUgY29udGV4dCBleHRl
bnNpb24gZm9yIHRoZSBwYXJ0aWN1bGFyIEFQSSBvcgogLy8gaWYgdGhlIHBhcnRpY3VsYXIgQVBJ
IGlzIG5vdCB1c2VkLgotYm9vbCBjaGVja1ZvbGF0aWxlQ29udGV4dFN1cHBvcnRJZkRldmljZUV4
aXN0cyhFR0xEaXNwbGF5IGRpc3BsYXksIGNvbnN0IGNoYXIqIGRldmljZUNvbnRleHRWb2xhdGls
ZUV4dGVuc2lvbiwKK3N0YXRpYyBib29sIGNoZWNrVm9sYXRpbGVDb250ZXh0U3VwcG9ydElmRGV2
aWNlRXhpc3RzKEVHTERpc3BsYXkgZGlzcGxheSwgY29uc3QgY2hhciogZGV2aWNlQ29udGV4dFZv
bGF0aWxlRXh0ZW5zaW9uLAogICAgIGNvbnN0IGNoYXIqIGRldmljZUNvbnRleHRFeHRlbnNpb24s
IEVHTGludCBkZXZpY2VDb250ZXh0VHlwZSkKIHsKICAgICBjb25zdCBjaGFyICpjbGllbnRFeHRl
bnNpb25zID0gRUdMX1F1ZXJ5U3RyaW5nKEVHTF9OT19ESVNQTEFZLCBFR0xfRVhURU5TSU9OUyk7
CkBAIC0xMjEsNyArODYsNyBAQCBib29sIGNoZWNrVm9sYXRpbGVDb250ZXh0U3VwcG9ydElmRGV2
aWNlRXhpc3RzKEVHTERpc3BsYXkgZGlzcGxheSwgY29uc3QgY2hhciogZAogfQogI2VuZGlmCiAK
LUVHTERpc3BsYXkgSW5pdGlhbGl6ZUVHTERpc3BsYXkoKQorc3RhdGljIEVHTERpc3BsYXkgSW5p
dGlhbGl6ZUVHTERpc3BsYXkoKQogewogICAgIEVHTGludCBtYWpvclZlcnNpb24gPSAwOwogICAg
IEVHTGludCBtaW5vclZlcnNpb24gPSAwOwpAQCAtMTUzLDIxICsxMTgsOSBAQCBFR0xEaXNwbGF5
IEluaXRpYWxpemVFR0xEaXNwbGF5KCkKICAgICB9CiAgICAgcmV0dXJuIGRpc3BsYXk7CiB9Ci0j
ZW5kaWYKLX0KIAogc3RhdGljIGNvbnN0IHVuc2lnbmVkIHN0YXR1c0NoZWNrVGhyZXNob2xkID0g
NTsKIAotLy8gRklYTUU6IFRoaXMgY2xhc3MgaXMgY3VycmVudGx5IGVtcHR5IG9uIE1hYywgYnV0
IHdpbGwgZ2V0IHBvcHVsYXRlZCBhcwotLy8gdGhlIHJlc3RydWN0dXJpbmcgaW4gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2OTAzIGlzIGRvbmUKLWNsYXNzIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMUHJpdmF0ZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
Ci1wdWJsaWM6Ci0gICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xQcml2YXRlKEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMKikgeyB9Ci0gICAgCi0gICAgfkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMUHJp
dmF0ZSgpIHsgfQotfTsKLQogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZ
U1QpCiBzdGF0aWMgYm9vbCBpc2lPU0FwcE9uTWFjKCkKIHsKQEAgLTE4NCw2ICsxMzcsNyBAQCBz
dGF0aWMgYm9vbCBpc2lPU0FwcE9uTWFjKCkKIH0KICNlbmRpZgogCisKIFJlZlB0cjxHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZShHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEdyYXBo
aWNzQ29udGV4dEdMOjpEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbikKIHsKICAgICAvLyBUaGlzIGlt
cGxlbWVudGF0aW9uIGRvZXNuJ3QgY3VycmVudGx5IHN1cHBvcnQgcmVuZGVyaW5nIGRpcmVjdGx5
IHRvIHRoZSBIb3N0V2luZG93LgpAQCAtMjE1LDcgKzE2OSw3IEBAIFJlZjxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTD4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZVNoYXJlZChHcmFwaGlj
c0NvbnRlCiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKLSNpZiBQTEFURk9STShNQUMpICYmIChV
U0UoT1BFTkdMKSB8fCBVU0UoQU5HTEUpKSAvLyBGSVhNRTogVGhpcyBwcm9iYWJseSBzaG91bGQg
YmUganVzdCAoVVNFKE9QRU5HTCkgfHwgVVNFKEFOR0xFKSkgLSBzZWUgPHJkYXI6Ly81MzA2Mjc5
ND4uCisjaWYgUExBVEZPUk0oTUFDKSAvLyBGSVhNRTogVGhpcyBwcm9iYWJseSBzaG91bGQgYmUg
anVzdCBlbmFibGVkIC0gc2VlIDxyZGFyOi8vNTMwNjI3OTQ+LgogCiBzdGF0aWMgdm9pZCBzZXRH
UFVCeVJlZ2lzdHJ5SUQoQ0dMQ29udGV4dE9iaiBjb250ZXh0T2JqLCBDR0xQaXhlbEZvcm1hdE9i
aiBwaXhlbEZvcm1hdE9iaiwgSU9SZWdpc3RyeUdQVUlEIHByZWZlcnJlZEdQVUlEKQogewpAQCAt
MjYzLDcgKzIxNyw3IEBAIHN0YXRpYyB2b2lkIHNldEdQVUJ5UmVnaXN0cnlJRChDR0xDb250ZXh0
T2JqIGNvbnRleHRPYmosIENHTFBpeGVsRm9ybWF0T2JqIHBpeGVsCiAgICAgfQogfQogCi0jZW5k
aWYgLy8gUExBVEZPUk0oTUFDKSAmJiAoVVNFKE9QRU5HTCkgfHwgVVNFKEFOR0xFKSkKKyNlbmRp
ZiAvLyBQTEFURk9STShNQUMpCiAKIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5k
b3cqIGhvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4dEdMOjpEZXN0aW5hdGlvbiBkZXN0aW5hdGlv
biwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wqIHNoYXJlZENvbnRleHQpCiAgICAgOiBHcmFwaGlj
c0NvbnRleHRHTChhdHRycywgZGVzdGluYXRpb24sIHNoYXJlZENvbnRleHQpCkBAIC0yNzYsMTEx
ICsyMzAsNiBAQCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dAogICAgIG1fcG93ZXJQcmVmZXJlbmNl
VXNlZEZvckNyZWF0aW9uID0gR3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVuY2U6OkRlZmF1
bHQ7CiAjZW5kaWYKIAotI2lmICFVU0UoQU5HTEUpCi0jaWYgVVNFKE9QRU5HTF9FUykKLSAgICBp
ZiAobV9pc0ZvcldlYkdMMikKLSAgICAgICAgbV9jb21waWxlciA9IEFOR0xFV2ViS2l0QnJpZGdl
KFNIX0VTU0xfT1VUUFVULCBTSF9XRUJHTDJfU1BFQyk7Ci0gICAgZWxzZQotICAgICAgICBtX2Nv
bXBpbGVyID0gQU5HTEVXZWJLaXRCcmlkZ2UoU0hfRVNTTF9PVVRQVVQpOwotI2Vsc2UKLSAgICBp
ZiAobV9pc0ZvcldlYkdMMikKLSAgICAgICAgbV9jb21waWxlciA9IEFOR0xFV2ViS2l0QnJpZGdl
KFNIX0dMU0xfNDEwX0NPUkVfT1VUUFVULCBTSF9XRUJHTDJfU1BFQyk7Ci0jZW5kaWYgLy8gVVNF
KE9QRU5HTF9FUykKLSNlbmRpZiAvLyAhVVNFKEFOR0xFKQotCi0jaWYgVVNFKE9QRU5HTF9FUykK
LSAgICBVTlVTRURfUEFSQU0oaG9zdFdpbmRvdyk7Ci0gICAgRUFHTFJlbmRlcmluZ0FQSSBhcGkg
PSBtX2lzRm9yV2ViR0wyID8ga0VBR0xSZW5kZXJpbmdBUElPcGVuR0xFUzMgOiBrRUFHTFJlbmRl
cmluZ0FQSU9wZW5HTEVTMjsKLSAgICBFQUdMQ29udGV4dCAqY29udGV4dE9iajsKLSAgICBpZiAo
IXNoYXJlZENvbnRleHQpCi0gICAgICAgIGNvbnRleHRPYmogPSBbW0VBR0xDb250ZXh0IGFsbG9j
XSBpbml0V2l0aEFQSTphcGldOwotICAgIGVsc2UKLSAgICAgICAgY29udGV4dE9iaiA9IFtbRUFH
TENvbnRleHQgYWxsb2NdIGluaXRXaXRoQVBJOmFwaSBzaGFyZWdyb3VwOnN0YXRpY19jYXN0PEVB
R0xDb250ZXh0ICo+KHNoYXJlZENvbnRleHQtPm1fY29udGV4dE9iaikuc2hhcmVncm91cF07Ci0K
LSAgICBtX2NvbnRleHRPYmogPSBzdGF0aWNfY2FzdDx2b2lkICo+KGNvbnRleHRPYmopOwotCi0g
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0KLSAgICBpZiAobV9pc0ZvcldlYkdMMikKLSAgICAg
ICAgOjpnbEVuYWJsZShHcmFwaGljc0NvbnRleHRHTDo6UFJJTUlUSVZFX1JFU1RBUlRfRklYRURf
SU5ERVgpOwotI2VsaWYgVVNFKE9QRU5HTCkKLQotICAgIGJvb2wgdXNlTXVsdGlzYW1wbGluZyA9
IGF0dHJzLmFudGlhbGlhczsKLQotICAgIFZlY3RvcjxDR0xQaXhlbEZvcm1hdEF0dHJpYnV0ZT4g
YXR0cmliczsKLSAgICBDR0xQaXhlbEZvcm1hdE9iaiBwaXhlbEZvcm1hdE9iaiA9IDA7Ci0gICAg
R0xpbnQgbnVtUGl4ZWxGb3JtYXRzID0gMDsKLQotICAgIGF0dHJpYnMuYXBwZW5kKGtDR0xQRkFB
Y2NlbGVyYXRlZCk7Ci0gICAgYXR0cmlicy5hcHBlbmQoa0NHTFBGQUNvbG9yU2l6ZSk7Ci0gICAg
YXR0cmlicy5hcHBlbmQoc3RhdGljX2Nhc3Q8Q0dMUGl4ZWxGb3JtYXRBdHRyaWJ1dGU+KDMyKSk7
Ci0gICAgYXR0cmlicy5hcHBlbmQoa0NHTFBGQURlcHRoU2l6ZSk7Ci0gICAgYXR0cmlicy5hcHBl
bmQoc3RhdGljX2Nhc3Q8Q0dMUGl4ZWxGb3JtYXRBdHRyaWJ1dGU+KDMyKSk7Ci0KLSAgICAvLyBU
aGlzIGF0dHJpYnV0ZSwgd2hpbGUgbWVudGlvbmluZyBvZmZsaW5lIHJlbmRlcmVycywgaXMgYWN0
dWFsbHkKLSAgICAvLyBhbGxvd2luZyB1cyB0byByZXF1ZXN0IHRoZSBpbnRlZ3JhdGVkIGdyYXBo
aWNzIG9uIGEgZHVhbCBHUFUKLSAgICAvLyBzeXN0ZW0sIGFuZCBub3QgZm9yY2UgdGhlIGRpc2Ny
ZXRlIEdQVS4KLSAgICAvLyBTZWUgaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2xpYnJhcnkv
bWFjL3RlY2hub3Rlcy90bjIyMjkvX2luZGV4Lmh0bWwKLSAgICBpZiAoYWxsb3dPZmZsaW5lUmVu
ZGVyZXJzKCkpCi0gICAgICAgIGF0dHJpYnMuYXBwZW5kKGtDR0xQRkFBbGxvd09mZmxpbmVSZW5k
ZXJlcnMpOwotCi0gICAgaWYgKHVzZU11bHRpc2FtcGxpbmcpIHsKLSAgICAgICAgYXR0cmlicy5h
cHBlbmQoa0NHTFBGQU11bHRpc2FtcGxlKTsKLSAgICAgICAgYXR0cmlicy5hcHBlbmQoa0NHTFBG
QVNhbXBsZUJ1ZmZlcnMpOwotICAgICAgICBhdHRyaWJzLmFwcGVuZChzdGF0aWNfY2FzdDxDR0xQ
aXhlbEZvcm1hdEF0dHJpYnV0ZT4oMSkpOwotICAgICAgICBhdHRyaWJzLmFwcGVuZChrQ0dMUEZB
U2FtcGxlcyk7Ci0gICAgICAgIGF0dHJpYnMuYXBwZW5kKHN0YXRpY19jYXN0PENHTFBpeGVsRm9y
bWF0QXR0cmlidXRlPig0KSk7Ci0gICAgfQotCi0gICAgaWYgKG1faXNGb3JXZWJHTDIpIHsKLSAg
ICAgICAgLy8gRklYTUU6IEluc3RlYWQgb2YgYmFja2luZyBhIFdlYkdMMiBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCB3aXRoIGEgT3BlbkdMIDQgY29udGV4dCwgd2Ugc2hvdWxkIGluc3RlYWQgYmFj
ayBpdCB3aXRoIEFOR0xFLgotICAgICAgICAvLyBVc2UgYW4gT3BlbkdMIDQgY29udGV4dCBmb3Ig
bm93IHVudGlsIHRoZSBBTkdMRSBiYWNrZW5kIGlzIHJlYWR5LgotICAgICAgICBhdHRyaWJzLmFw
cGVuZChrQ0dMUEZBT3BlbkdMUHJvZmlsZSk7Ci0gICAgICAgIGF0dHJpYnMuYXBwZW5kKHN0YXRp
Y19jYXN0PENHTFBpeGVsRm9ybWF0QXR0cmlidXRlPihrQ0dMT0dMUFZlcnNpb25fR0w0X0NvcmUp
KTsKLSAgICB9Ci0KLSAgICBhdHRyaWJzLmFwcGVuZChzdGF0aWNfY2FzdDxDR0xQaXhlbEZvcm1h
dEF0dHJpYnV0ZT4oMCkpOwotCi0gICAgQ0dMQ2hvb3NlUGl4ZWxGb3JtYXQoYXR0cmlicy5kYXRh
KCksICZwaXhlbEZvcm1hdE9iaiwgJm51bVBpeGVsRm9ybWF0cyk7Ci0KLSAgICBpZiAoIW51bVBp
eGVsRm9ybWF0cykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ0dMQ29udGV4dE9iaiBjZ2xDb250
ZXh0ID0gbnVsbHB0cjsKLSAgICBDR0xDb250ZXh0T2JqIHNoYXJlZENHTENvbnRleHQgPSBzaGFy
ZWRDb250ZXh0ID8gc3RhdGljX2Nhc3Q8Q0dMQ29udGV4dE9iaj4oc2hhcmVkQ29udGV4dC0+bV9j
b250ZXh0T2JqKSA6IG51bGxwdHI7Ci0KLSAgICBDR0xFcnJvciBlcnIgPSBDR0xDcmVhdGVDb250
ZXh0KHBpeGVsRm9ybWF0T2JqLCBzaGFyZWRDR0xDb250ZXh0LCAmY2dsQ29udGV4dCk7Ci0gICAg
R0xpbnQgYWJvcnRPbkJsb2NrbGlzdCA9IDA7Ci0gICAgQ0dMU2V0UGFyYW1ldGVyKGNnbENvbnRl
eHQsIGtDR0xDUEFib3J0T25HUFVSZXN0YXJ0U3RhdHVzQmxhY2tsaXN0ZWQsICZhYm9ydE9uQmxv
Y2tsaXN0KTsKLQotI2lmIFBMQVRGT1JNKE1BQykgLy8gRklYTUU6IFRoaXMgcHJvYmFibHkgc2hv
dWxkIGJlIFVTRShPUEVOR0wpIC0gc2VlIDxyZGFyOi8vNTMwNjI3OTQ+LgotCi0gICAgYXV0byBn
cHVJRCA9IChob3N0V2luZG93ICYmIGhvc3RXaW5kb3ctPmRpc3BsYXlJRCgpKSA/IGdwdUlERm9y
RGlzcGxheShob3N0V2luZG93LT5kaXNwbGF5SUQoKSkgOiBwcmltYXJ5R1BVSUQoKTsKLSAgICBz
ZXRHUFVCeVJlZ2lzdHJ5SUQoY2dsQ29udGV4dCwgcGl4ZWxGb3JtYXRPYmosIGdwdUlEKTsKLQot
I2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oaG9zdFdpbmRvdyk7Ci0jZW5kaWYKLQotICAgIENHTERl
c3Ryb3lQaXhlbEZvcm1hdChwaXhlbEZvcm1hdE9iaik7Ci0KLSAgICBtX2NvbnRleHRPYmogPSBj
Z2xDb250ZXh0OwotCi0gICAgaWYgKGVyciAhPSBrQ0dMTm9FcnJvciB8fCAhbV9jb250ZXh0T2Jq
KSB7Ci0gICAgICAgIC8vIFdlIHdlcmUgdW5hYmxlIHRvIGNyZWF0ZSB0aGUgY29udGV4dC4KLSAg
ICAgICAgbV9jb250ZXh0T2JqID0gMDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1f
Y29udGV4dE9iaiA9IGNnbENvbnRleHQ7Ci0KLSAgICBDR0xTZXRDdXJyZW50Q29udGV4dChjZ2xD
b250ZXh0KTsKLQotICAgIC8vIFdlYkdMIDIgZXhwZWN0cyBFUyAzLW9ubHkgUFJJTUlUSVZFX1JF
U1RBUlRfRklYRURfSU5ERVggdG8gYmUgZW5hYmxlZDsgd2UgbXVzdCBlbXVsYXRlIHRoaXMgb24g
bm9uLUVTIDMgc3lzdGVtcy4KLSAgICBpZiAobV9pc0ZvcldlYkdMMikKLSAgICAgICAgOjpnbEVu
YWJsZShHcmFwaGljc0NvbnRleHRHTDo6UFJJTUlUSVZFX1JFU1RBUlQpOwotCi0jZWxpZiBVU0Uo
QU5HTEUpCiAgICAgbV9kaXNwbGF5T2JqID0gSW5pdGlhbGl6ZUVHTERpc3BsYXkoKTsKICAgICBp
ZiAobV9kaXNwbGF5T2JqID09IEVHTF9OT19ESVNQTEFZKQogICAgICAgICByZXR1cm47CkBAIC00
OTQsOCArMzQzLDYgQEAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHQKICAgICBVTlVTRURfUEFSQU0o
aG9zdFdpbmRvdyk7CiAjZW5kaWYKIAotI2VuZGlmIC8vICNlbGlmIFVTRShBTkdMRSkKLQogICAg
IHZhbGlkYXRlQXR0cmlidXRlcygpOwogICAgIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsg
Ly8gVGhleSBtYXkgaGF2ZSBjaGFuZ2VkIGR1cmluZyB2YWxpZGF0aW9uLgogCkBAIC01MDUsMzMg
KzM1MiwxMSBAQCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dAogI2lmbmRlZiBOREVCVUcKICAgICAg
ICAgW21fd2ViR0xMYXllciBzZXROYW1lOkAiV2ViR0wgTGF5ZXIiXTsKICNlbmRpZgotI2lmIFVT
RShBTkdMRSkKICAgICAgICAgW21fd2ViR0xMYXllciBzZXRFR0xEaXNwbGF5Om1fZGlzcGxheU9i
aiBjb25maWc6bV9jb25maWdPYmpdOwotI2VuZGlmCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwogCi0jaWYgVVNFKE9QRU5HTCkKLSAgICBpZiAodXNlTXVsdGlzYW1wbGluZykKLSAgICAg
ICAgOjpnbEVuYWJsZShHTF9NVUxUSVNBTVBMRSk7Ci0jZW5kaWYKLQogICAgIC8vIENyZWF0ZSB0
aGUgdGV4dHVyZSB0aGF0IHdpbGwgYmUgdXNlZCBmb3IgdGhlIGZyYW1lYnVmZmVyLgotI2lmIFVT
RShPUEVOR0xfRVMpCi0gICAgOjpnbEdlblJlbmRlcmJ1ZmZlcnMoMSwgJm1fdGV4dHVyZSk7Ci0j
ZWxpZiBVU0UoT1BFTkdMKQotICAgIDo6Z2xHZW5UZXh0dXJlcygxLCAmbV90ZXh0dXJlKTsKLSAg
ICAvLyBXZSBiaW5kIHRvIEdMX1RFWFRVUkVfUkVDVEFOR0xFX0VYVCByYXRoZXIgdGhhbiBURVhU
VVJFXzJEIGJlY2F1c2UKLSAgICAvLyB0aGF0J3Mgd2hhdCBpcyByZXF1aXJlZCBmb3IgYSB0ZXh0
dXJlIGJhY2tlZCBieSBJT1N1cmZhY2UuCi0gICAgOjpnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVf
UkVDVEFOR0xFX0VYVCwgbV90ZXh0dXJlKTsKLSAgICA6OmdsVGV4UGFyYW1ldGVyaShHTF9URVhU
VVJFX1JFQ1RBTkdMRV9FWFQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAg
ICA6OmdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX1JFQ1RBTkdMRV9FWFQsIEdMX1RFWFRVUkVf
TUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICA6OmdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJF
X1JFQ1RBTkdMRV9FWFQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKLSAg
ICA6OmdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX1JFQ1RBTkdMRV9FWFQsIEdMX1RFWFRVUkVf
V1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICA6OmdsQmluZFRleHR1cmUoR0xfVEVYVFVS
RV9SRUNUQU5HTEVfRVhULCAwKTsKLQotI2VsaWYgVVNFKEFOR0xFKQotCi0gICAgR0xlbnVtIHRl
eHR1cmVUYXJnZXQgPSBHcmFwaGljc0NvbnRleHRHTDo6SU9TdXJmYWNlVGV4dHVyZVRhcmdldCgp
OworICAgIEdMZW51bSB0ZXh0dXJlVGFyZ2V0ID0gSU9TdXJmYWNlVGV4dHVyZVRhcmdldCgpOwog
CiAgICAgZ2w6OkdlblRleHR1cmVzKDEsICZtX3RleHR1cmUpOwogICAgIGdsOjpCaW5kVGV4dHVy
ZSh0ZXh0dXJlVGFyZ2V0LCBtX3RleHR1cmUpOwpAQCAtNTQwLDI3ICszNjUsNyBAQCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzIGF0dAogICAgIGdsOjpUZXhQYXJhbWV0ZXJpKHRleHR1cmVUYXJnZXQsIEdM
X1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKICAgICBnbDo6VGV4UGFyYW1ldGVy
aSh0ZXh0dXJlVGFyZ2V0LCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7CiAg
ICAgZ2w6OkJpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIDApOwotI2Vsc2UKLSNlcnJvciBVbnN1
cHBvcnRlZCBjb25maWd1cmF0aW9uCi0jZW5kaWYKLQotI2lmIFVTRShPUEVOR0wpIHx8IFVTRShP
UEVOR0xfRVMpCi0gICAgLy8gQ3JlYXRlIHRoZSBmcmFtZWJ1ZmZlciBvYmplY3QuCi0gICAgOjpn
bEdlbkZyYW1lYnVmZmVyc0VYVCgxLCAmbV9mYm8pOwotICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJF
WFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7Ci0KLSAgICBpZiAoIWF0dHJzLmFudGlhbGlh
cyAmJiAoYXR0cnMuc3RlbmNpbCB8fCBhdHRycy5kZXB0aCkpCi0gICAgICAgIDo6Z2xHZW5SZW5k
ZXJidWZmZXJzRVhUKDEsICZtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CiAKLSAgICAvLyBJZiBuZWNl
c3NhcnksIGNyZWF0ZSBhbm90aGVyIGZyYW1lYnVmZmVyIGZvciB0aGUgbXVsdGlzYW1wbGUgcmVz
dWx0cy4KLSAgICBpZiAoYXR0cnMuYW50aWFsaWFzKSB7Ci0gICAgICAgIDo6Z2xHZW5GcmFtZWJ1
ZmZlcnNFWFQoMSwgJm1fbXVsdGlzYW1wbGVGQk8pOwotICAgICAgICA6OmdsQmluZEZyYW1lYnVm
ZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7Ci0gICAgICAgIDo6
Z2xHZW5SZW5kZXJidWZmZXJzRVhUKDEsICZtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIpOwotICAg
ICAgICBpZiAoYXR0cnMuc3RlbmNpbCB8fCBhdHRycy5kZXB0aCkKLSAgICAgICAgICAgIDo6Z2xH
ZW5SZW5kZXJidWZmZXJzRVhUKDEsICZtX211bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVmZmVyKTsK
LSAgICB9Ci0jZWxpZiBVU0UoQU5HTEUpCiAgICAgZ2w6OkdlbkZyYW1lYnVmZmVycygxLCAmbV9m
Ym8pOwogICAgIGdsOjpCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1fZmJvKTsKICAg
ICBtX3N0YXRlLmJvdW5kRHJhd0ZCTyA9IG1fc3RhdGUuYm91bmRSZWFkRkJPID0gbV9mYm87CkBA
IC01ODksNDMgKzM5NCw4IEBAIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0CiAgICAgICAgIC8vIENy
ZWF0ZSBhbiBGQk8gd2l0aCB3aGljaCB0byBwZXJmb3JtIEJsaXRGcmFtZWJ1ZmZlciBmcm9tIG9u
ZSB0ZXh0dXJlIHRvIHRoZSBvdGhlci4KICAgICAgICAgZ2w6OkdlbkZyYW1lYnVmZmVycygxLCAm
bV9wcmVzZXJ2ZURyYXdpbmdCdWZmZXJGQk8pOwogICAgIH0KLSNlbmRpZiAvLyBVU0UoQU5HTEUp
CiAKLSNpZiAhVVNFKEFOR0xFKQotICAgIC8vIEFOR0xFIHNoYWRlciBjb21waWxlciBpbml0aWFs
aXphdGlvbi4KLQotICAgIFNoQnVpbHRJblJlc291cmNlcyBBTkdMRVJlc291cmNlczsKLSAgICBz
aDo6SW5pdEJ1aWx0SW5SZXNvdXJjZXMoJkFOR0xFUmVzb3VyY2VzKTsKLQotICAgIGdldEludGVn
ZXJ2KEdyYXBoaWNzQ29udGV4dEdMOjpNQVhfVkVSVEVYX0FUVFJJQlMsICZBTkdMRVJlc291cmNl
cy5NYXhWZXJ0ZXhBdHRyaWJzKTsKLSAgICBnZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6
TUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMsICZBTkdMRVJlc291cmNlcy5NYXhWZXJ0ZXhVbmlm
b3JtVmVjdG9ycyk7Ci0gICAgZ2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9WQVJZ
SU5HX1ZFQ1RPUlMsICZBTkdMRVJlc291cmNlcy5NYXhWYXJ5aW5nVmVjdG9ycyk7Ci0gICAgZ2V0
SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0R0w6Ok1BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklU
UywgJkFOR0xFUmVzb3VyY2VzLk1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzKTsKLSAgICBnZXRJ
bnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5J
VFMsICZBTkdMRVJlc291cmNlcy5NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKTsKLSAgICBn
ZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHRHTDo6TUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMsICZB
TkdMRVJlc291cmNlcy5NYXhUZXh0dXJlSW1hZ2VVbml0cyk7Ci0gICAgZ2V0SW50ZWdlcnYoR3Jh
cGhpY3NDb250ZXh0R0w6Ok1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMsICZBTkdMRVJlc291
cmNlcy5NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzKTsKLQotICAgIC8vIEFsd2F5cyBzZXQgdG8g
MSBmb3IgT3BlbkdMIEVTLgotICAgIEFOR0xFUmVzb3VyY2VzLk1heERyYXdCdWZmZXJzID0gMTsK
LSAgICAKLSAgICBHQ0dMaW50IHJhbmdlWzJdLCBwcmVjaXNpb247Ci0gICAgZ2V0U2hhZGVyUHJl
Y2lzaW9uRm9ybWF0KEdyYXBoaWNzQ29udGV4dEdMOjpGUkFHTUVOVF9TSEFERVIsIEdyYXBoaWNz
Q29udGV4dEdMOjpISUdIX0ZMT0FULCByYW5nZSwgJnByZWNpc2lvbik7Ci0gICAgQU5HTEVSZXNv
dXJjZXMuRnJhZ21lbnRQcmVjaXNpb25IaWdoID0gKHJhbmdlWzBdIHx8IHJhbmdlWzFdIHx8IHBy
ZWNpc2lvbik7Ci0KLSAgICBtX2NvbXBpbGVyLnNldFJlc291cmNlcyhBTkdMRVJlc291cmNlcyk7
Ci0jZW5kaWYgLy8gIVVTRShBTkdMRSkKLSAgICAKLSNpZiBVU0UoT1BFTkdMKQotICAgIDo6Z2xF
bmFibGUoR0xfVkVSVEVYX1BST0dSQU1fUE9JTlRfU0laRSk7Ci0gICAgaWYgKCFpc0dMRVMyQ29t
cGxpYW50KCkpCi0gICAgICAgIDo6Z2xFbmFibGUoR0xfUE9JTlRfU1BSSVRFKTsKLSNlbmRpZgot
Ci0jaWYgVVNFKE9QRU5HTCkgfHwgVVNFKE9QRU5HTF9FUykKLSAgICA6OmdsQ2xlYXJDb2xvcigw
LCAwLCAwLCAwKTsKLSNlbGlmIFVTRShBTkdMRSkKICAgICBnbDo6Q2xlYXJDb2xvcigwLCAwLCAw
LCAwKTsKLSNlbmRpZgogCiAgICAgTE9HKFdlYkdMLCAiQ3JlYXRlZCBhIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMICglcCkuIiwgdGhpcyk7CiB9CkBAIC02MzcsMjcgKzQwNyw4IEBAIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp+R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woKQogICAgIGlmIChtX2Nv
bnRleHRPYmopIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJzID0g
Y29udGV4dEF0dHJpYnV0ZXMoKTsKICAgICAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7IC8vIFRP
RE86IGNoZWNrIHJlc3VsdC4KLSNpZiBVU0UoT1BFTkdMX0VTKQotICAgICAgICBbc3RhdGljX2Nh
c3Q8RUFHTENvbnRleHQgKj4obV9jb250ZXh0T2JqKSByZW5kZXJidWZmZXJTdG9yYWdlOkdMX1JF
TkRFUkJVRkZFUiBmcm9tRHJhd2FibGU6bmlsXTsKLSAgICAgICAgOjpnbERlbGV0ZVJlbmRlcmJ1
ZmZlcnMoMSwgJm1fdGV4dHVyZSk7Ci0jZWxpZiBVU0UoT1BFTkdMKQotICAgICAgICA6OmdsRGVs
ZXRlVGV4dHVyZXMoMSwgJm1fdGV4dHVyZSk7Ci0jZWxpZiBVU0UoQU5HTEUpCiAgICAgICAgIGds
OjpEZWxldGVUZXh0dXJlcygxLCAmbV90ZXh0dXJlKTsKLSNlbmRpZgogCi0jaWYgVVNFKE9QRU5H
TCkgfHwgVVNFKE9QRU5HTF9FUykKLSAgICAgICAgaWYgKGF0dHJzLmFudGlhbGlhcykgewotICAg
ICAgICAgICAgOjpnbERlbGV0ZVJlbmRlcmJ1ZmZlcnNFWFQoMSwgJm1fbXVsdGlzYW1wbGVDb2xv
ckJ1ZmZlcik7Ci0gICAgICAgICAgICBpZiAoYXR0cnMuc3RlbmNpbCB8fCBhdHRycy5kZXB0aCkK
LSAgICAgICAgICAgICAgICA6OmdsRGVsZXRlUmVuZGVyYnVmZmVyc0VYVCgxLCAmbV9tdWx0aXNh
bXBsZURlcHRoU3RlbmNpbEJ1ZmZlcik7Ci0gICAgICAgICAgICA6OmdsRGVsZXRlRnJhbWVidWZm
ZXJzRVhUKDEsICZtX211bHRpc2FtcGxlRkJPKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIGlmIChhdHRycy5zdGVuY2lsIHx8IGF0dHJzLmRlcHRoKQotICAgICAgICAgICAgICAgIDo6
Z2xEZWxldGVSZW5kZXJidWZmZXJzRVhUKDEsICZtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7Ci0gICAg
ICAgIH0KLSAgICAgICAgOjpnbERlbGV0ZUZyYW1lYnVmZmVyc0VYVCgxLCAmbV9mYm8pOwotI2Vs
aWYgVVNFKEFOR0xFKQogICAgICAgICBpZiAoYXR0cnMuYW50aWFsaWFzKSB7CiAgICAgICAgICAg
ICBnbDo6RGVsZXRlUmVuZGVyYnVmZmVycygxLCAmbV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVyKTsK
ICAgICAgICAgICAgIGlmIChhdHRycy5zdGVuY2lsIHx8IGF0dHJzLmRlcHRoKQpAQCAtNjcyLDI3
ICs0MjMsMTcgQEAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6On5HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTCgpCiAgICAgICAgICAgICBnbDo6RGVsZXRlVGV4dHVyZXMoMSwgJm1fcHJlc2VydmVEcmF3
aW5nQnVmZmVyVGV4dHVyZSk7CiAgICAgICAgIGlmIChtX3ByZXNlcnZlRHJhd2luZ0J1ZmZlckZC
TykKICAgICAgICAgICAgIGdsOjpEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1fcHJlc2VydmVEcmF3
aW5nQnVmZmVyRkJPKTsKLSNlbmRpZgogCi0jaWYgVVNFKE9QRU5HTF9FUykKLSAgICAgICAgW0VB
R0xDb250ZXh0IHNldEN1cnJlbnRDb250ZXh0OjBdOwotICAgICAgICBbc3RhdGljX2Nhc3Q8RUFH
TENvbnRleHQgKj4obV9jb250ZXh0T2JqKSByZWxlYXNlXTsKLSNlbGlmIFVTRShPUEVOR0wpCi0g
ICAgICAgIENHTFNldEN1cnJlbnRDb250ZXh0KDApOwotICAgICAgICBDR0xEZXN0cm95Q29udGV4
dChjZ2xDb250ZXh0KTsKLSNlbGlmIFVTRShBTkdMRSkKICAgICAgICAgW21fd2ViR0xMYXllciBy
ZWxlYXNlR0xSZXNvdXJjZXNdOwogICAgICAgICBFR0xfTWFrZUN1cnJlbnQobV9kaXNwbGF5T2Jq
LCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19DT05URVhUKTsKICAgICAg
ICAgRUdMX0Rlc3Ryb3lDb250ZXh0KG1fZGlzcGxheU9iaiwgbV9jb250ZXh0T2JqKTsKLSNlbmRp
ZgogICAgICAgICBbbV93ZWJHTExheWVyIHNldENvbnRleHQ6bnVsbHB0cl07CiAgICAgfQogCiAg
ICAgTE9HKFdlYkdMLCAiRGVzdHJveWVkIGEgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgKCVwKS4i
LCB0aGlzKTsKIH0KIAotI2lmIFVTRShBTkdMRSkKLUdDR0xlbnVtIEdyYXBoaWNzQ29udGV4dEdM
OjpJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0KCkKK0dDR0xlbnVtIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0KCkKIHsKICNpZiBQTEFURk9STShNQUNDQVRBTFlT
VCkKICAgICBpZiAoaXNpT1NBcHBPbk1hYygpKQpAQCAtNzA1LDcgKzQ0Niw3IEBAIEdDR0xlbnVt
IEdyYXBoaWNzQ29udGV4dEdMOjpJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0KCkKICNlbmRpZgogfQog
Ci1HQ0dMZW51bSBHcmFwaGljc0NvbnRleHRHTDo6SU9TdXJmYWNlVGV4dHVyZVRhcmdldFF1ZXJ5
KCkKK0dDR0xlbnVtIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpJT1N1cmZhY2VUZXh0dXJlVGFy
Z2V0UXVlcnkoKQogewogI2lmIFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGlmIChpc2lPU0Fw
cE9uTWFjKCkpCkBAIC03MTgsNTggKzQ1OSwzMSBAQCBHQ0dMZW51bSBHcmFwaGljc0NvbnRleHRH
TDo6SU9TdXJmYWNlVGV4dHVyZVRhcmdldFF1ZXJ5KCkKICNlbmRpZgogfQogCi1HQ0dMaW50IEdy
YXBoaWNzQ29udGV4dEdMOjpFR0xJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0KCkKK0dDR0xpbnQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OkVHTElPU3VyZmFjZVRleHR1cmVUYXJnZXQoKQogewogI2lm
IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGlmIChpc2lPU0FwcE9uTWFjKCkpCi0gICAgICAg
IHJldHVybiAweDMwNUY7IC8vIEVHTF9URVhUVVJFXzJECi0gICAgcmV0dXJuIDB4MzQ1QjsgLy8g
RUdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFCisgICAgICAgIHJldHVybiBFR0xfVEVYVFVSRV8y
RDsKKyAgICByZXR1cm4gRUdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFOwogI2VsaWYgUExBVEZP
Uk0oTUFDKQotICAgIHJldHVybiAweDM0NUI7IC8vIEVHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdM
RQorICAgIHJldHVybiBFR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEU7CiAjZWxzZQotICAgIHJl
dHVybiAweDMwNUY7IC8vIEVHTF9URVhUVVJFXzJECisgICAgcmV0dXJuIEVHTF9URVhUVVJFXzJE
OwogI2VuZGlmCiB9Ci0jZW5kaWYKLQotI2lmIFVTRShPUEVOR0xfRVMpCi12b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpzZXRSZW5kZXJidWZmZXJTdG9yYWdlRnJvbURyYXdhYmxlKEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKLXsKLSAgICAvLyBXZSBuZWVkIHRvIG1ha2Ug
YSBjYWxsIHRvIHNldEJvdW5kcyBiZWxvdyB0byB1cGRhdGUgdGhlIGJhY2tpbmcgc3RvcmUgc2l6
ZSBidXQgd2UgYWxzbwotICAgIC8vIGRvIG5vdCB3YW50IHRvIGNsb2JiZXIgdGhlIGJvdW5kcyBz
ZXQgZHVyaW5nIGxheW91dC4KLSAgICBDR1JlY3QgcHJldmlvdXNCb3VuZHMgPSBbbV93ZWJHTExh
eWVyLmdldCgpIGJvdW5kc107Ci0KLSAgICBbbV93ZWJHTExheWVyIHNldEJvdW5kczpDR1JlY3RN
YWtlKDAsIDAsIHdpZHRoLCBoZWlnaHQpXTsKLSAgICBbbV93ZWJHTExheWVyIHNldE9wYXF1ZToh
Y29udGV4dEF0dHJpYnV0ZXMoKS5hbHBoYV07Ci0KLSAgICBbc3RhdGljX2Nhc3Q8RUFHTENvbnRl
eHQgKj4obV9jb250ZXh0T2JqKSByZW5kZXJidWZmZXJTdG9yYWdlOkdMX1JFTkRFUkJVRkZFUiBm
cm9tRHJhd2FibGU6c3RhdGljX2Nhc3Q8aWQ8RUFHTERyYXdhYmxlPj4obV93ZWJHTExheWVyLmdl
dCgpKV07Ci0KLSAgICBbbV93ZWJHTExheWVyIHNldEJvdW5kczpwcmV2aW91c0JvdW5kc107Ci19
Ci0jZW5kaWYKIAogYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFrZUNvbnRleHRDdXJy
ZW50KCkKIHsKICAgICBpZiAoIW1fY29udGV4dE9iaikKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0jaWYgVVNFKE9QRU5HTF9FUykKLSAgICBpZiAoW0VBR0xDb250ZXh0IGN1cnJlbnRDb250ZXh0
XSAhPSBtX2NvbnRleHRPYmopCi0gICAgICAgIHJldHVybiBbRUFHTENvbnRleHQgc2V0Q3VycmVu
dENvbnRleHQ6c3RhdGljX2Nhc3Q8RUFHTENvbnRleHQqPihtX2NvbnRleHRPYmopXTsKLSNlbGlm
IFVTRShPUEVOR0wpCi0gICAgQ0dMQ29udGV4dE9iaiBjdXJyZW50Q29udGV4dCA9IENHTEdldEN1
cnJlbnRDb250ZXh0KCk7Ci0gICAgaWYgKGN1cnJlbnRDb250ZXh0ICE9IG1fY29udGV4dE9iaikK
LSAgICAgICAgcmV0dXJuIENHTFNldEN1cnJlbnRDb250ZXh0KHN0YXRpY19jYXN0PENHTENvbnRl
eHRPYmo+KG1fY29udGV4dE9iaikpID09IGtDR0xOb0Vycm9yOwotI2VsaWYgVVNFKEFOR0xFKQog
ICAgIC8vIEFOR0xFIGhhcyBhbiBlYXJseSBvdXQgZm9yIGNhc2Ugd2hlcmUgbm90aGluZyBjaGFu
Z2VzLiBDYWxsaW5nIE1ha2VDdXJyZW50CiAgICAgLy8gaXMgaW1wb3J0YW50IHRvIHNldCB2b2xh
dGlsZSBwbGF0Zm9ybSBjb250ZXh0LiBTZWUgSW5pdGlhbGl6ZUVHTERpc3BsYXkoKS4KICAgICBp
ZiAoIUVHTF9NYWtlQ3VycmVudChtX2Rpc3BsYXlPYmosIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9f
U1VSRkFDRSwgbV9jb250ZXh0T2JqKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBVU0UoQU5H
TEUpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlbGVhc2VDdXJyZW50Q29udGV4dChSZWxlYXNlQmVoYXZpb3IgcmVsZWFzZUJlaGF2aW9y
KQogewogICAgIC8vIEF0IHRoZSBtb21lbnQgdGhpcyBmdW5jdGlvbiBpcyByZWxldmFudCBvbmx5
IHdoZW4gd2ViIHRocmVhZCBsb2NrIG93bnMgdGhlIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGN1
cnJlbnQgY29udGV4dC4KQEAgLTgxMSwxNCArNTI1LDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Y2hlY2tHUFVTdGF0dXMoKQogICAgICAgICBMT0coV2ViR0wsICJQcmV0ZW5kaW5n
IHRoZSBHUFUgaGFzIHJlc2V0ICglcCkuIExvc2UgdGhlIGNvbnRleHQuIiwgdGhpcyk7CiAgICAg
ICAgIG1fZmFpbE5leHRTdGF0dXNDaGVjayA9IGZhbHNlOwogICAgICAgICBmb3JjZUNvbnRleHRM
b3N0KCk7Ci0jaWYgVVNFKE9QRU5HTCkKLSAgICAgICAgQ0dMU2V0Q3VycmVudENvbnRleHQoMCk7
Ci0jZWxpZiBVU0UoT1BFTkdMX0VTKQotICAgICAgICBbRUFHTENvbnRleHQgc2V0Q3VycmVudENv
bnRleHQ6MF07Ci0jZWxpZiBVU0UoQU5HTEUpCisKICAgICAgICAgRUdMX0JpbmRBUEkoRUdMX09Q
RU5HTF9FU19BUEkpOwogICAgICAgICBFR0xfTWFrZUN1cnJlbnQobV9kaXNwbGF5T2JqLCBFR0xf
Tk9fU1VSRkFDRSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19DT05URVhUKTsKLSNlbmRpZgogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC04MjksOTQgKzUzOCwxMCBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpjaGVja0dQVVN0YXR1cygpCiAgICAgbV9zdGF0dXNDaGVja0NvdW50
ID0gKG1fc3RhdHVzQ2hlY2tDb3VudCArIDEpICUgc3RhdHVzQ2hlY2tUaHJlc2hvbGQ7CiAKICAg
ICBHTGludCByZXN0YXJ0U3RhdHVzID0gMDsKLSNpZiBVU0UoT1BFTkdMKQotICAgIENHTENvbnRl
eHRPYmogY2dsQ29udGV4dCA9IHN0YXRpY19jYXN0PENHTENvbnRleHRPYmo+KHBsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0R0woKSk7Ci0gICAgQ0dMR2V0UGFyYW1ldGVyKGNnbENvbnRleHQsIGtDR0xD
UEdQVVJlc3RhcnRTdGF0dXMsICZyZXN0YXJ0U3RhdHVzKTsKLSAgICBpZiAocmVzdGFydFN0YXR1
cyA9PSBrQ0dMQ1BHUFVSZXN0YXJ0U3RhdHVzQmxhY2tsaXN0ZWQpIHsKLSAgICAgICAgTE9HKFdl
YkdMLCAiVGhlIEdQVSBoYXMgYmxvY2tsaXN0ZWQgdXMgKCVwKS4gVGVybWluYXRpbmcuIiwgdGhp
cyk7Ci0gICAgICAgIGV4aXQoRVhfT1NFUlIpOwotICAgIH0KLSAgICBpZiAocmVzdGFydFN0YXR1
cyA9PSBrQ0dMQ1BHUFVSZXN0YXJ0U3RhdHVzQ2F1c2VkKSB7Ci0gICAgICAgIExPRyhXZWJHTCwg
IlRoZSBHUFUgaGFzIHJlc2V0IHVzICglcCkuIExvc2UgdGhlIGNvbnRleHQuIiwgdGhpcyk7Ci0g
ICAgICAgIGZvcmNlQ29udGV4dExvc3QoKTsKLSAgICAgICAgQ0dMU2V0Q3VycmVudENvbnRleHQo
MCk7Ci0gICAgfQotI2VsaWYgVVNFKE9QRU5HTF9FUykKLSAgICBFQUdMQ29udGV4dCogY3VycmVu
dENvbnRleHQgPSBzdGF0aWNfY2FzdDxFQUdMQ29udGV4dCo+KFBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0R0woKSk7Ci0gICAgW2N1cnJlbnRDb250ZXh0IGdldFBhcmFtZXRlcjprRUFHTENQR1BVUmVz
dGFydFN0YXR1cyB0bzomcmVzdGFydFN0YXR1c107Ci0gICAgaWYgKHJlc3RhcnRTdGF0dXMgPT0g
a0VBR0xDUEdQVVJlc3RhcnRTdGF0dXNDYXVzZWQgfHwgcmVzdGFydFN0YXR1cyA9PSBrRUFHTENQ
R1BVUmVzdGFydFN0YXR1c0JsYWNrbGlzdGVkKSB7Ci0gICAgICAgIExPRyhXZWJHTCwgIlRoZSBH
UFUgaGFzIGVpdGhlciByZXNldCBvciBibG9ja2xpc3RlZCB1cyAoJXApLiBMb3NlIHRoZSBjb250
ZXh0LiIsIHRoaXMpOwotICAgICAgICBmb3JjZUNvbnRleHRMb3N0KCk7Ci0gICAgICAgIFtFQUdM
Q29udGV4dCBzZXRDdXJyZW50Q29udGV4dDowXTsKLSAgICB9Ci0jZWxpZiBVU0UoQU5HTEUpCiAg
ICAgLy8gRklYTUU6IGNoZWNrIHZpYSBLSFJfcm9idXN0bmVzcy4KICAgICByZXN0YXJ0U3RhdHVz
ID0gMDsKLSNlbmRpZgogfQogCi0jaWYgVVNFKE9QRU5HTF9FUykKLXZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnByZXNlbnRSZW5kZXJidWZmZXIoKQotewotICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOwotICAgIGlmIChjb250ZXh0QXR0cmlidXRlcygpLmFudGlhbGlhcykKLSAgICAgICAg
cmVzb2x2ZU11bHRpc2FtcGxpbmdJZk5lY2Vzc2FyeSgpOwotCi0gICAgOjpnbEZsdXNoKCk7Ci0g
ICAgOjpnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtX3RleHR1cmUpOwotICAg
IFtzdGF0aWNfY2FzdDxFQUdMQ29udGV4dCo+KG1fY29udGV4dE9iaikgcHJlc2VudFJlbmRlcmJ1
ZmZlcjpHTF9SRU5ERVJCVUZGRVJdOwotICAgIFtFQUdMQ29udGV4dCBzZXRDdXJyZW50Q29udGV4
dDpuaWxdOwotfQotI2VuZGlmCi0KLWJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleElt
YWdlSU9TdXJmYWNlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIElPU3VyZmFjZVJlZiBzdXJmYWNlLCBHQ0dMdWludCBwbGFuZSkKLXsKLSNpZiBV
U0UoT1BFTkdMKQotICAgIENHTENvbnRleHRPYmogY2dsQ29udGV4dCA9IHN0YXRpY19jYXN0PENH
TENvbnRleHRPYmo+KHBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0woKSk7Ci0gICAgcmV0dXJuIGtD
R0xOb0Vycm9yID09IENHTFRleEltYWdlSU9TdXJmYWNlMkQoY2dsQ29udGV4dCwgdGFyZ2V0LCBp
bnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdXJmYWNlLCBwbGFu
ZSk7Ci0jZWxpZiBVU0UoT1BFTkdMX0VTKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFU
T1IpCi0gICAgcmV0dXJuIFtzdGF0aWNfY2FzdDxFQUdMQ29udGV4dCAqPihwbGF0Zm9ybUdyYXBo
aWNzQ29udGV4dEdMKCkpIHRleEltYWdlSU9TdXJmYWNlOnN1cmZhY2UgdGFyZ2V0OnRhcmdldCBp
bnRlcm5hbEZvcm1hdDppbnRlcm5hbEZvcm1hdCB3aWR0aDp3aWR0aCBoZWlnaHQ6aGVpZ2h0IGZv
cm1hdDpmb3JtYXQgdHlwZTp0eXBlIHBsYW5lOnBsYW5lXTsKLSNlbHNlCi0gICAgVU5VU0VEX1BB
UkFNKHRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGludGVybmFsRm9ybWF0KTsKLSAgICBVTlVT
RURfUEFSQU0od2lkdGgpOwotICAgIFVOVVNFRF9QQVJBTShoZWlnaHQpOwotICAgIFVOVVNFRF9Q
QVJBTShmb3JtYXQpOwotICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKLSAgICBVTlVTRURfUEFSQU0o
c3VyZmFjZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHBsYW5lKTsKLSAgICByZXR1cm4gZmFsc2U7Ci0j
ZW5kaWYKLX0KLQotI2lmIFVTRShPUEVOR0wpCi1ib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjphbGxvY2F0ZUlPU3VyZmFjZUJhY2tpbmdTdG9yZShJbnRTaXplIHNpemUpCi17Ci0gICAgTE9H
KFdlYkdMLCAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlSU9TdXJmYWNlQmFja2lu
Z1N0b3JlIGF0ICVkIHggJWQuICglcCkiLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIHRo
aXMpOwotICAgIHJldHVybiBbbV93ZWJHTExheWVyIGFsbG9jYXRlSU9TdXJmYWNlQmFja2luZ1N0
b3JlV2l0aFNpemU6c2l6ZSB1c2luZ0FscGhhOmNvbnRleHRBdHRyaWJ1dGVzKCkuYWxwaGFdOwot
fQotCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1cGRhdGVGcmFtZWJ1ZmZlclRleHR1
cmVCYWNraW5nU3RvcmVGcm9tTGF5ZXIoKQotewotICAgIExPRyhXZWJHTCwgIkdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp1cGRhdGVGcmFtZWJ1ZmZlclRleHR1cmVCYWNraW5nU3RvcmVGcm9tTGF5
ZXIoKS4gKCVwKSIsIHRoaXMpOwotICAgIFttX3dlYkdMTGF5ZXIgYmluZEZyYW1lYnVmZmVyVG9O
ZXh0QXZhaWxhYmxlU3VyZmFjZV07Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnVwZGF0ZUNHTENvbnRleHQoKQotewotICAgIGlmICghbV9jb250ZXh0T2JqKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBMT0coV2ViR0wsICJEZXRlY3RlZCBhIG11eCBzd2l0Y2ggb3IgZGlzcGxh
eSByZWNvbmZpZ3VyYXRpb24uIENhbGwgQ0dMVXBkYXRlQ29udGV4dC4gKCVwKSIsIHRoaXMpOwot
Ci0gICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgQ0dMVXBkYXRlQ29udGV4dChzdGF0aWNf
Y2FzdDxDR0xDb250ZXh0T2JqPihtX2NvbnRleHRPYmopKTsKLSAgICBtX2hhc1N3aXRjaGVkVG9I
aWdoUGVyZm9ybWFuY2VHUFUgPSB0cnVlOwotfQotCi0jZW5kaWYgLy8gVVNFKE9QRU5HTCkKLQot
I2lmIFVTRShPUEVOR0wpIHx8IFVTRShBTkdMRSkKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnNldENvbnRleHRWaXNpYmlsaXR5KGJvb2wgaXNWaXNpYmxlKQogewogICAgIGlmIChtX3Bv
d2VyUHJlZmVyZW5jZVVzZWRGb3JDcmVhdGlvbiA9PSBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJl
ZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlKSB7CkBAIC05MjYsOSArNTUxLDYgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6c2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCBpc1Zpc2libGUp
CiAgICAgICAgICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnNoYXJlZE1hbmFn
ZXIoKS5yZW1vdmVDb250ZXh0UmVxdWlyaW5nSGlnaFBlcmZvcm1hbmNlKHRoaXMpOwogICAgIH0K
IH0KLSNlbmRpZiAvLyBVU0UoT1BFTkdMKSB8fCBVU0UoQU5HTEUpCi0KLSNpZiBVU0UoQU5HTEUp
CiAKICNpZiBQTEFURk9STShNQUMpCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp1cGRh
dGVDR0xDb250ZXh0KCkKQEAgLTk2MSw4ICs1ODMsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp1cGRhdGVGcmFtZWJ1ZmZlclRleHR1cmVCYWNraW5nU3RvcmVGcm9tTGF5ZXIoKQog
ICAgIFttX3dlYkdMTGF5ZXIgYmluZEZyYW1lYnVmZmVyVG9OZXh0QXZhaWxhYmxlU3VyZmFjZV07
CiB9CiAKLSNlbmRpZiAvLyBVU0UoQU5HTEUpCi0KIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAogewogICAgIHJldHVybiBtX2lzRm9yV2ViR0wy
OwpAQCAtMTAwMyw3ICs2MjMsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpzY3Jl
ZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQogewogICAgIGlmICghbV9j
b250ZXh0T2JqKQogICAgICAgICByZXR1cm47Ci0jaWYgVVNFKEFOR0xFKQogICAgIGlmICghbV9o
YXNTd2l0Y2hlZFRvSGlnaFBlcmZvcm1hbmNlR1BVKSB7CiAgICAgICAgIEVHTERldmljZUVYVCBk
ZXZpY2UgPSBudWxscHRyOwogICAgICAgICBFR0xfUXVlcnlEaXNwbGF5QXR0cmliRVhUKG1fZGlz
cGxheU9iaiwgRUdMX0RFVklDRV9FWFQsIHJlaW50ZXJwcmV0X2Nhc3Q8RUdMQXR0cmliKj4oJmRl
dmljZSkpOwpAQCAtMTAxMywxNCArNjMyLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6c2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKICAgICAgICAg
RUdMX1F1ZXJ5RGV2aWNlQXR0cmliRVhUKGRldmljZSwgRUdMX0NHTF9QSVhFTF9GT1JNQVRfQU5H
TEUsIHJlaW50ZXJwcmV0X2Nhc3Q8RUdMQXR0cmliKj4oJnBpeGVsRm9ybWF0KSk7CiAgICAgICAg
IHNldEdQVUJ5UmVnaXN0cnlJRChjZ2xDb250ZXh0LCBwaXhlbEZvcm1hdCwgZ3B1SURGb3JEaXNw
bGF5KGRpc3BsYXlJRCkpOwogICAgIH0KLSNlbHNlCi0jaWYgVVNFKE9QRU5HTCkKLSAgICBpZiAo
IW1faGFzU3dpdGNoZWRUb0hpZ2hQZXJmb3JtYW5jZUdQVSkgewotICAgICAgICBDR0xDb250ZXh0
T2JqIGNnbENvbnRleHQgPSBzdGF0aWNfY2FzdDxDR0xDb250ZXh0T2JqPihtX2NvbnRleHRPYmop
OwotICAgICAgICBzZXRHUFVCeVJlZ2lzdHJ5SUQoY2dsQ29udGV4dCwgQ0dMR2V0UGl4ZWxGb3Jt
YXQoY2dsQ29udGV4dCksIGdwdUlERm9yRGlzcGxheShkaXNwbGF5SUQpKTsKLSAgICB9Ci0jZW5k
aWYKLSNlbmRpZiAvLyBVU0UoQU5HTEUpCiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKE1BQykKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xM
YXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXll
ci5oCmluZGV4IDcyNzhiYjRmMmFmOWNiMGQ1ZWI4N2NiYThkNDYwODhlMGVhNTBkN2MuLjRkOWYz
N2E2OTQ5YWE5Mzc2MzZhNmZjYTc3Yzk4MjI3NDUwNmU0MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJHTExheWVyLmgKQEAgLTM1LDE1ICsz
NSw3IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOwogCiBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19CRUdJTgogCi0jaWYgVVNFKE9QRU5HTCkKIEBpbnRlcmZhY2UgV2ViR0xM
YXllciA6IENBTGF5ZXIKLSNlbGlmIFVTRShPUEVOR0xfRVMpCi1AaW50ZXJmYWNlIFdlYkdMTGF5
ZXIgOiBDQUVBR0xMYXllcgotI2VsaWYgVVNFKEFOR0xFKQotQGludGVyZmFjZSBXZWJHTExheWVy
IDogQ0FMYXllcgotI2Vsc2UKLSNlcnJvciBVbnN1cHBvcnRlZCBwbGF0Zm9ybQotI2VuZGlmCiAK
IEBwcm9wZXJ0eSAobm9uYXRvbWljKSBOYWtlZFB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TE9wZW5HTD4gY29udGV4dDsKIApAQCAtNTMsMTUgKzQ1LDEwIEBAIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0JFR0lOCiAKIC0gKHZvaWQpcHJlcGFyZUZvckRpc3BsYXk7CiAKLSNpZiBV
U0UoT1BFTkdMKSB8fCBVU0UoQU5HTEUpCiAtIChib29sKWFsbG9jYXRlSU9TdXJmYWNlQmFja2lu
Z1N0b3JlV2l0aFNpemU6KFdlYkNvcmU6OkludFNpemUpc2l6ZSB1c2luZ0FscGhhOihCT09MKXVz
aW5nQWxwaGE7CiAtICh2b2lkKWJpbmRGcmFtZWJ1ZmZlclRvTmV4dEF2YWlsYWJsZVN1cmZhY2U7
Ci0jZW5kaWYKLQotI2lmIFVTRShBTkdMRSkKIC0gKHZvaWQpc2V0RUdMRGlzcGxheToodm9pZCop
ZWdsRGlzcGxheSBjb25maWc6KHZvaWQqKWVnbENvbmZpZzsKIC0gKHZvaWQpcmVsZWFzZUdMUmVz
b3VyY2VzOwotI2VuZGlmCiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViR0xMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KaW5kZXggMzc5YWMxMzY2MmU1ZjhkYTgw
ZTEwMWI5YzZhY2RjMzE0ZDRmOWRkMC4uY2NmZjhmMDZkZjVjNjlmODE1MDk0MTE4NDA2YjI5YTdi
ZDQwNzRlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViR0xMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJHTExheWVyLm1tCkBAIC0zOSwxMiArMzksNiBAQAogI2ltcG9ydCA8d3RmL0Zhc3RN
YWxsb2MuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAotI2lmIFVTRShPUEVOR0wpCi0j
aW1wb3J0IDxPcGVuR0wvT3BlbkdMLmg+Ci0jaW1wb3J0IDxPcGVuR0wvZ2wuaD4KLSNlbmRpZgot
Ci0jaWYgVVNFKEFOR0xFKQogI2RlZmluZSBFR0xfRUdMX1BST1RPVFlQRVMgMAogI2ltcG9ydCA8
QU5HTEUvZWdsLmg+CiAjaW1wb3J0IDxBTkdMRS9lZ2xleHQuaD4KQEAgLTU1LDkgKzQ5LDcgQEAK
ICNkZWZpbmUgR0xfQU5HTEVfZXhwbGljaXRfY29udGV4dAogI2ltcG9ydCA8QU5HTEUvZ2wyZXh0
Lmg+CiAjaW1wb3J0IDxBTkdMRS9nbDJleHRfYW5nbGUuaD4KLSNlbmRpZgogCi0jaWYgVVNFKEFO
R0xFKQogbmFtZXNwYWNlIHsKICAgICBjbGFzcyBTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcg
ewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRp
bmcpOwpAQCAtNzgsMjUgKzcwLDIwIEBAIG5hbWVzcGFjZSB7CiAgICAgICAgIEdMaW50IG1fYmlu
ZGluZ1ZhbHVlIHsgMCB9OwogICAgIH07CiB9Ci0jZW5kaWYKIAogQGltcGxlbWVudGF0aW9uIFdl
YkdMTGF5ZXIgewogICAgIGZsb2F0IF9kZXZpY2VQaXhlbFJhdGlvOwotI2lmIFVTRShPUEVOR0wp
IHx8IFVTRShBTkdMRSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiBf
Y29udGVudHNCdWZmZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4g
X2RyYXdpbmdCdWZmZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4g
X3NwYXJlQnVmZmVyOwogICAgIFdlYkNvcmU6OkludFNpemUgX2J1ZmZlclNpemU7CiAgICAgQk9P
TCBfdXNpbmdBbHBoYTsKLSNlbmRpZgotI2lmIFVTRShBTkdMRSkKICAgICB2b2lkKiBfZWdsRGlz
cGxheTsKICAgICB2b2lkKiBfZWdsQ29uZmlnOwogICAgIHZvaWQqIF9jb250ZW50c1BidWZmZXI7
CiAgICAgdm9pZCogX2RyYXdpbmdQYnVmZmVyOwogICAgIHZvaWQqIF9zcGFyZVBidWZmZXI7CiAg
ICAgdm9pZCogX2xhdGNoZWRQYnVmZmVyOwotI2VuZGlmCiAgICAgQk9PTCBfcHJlcGFyZWRGb3JE
aXNwbGF5OwogfQogCkBAIC0xMDYsMTcgKzkzLDEyIEBAIG5hbWVzcGFjZSB7CiAgICAgc2VsZiA9
IFtzdXBlciBpbml0XTsKICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBjb250ZXh0LT5jb250ZXh0QXR0
cmlidXRlcygpOwogICAgIF9kZXZpY2VQaXhlbFJhdGlvID0gYXR0cmlidXRlcy5kZXZpY2VQaXhl
bFJhdGlvOwotI2lmIFVTRShPUEVOR0wpIHx8IFVTRShBTkdMRSkKICAgICBzZWxmLmNvbnRlbnRz
T3BhcXVlID0gIWF0dHJpYnV0ZXMuYWxwaGE7CiAgICAgc2VsZi50cmFuc2Zvcm0gPSBDQVRyYW5z
Zm9ybTNESWRlbnRpdHk7CiAgICAgc2VsZi5jb250ZW50c1NjYWxlID0gX2RldmljZVBpeGVsUmF0
aW87Ci0jZWxzZQotICAgIHNlbGYub3BhcXVlID0gIWF0dHJpYnV0ZXMuYWxwaGE7Ci0jZW5kaWYK
ICAgICByZXR1cm4gc2VsZjsKIH0KIAotI2lmIFVTRShPUEVOR0wpIHx8IFVTRShBTkdMRSkKIC8v
IFdoZW4gdXNpbmcgYW4gSU9TdXJmYWNlIGFzIGxheWVyIGNvbnRlbnRzLCB3ZSBuZWVkIHRvIGZs
aXAgdGhlCiAvLyBsYXllciB0byB0YWtlIGludG8gYWNjb3VudCB0aGF0IHRoZSBJT1N1cmZhY2Ug
cHJvdmlkZXMgY29udGVudAogLy8gaW4gWS11cC4gVGhpcyBtZWFucyB0aGF0IGFueSBpbmNvbWlu
ZyB0cmFuc2Zvcm0gKHVubGlrZWx5LCBzaW5jZQpAQCAtMTMyLDUzICsxMTQsMTQgQEAgbmFtZXNw
YWNlIHsKIHsKICAgICBbc3VwZXIgc2V0QW5jaG9yUG9pbnQ6Q0dQb2ludE1ha2UocC54LCAxLjAg
LSBwLnkpXTsKIH0KLSNlbmRpZiAvLyBVU0UoT1BFTkdMKSB8fCBVU0UoQU5HTEUpCi0KLSNpZiBV
U0UoT1BFTkdMKQotc3RhdGljIHZvaWQgZnJlZURhdGEodm9pZCAqLCBjb25zdCB2b2lkICpkYXRh
LCBzaXplX3QgLyogc2l6ZSAqLykKLXsKLSAgICBmYXN0RnJlZShjb25zdF9jYXN0PHZvaWQgKj4o
ZGF0YSkpOwotfQotI2VuZGlmIC8vIFVTRShPUEVOR0wpCiAKIC0gKENHSW1hZ2VSZWYpY29weUlt
YWdlU25hcHNob3RXaXRoQ29sb3JTcGFjZTooQ0dDb2xvclNwYWNlUmVmKWNvbG9yU3BhY2UKIHsK
ICAgICBpZiAoIV9jb250ZXh0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotI2lmIFVTRShP
UEVOR0wpCi0gICAgQ0dMQ29udGV4dE9iaiBjZ2xDb250ZXh0ID0gc3RhdGljX2Nhc3Q8Q0dMQ29u
dGV4dE9iaj4oX2NvbnRleHQtPnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0woKSk7Ci0gICAgQ0dM
U2V0Q3VycmVudENvbnRleHQoY2dsQ29udGV4dCk7Ci0KLSAgICBSZXRhaW5QdHI8Q0dDb2xvclNw
YWNlUmVmPiBpbWFnZUNvbG9yU3BhY2UgPSBjb2xvclNwYWNlOwotICAgIGlmICghaW1hZ2VDb2xv
clNwYWNlKQotICAgICAgICBpbWFnZUNvbG9yU3BhY2UgPSBXZWJDb3JlOjpzUkdCQ29sb3JTcGFj
ZVJlZigpOwotCi0gICAgQ0dSZWN0IGxheWVyQm91bmRzID0gQ0dSZWN0SW50ZWdyYWwoW3NlbGYg
Ym91bmRzXSk7Ci0KLSAgICBzaXplX3Qgd2lkdGggPSBsYXllckJvdW5kcy5zaXplLndpZHRoICog
X2RldmljZVBpeGVsUmF0aW87Ci0gICAgc2l6ZV90IGhlaWdodCA9IGxheWVyQm91bmRzLnNpemUu
aGVpZ2h0ICogX2RldmljZVBpeGVsUmF0aW87Ci0KLSAgICBzaXplX3Qgcm93Qnl0ZXMgPSAod2lk
dGggKiA0ICsgMTUpICYgfjE1OwotICAgIHNpemVfdCBkYXRhU2l6ZSA9IHJvd0J5dGVzICogaGVp
Z2h0OwotICAgIHZvaWQqIGRhdGEgPSBmYXN0TWFsbG9jKGRhdGFTaXplKTsKLSAgICBpZiAoIWRh
dGEpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgZ2xQaXhlbFN0b3JlaShHTF9QQUNL
X1JPV19MRU5HVEgsIHJvd0J5dGVzIC8gNCk7Ci0gICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIHdpZHRo
LCBoZWlnaHQsIEdMX0JHUkEsIEdMX1VOU0lHTkVEX0lOVF84XzhfOF84X1JFViwgZGF0YSk7Ci0K
LSAgICBXZWJDb3JlOjp2ZXJpZnlJbWFnZUJ1ZmZlcklzQmlnRW5vdWdoKCh1aW50OF90KilkYXRh
LCBkYXRhU2l6ZSk7Ci0gICAgQ0dEYXRhUHJvdmlkZXJSZWYgcHJvdmlkZXIgPSBDR0RhdGFQcm92
aWRlckNyZWF0ZVdpdGhEYXRhKDAsIGRhdGEsIGRhdGFTaXplLCBmcmVlRGF0YSk7Ci0gICAgQ0dJ
bWFnZVJlZiBpbWFnZSA9IENHSW1hZ2VDcmVhdGUod2lkdGgsIGhlaWdodCwgOCwgMzIsIHJvd0J5
dGVzLCBpbWFnZUNvbG9yU3BhY2UuZ2V0KCksCi0gICAgICAgIGtDR0ltYWdlQWxwaGFQcmVtdWx0
aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QsIHByb3ZpZGVyLCAwLCB0cnVl
LCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KTsKLSAgICBDR0RhdGFQcm92aWRlclJlbGVhc2Uo
cHJvdmlkZXIpOwotICAgIHJldHVybiBpbWFnZTsKLSNlbHNlCi0gICAgLy8gRklYTUU6IGltcGxl
bWVudC4KKyAgICAvLyBGSVhNRTogaW1wbGVtZW50LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3Mzc3CiAgICAgVU5VU0VEX1BBUkFNKGNvbG9yU3BhY2UpOwogICAg
IHJldHVybiBudWxscHRyOwotI2VuZGlmCiB9CiAKIC0gKHZvaWQpcHJlcGFyZUZvckRpc3BsYXkK
QEAgLTE5MCwxMyArMTMzLDYgQEAgc3RhdGljIHZvaWQgZnJlZURhdGEodm9pZCAqLCBjb25zdCB2
b2lkICpkYXRhLCBzaXplX3QgLyogc2l6ZSAqLykKICAgICAvLyBhdCB0aGUgZW5kIG9mIHRoZSBy
ZW5kZXJpbmcgdGFzay4gV2Ugd2lsbCBmbHVzaCBhbGwgcGFpbnRpbmcgY29tbWFuZHMKICAgICAv
LyBsZWF2aW5nIHRoZSBidWZmZXJzIHJlYWR5IHRvIGNvbXBvc2l0ZS4KIAotI2lmIFVTRShPUEVO
R0wpCi0gICAgX2NvbnRleHQtPnByZXBhcmVUZXh0dXJlKCk7Ci0gICAgaWYgKF9kcmF3aW5nQnVm
ZmVyKSB7Ci0gICAgICAgIHN0ZDo6c3dhcChfY29udGVudHNCdWZmZXIsIF9kcmF3aW5nQnVmZmVy
KTsKLSAgICAgICAgW3NlbGYgYmluZEZyYW1lYnVmZmVyVG9OZXh0QXZhaWxhYmxlU3VyZmFjZV07
Ci0gICAgfQotI2VsaWYgVVNFKEFOR0xFKQogICAgIGlmICghX2NvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpKSB7CiAgICAgICAgIC8vIENvbnRleHQgaXMgbGlrZWx5IGJlaW5nIHRvcm4gZG93
bi4KICAgICAgICAgcmV0dXJuOwpAQCAtMjA1LDExICsxNDEsMTIgQEAgc3RhdGljIHZvaWQgZnJl
ZURhdGEodm9pZCAqLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3QgLyogc2l6ZSAqLykKICAgICBp
ZiAoX2RyYXdpbmdCdWZmZXIpIHsKICAgICAgICAgaWYgKF9sYXRjaGVkUGJ1ZmZlcikgewogICAg
ICAgICAgICAgV1RGOjpPcHRpb25hbDxTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmc+IHJlc3Rv
cmVCaW5kaW5nOworICAgICAgICAgICAgR0NHTGVudW0gdGV4dHVyZVRhcmdldCA9IFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0KCk7CiAgICAg
ICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHJlc3RvcmUgR0xfVEVYVFVSRV9SRUNUQU5HTEUg
YmVjYXVzZSBpdCdzIG5vdCBhY2Nlc3NpYmxlIGZyb20gdXNlciBjb2RlLgotICAgICAgICAgICAg
aWYgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0KCkg
IT0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfUkVDVEFOR0xFX0FSQikKLSAg
ICAgICAgICAgICAgICByZXN0b3JlQmluZGluZy5lbXBsYWNlKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMOjpJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0UXVlcnkoKSwgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0w6OklPU3VyZmFjZVRleHR1cmVUYXJnZXQoKSk7CisgICAgICAgICAgICBpZiAodGV4
dHVyZVRhcmdldCAhPSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9SRUNUQU5H
TEVfQVJCKQorICAgICAgICAgICAgICAgIHJlc3RvcmVCaW5kaW5nLmVtcGxhY2UoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OklPU3VyZmFjZVRleHR1cmVUYXJnZXRRdWVyeSgpLCB0
ZXh0dXJlVGFyZ2V0KTsKICAgICAgICAgICAgIEdDR0xlbnVtIHRleHR1cmUgPSBfY29udGV4dC0+
cGxhdGZvcm1UZXh0dXJlKCk7Ci0gICAgICAgICAgICBnbDo6QmluZFRleHR1cmUoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0w6OklPU3VyZmFjZVRleHR1cmVUYXJnZXQoKSwgdGV4dHVyZSk7Cisg
ICAgICAgICAgICBnbDo6QmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwgdGV4dHVyZSk7CiAgICAg
ICAgICAgICBpZiAoIUVHTF9SZWxlYXNlVGV4SW1hZ2UoX2VnbERpc3BsYXksIF9sYXRjaGVkUGJ1
ZmZlciwgRUdMX0JBQ0tfQlVGRkVSKSkgewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiByZXBv
cnQgZXJyb3IuCiAgICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAgLTIyMSw3ICsx
NTgsNiBAQCBzdGF0aWMgdm9pZCBmcmVlRGF0YSh2b2lkICosIGNvbnN0IHZvaWQgKmRhdGEsIHNp
emVfdCAvKiBzaXplICovKQogICAgICAgICBzdGQ6OnN3YXAoX2NvbnRlbnRzUGJ1ZmZlciwgX2Ry
YXdpbmdQYnVmZmVyKTsKICAgICAgICAgW3NlbGYgYmluZEZyYW1lYnVmZmVyVG9OZXh0QXZhaWxh
YmxlU3VyZmFjZV07CiAgICAgfQotI2VuZGlmCiAgICAgW3NlbGYgc2V0TmVlZHNEaXNwbGF5XTsK
ICAgICBfcHJlcGFyZWRGb3JEaXNwbGF5ID0gWUVTOwogfQpAQCAtMjM1LDE0ICsxNzEsMTAgQEAg
c3RhdGljIHZvaWQgZnJlZURhdGEodm9pZCAqLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3QgLyog
c2l6ZSAqLykKICAgICAvLyBzbyBhbGwgd2UgbmVlZCB0byBkbyBoZXJlIGlzIHRpY2tsZSB0aGUg
Q0FMYXllciB0byBsZXQgaXQga25vdyBpdCBoYXMgbmV3IGNvbnRlbnRzLgogICAgIC8vIFRoaXMg
YXZvaWRzIHJ1bm5pbmcgYW55IE9wZW5HTCBjb2RlIGluIHRoaXMgbWV0aG9kLgogCi0jaWYgVVNF
KE9QRU5HTCkgfHwgVVNFKEFOR0xFKQogICAgIGlmIChfY29udGVudHNCdWZmZXIgJiYgX3ByZXBh
cmVkRm9yRGlzcGxheSkgewogICAgICAgICBzZWxmLmNvbnRlbnRzID0gX2NvbnRlbnRzQnVmZmVy
LT5hc0xheWVyQ29udGVudHMoKTsKICAgICAgICAgW3NlbGYgcmVsb2FkVmFsdWVGb3JLZXlQYXRo
OkAiY29udGVudHMiXTsKICAgICB9Ci0jZWxpZiBVU0UoT1BFTkdMX0VTKQotICAgIF9jb250ZXh0
LT5wcmVzZW50UmVuZGVyYnVmZmVyKCk7Ci0jZW5kaWYKIAogICAgIF9jb250ZXh0LT5tYXJrTGF5
ZXJDb21wb3NpdGVkKCk7CiAgICAgYXV0byBsYXllciA9IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXll
cjo6cGxhdGZvcm1DQUxheWVyRm9yTGF5ZXIoKF9fYnJpZGdlIHZvaWQqKXNlbGYpOwpAQCAtMjUy
LDcgKzE4NCw2IEBAIHN0YXRpYyB2b2lkIGZyZWVEYXRhKHZvaWQgKiwgY29uc3Qgdm9pZCAqZGF0
YSwgc2l6ZV90IC8qIHNpemUgKi8pCiAgICAgX3ByZXBhcmVkRm9yRGlzcGxheSA9IE5POwogfQog
Ci0jaWYgVVNFKEFOR0xFKQogLSAodm9pZClzZXRFR0xEaXNwbGF5Oih2b2lkKilkaXNwbGF5IGNv
bmZpZzoodm9pZCopY29uZmlnCiB7CiAgICAgX2VnbERpc3BsYXkgPSBkaXNwbGF5OwpAQCAtMjcz
LDkgKzIwNCw3IEBAIHN0YXRpYyB2b2lkIGZyZWVEYXRhKHZvaWQgKiwgY29uc3Qgdm9pZCAqZGF0
YSwgc2l6ZV90IC8qIHNpemUgKi8pCiAgICAgRUdMX0Rlc3Ryb3lTdXJmYWNlKF9lZ2xEaXNwbGF5
LCBfZHJhd2luZ1BidWZmZXIpOwogICAgIEVHTF9EZXN0cm95U3VyZmFjZShfZWdsRGlzcGxheSwg
X3NwYXJlUGJ1ZmZlcik7CiB9Ci0jZW5kaWYKIAotI2lmIFVTRShPUEVOR0wpIHx8IFVTRShBTkdM
RSkKIC0gKGJvb2wpYWxsb2NhdGVJT1N1cmZhY2VCYWNraW5nU3RvcmVXaXRoU2l6ZTooV2ViQ29y
ZTo6SW50U2l6ZSlzaXplIHVzaW5nQWxwaGE6KEJPT0wpdXNpbmdBbHBoYQogewogICAgIF9idWZm
ZXJTaXplID0gc2l6ZTsKQEAgLTI5MCwxMyArMjE5LDExIEBAIHN0YXRpYyB2b2lkIGZyZWVEYXRh
KHZvaWQgKiwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IC8qIHNpemUgKi8pCiAgICAgX2NvbnRl
bnRzQnVmZmVyLT5taWdyYXRlQ29sb3JTcGFjZVRvUHJvcGVydGllcygpOwogICAgIF9kcmF3aW5n
QnVmZmVyLT5taWdyYXRlQ29sb3JTcGFjZVRvUHJvcGVydGllcygpOwogICAgIF9zcGFyZUJ1ZmZl
ci0+bWlncmF0ZUNvbG9yU3BhY2VUb1Byb3BlcnRpZXMoKTsKLQotI2lmIFVTRShBTkdMRSkKICAg
ICBjb25zdCBFR0xpbnQgc3VyZmFjZUF0dHJpYnV0ZXNbXSA9IHsKICAgICAgICAgRUdMX1dJRFRI
LCBzaXplLndpZHRoKCksCiAgICAgICAgIEVHTF9IRUlHSFQsIHNpemUuaGVpZ2h0KCksCiAgICAg
ICAgIEVHTF9JT1NVUkZBQ0VfUExBTkVfQU5HTEUsIDAsCi0gICAgICAgIEVHTF9URVhUVVJFX1RB
UkdFVCwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkVHTElPU3VyZmFjZVRleHR1cmVUYXJn
ZXQoKSwKKyAgICAgICAgRUdMX1RFWFRVUkVfVEFSR0VULCBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6RUdMSU9TdXJmYWNlVGV4dHVyZVRhcmdldCgpLAogICAgICAgICBFR0xfVEVY
VFVSRV9JTlRFUk5BTF9GT1JNQVRfQU5HTEUsIHVzaW5nQWxwaGEgPyBHTF9CR1JBX0VYVCA6IEdM
X1JHQiwKICAgICAgICAgRUdMX1RFWFRVUkVfRk9STUFULCBFR0xfVEVYVFVSRV9SR0JBLAogICAg
ICAgICBFR0xfVEVYVFVSRV9UWVBFX0FOR0xFLCBHTF9VTlNJR05FRF9CWVRFLApAQCAtMzExLDM2
ICsyMzgsMjAgQEAgc3RhdGljIHZvaWQgZnJlZURhdGEodm9pZCAqLCBjb25zdCB2b2lkICpkYXRh
LCBzaXplX3QgLyogc2l6ZSAqLykKIAogICAgIGlmICghX2NvbnRlbnRzUGJ1ZmZlciB8fCAhX2Ry
YXdpbmdQYnVmZmVyIHx8ICFfc3BhcmVQYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0j
ZW5kaWYKIAogICAgIHJldHVybiB0cnVlOwogfQogCiAtICh2b2lkKWJpbmRGcmFtZWJ1ZmZlclRv
TmV4dEF2YWlsYWJsZVN1cmZhY2UKIHsKLSNpZiBVU0UoT1BFTkdMKQotICAgIEdDR0xlbnVtIHRl
eHR1cmUgPSBfY29udGV4dC0+cGxhdGZvcm1UZXh0dXJlKCk7Ci0gICAgZ2xCaW5kVGV4dHVyZShH
TF9URVhUVVJFX1JFQ1RBTkdMRV9BUkIsIHRleHR1cmUpOwotCi0gICAgaWYgKF9kcmF3aW5nQnVm
ZmVyICYmIF9kcmF3aW5nQnVmZmVyLT5pc0luVXNlKCkpCi0gICAgICAgIHN0ZDo6c3dhcChfZHJh
d2luZ0J1ZmZlciwgX3NwYXJlQnVmZmVyKTsKLQotICAgIElPU3VyZmFjZVJlZiBpb1N1cmZhY2Ug
PSBfZHJhd2luZ0J1ZmZlci0+c3VyZmFjZSgpOwotICAgIEdDR0xlbnVtIGludGVybmFsRm9ybWF0
ID0gX3VzaW5nQWxwaGEgPyBHTF9SR0JBIDogR0xfUkdCOwotCi0gICAgLy8gTGluayB0aGUgSU9T
dXJmYWNlIHRvIHRoZSB0ZXh0dXJlLgotICAgIENHTENvbnRleHRPYmogY2dsQ29udGV4dCA9IHN0
YXRpY19jYXN0PENHTENvbnRleHRPYmo+KF9jb250ZXh0LT5wbGF0Zm9ybUdyYXBoaWNzQ29udGV4
dEdMKCkpOwotICAgIENHTEVycm9yIGVycm9yID0gQ0dMVGV4SW1hZ2VJT1N1cmZhY2UyRChjZ2xD
b250ZXh0LCBHTF9URVhUVVJFX1JFQ1RBTkdMRV9BUkIsIGludGVybmFsRm9ybWF0LCBfYnVmZmVy
U2l6ZS53aWR0aCgpLCBfYnVmZmVyU2l6ZS5oZWlnaHQoKSwgR0xfQkdSQSwgR0xfVU5TSUdORURf
SU5UXzhfOF84XzhfUkVWLCBpb1N1cmZhY2UsIDApOwotICAgIEFTU0VSVF9VTlVTRUQoZXJyb3Is
IGVycm9yID09IGtDR0xOb0Vycm9yKTsKLSNlbGlmIFVTRShBTkdMRSkKICAgICBXVEY6Ok9wdGlv
bmFsPFNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZz4gcmVzdG9yZUJpbmRpbmc7CisgICAgR0NH
TGVudW0gdGV4dHVyZVRhcmdldCA9IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpJ
T1N1cmZhY2VUZXh0dXJlVGFyZ2V0KCk7CiAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byByZXN0b3Jl
IEdMX1RFWFRVUkVfUkVDVEFOR0xFIGJlY2F1c2UgaXQncyBub3QgYWNjZXNzaWJsZSBmcm9tIHVz
ZXIgY29kZS4KLSAgICBpZiAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OklPU3VyZmFjZVRl
eHR1cmVUYXJnZXQoKSAhPSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV9SRUNU
QU5HTEVfQVJCKQotICAgICAgICByZXN0b3JlQmluZGluZy5lbXBsYWNlKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMOjpJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0UXVlcnkoKSwgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0w6OklPU3VyZmFjZVRleHR1cmVUYXJnZXQoKSk7CisgICAgaWYgKHRleHR1
cmVUYXJnZXQgIT0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfUkVDVEFOR0xF
X0FSQikKKyAgICAgICAgcmVzdG9yZUJpbmRpbmcuZW1wbGFjZShXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6SU9TdXJmYWNlVGV4dHVyZVRhcmdldFF1ZXJ5KCksIHRleHR1cmVUYXJn
ZXQpOwogCiAgICAgR0NHTGVudW0gdGV4dHVyZSA9IF9jb250ZXh0LT5wbGF0Zm9ybVRleHR1cmUo
KTsKLQotICAgIGdsOjpCaW5kVGV4dHVyZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6SU9T
dXJmYWNlVGV4dHVyZVRhcmdldCgpLCB0ZXh0dXJlKTsKKyAgICBnbDo6QmluZFRleHR1cmUodGV4
dHVyZVRhcmdldCwgdGV4dHVyZSk7CiAKICAgICBpZiAoX2xhdGNoZWRQYnVmZmVyKSB7CiAgICAg
ICAgIGlmICghRUdMX1JlbGVhc2VUZXhJbWFnZShfZWdsRGlzcGxheSwgX2xhdGNoZWRQYnVmZmVy
LCBFR0xfQkFDS19CVUZGRVIpKSB7CkBAIC0zNjEsOSArMjcyLDcgQEAgc3RhdGljIHZvaWQgZnJl
ZURhdGEodm9pZCAqLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3QgLyogc2l6ZSAqLykKICAgICAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICB9CiAgICAgX2xhdGNoZWRQYnVmZmVyID0gX2RyYXdp
bmdQYnVmZmVyOwotI2VuZGlmCiB9Ci0jZW5kaWYgLy8gVVNFKE9QRU5HTCkgfHwgVVNFKEFOR0xF
KQogCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2N2L1RleHR1cmVDYWNoZUNWLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
di9UZXh0dXJlQ2FjaGVDVi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzcwNTAy
M2E1MzUyNGMwMGZhNTA2OWYzODQ3MzNiMGIxNmI4NTFmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2N2L1RleHR1cmVDYWNoZUNWLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJHcmFwaGljc1R5cGVzR0wuaCIKLSNp
bmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2luY2x1ZGUg
PHd0Zi9XZWFrUHRyLmg+Ci0KLXR5cGVkZWYgc3RydWN0IF9fQ1ZCdWZmZXIqIENWSW1hZ2VCdWZm
ZXJSZWY7Ci10eXBlZGVmIENWSW1hZ2VCdWZmZXJSZWYgQ1ZQaXhlbEJ1ZmZlclJlZjsKLXR5cGVk
ZWYgQ1ZJbWFnZUJ1ZmZlclJlZiBDVk9wZW5HTFRleHR1cmVSZWY7Ci10eXBlZGVmIENWSW1hZ2VC
dWZmZXJSZWYgQ1ZPcGVuR0xFU1RleHR1cmVSZWY7Ci10eXBlZGVmIHN0cnVjdCBfX0NWT3BlbkdM
VGV4dHVyZUNhY2hlICpDVk9wZW5HTFRleHR1cmVDYWNoZVJlZjsKLXR5cGVkZWYgc3RydWN0IF9f
Q1ZPcGVuR0xFU1RleHR1cmVDYWNoZSAqQ1ZPcGVuR0xFU1RleHR1cmVDYWNoZVJlZjsKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDsKLQotY2xh
c3MgVGV4dHVyZUNhY2hlQ1YgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VGV4dHVyZUNhY2hlQ1Y+
IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPFRleHR1cmVDYWNoZUNWPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wmKTsKLQotI2lmIFVTRShPUEVOR0xfRVMpCi0gICAgdXNpbmcgVGV4dHVyZUNhY2hlVHlwZSA9
IENWT3BlbkdMRVNUZXh0dXJlQ2FjaGVSZWY7Ci0gICAgdXNpbmcgVGV4dHVyZVR5cGUgPSBDVk9w
ZW5HTEVTVGV4dHVyZVJlZjsKLSNlbHNlCi0gICAgdXNpbmcgVGV4dHVyZUNhY2hlVHlwZSA9IENW
T3BlbkdMVGV4dHVyZUNhY2hlUmVmOwotICAgIHVzaW5nIFRleHR1cmVUeXBlID0gQ1ZPcGVuR0xU
ZXh0dXJlUmVmOwotI2VuZGlmCi0KLSAgICBUZXh0dXJlQ2FjaGVDVihHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCYsIFJldGFpblB0cjxUZXh0dXJlQ2FjaGVUeXBlPiYmKTsKLQotICAgIFJldGFpblB0
cjxUZXh0dXJlVHlwZT4gdGV4dHVyZUZyb21JbWFnZShDVlBpeGVsQnVmZmVyUmVmLCBHQ0dMZW51
bSBvdXRwdXRUYXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUpOwotICAgIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMJiBjb250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0g
ICAgUmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBtX2NvbnRleHQ7Ci0gICAgUmV0YWluUHRy
PFRleHR1cmVDYWNoZVR5cGU+IG1fY2FjaGU7Ci19OwotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLm1tCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBlMzU2ZDkxMTRkN2QzYzYyNDM2ZmVlM2NkZmFkMWM0NjhiNTY1
NDA0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLm1tCisrKyAvZGV2
L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgi
Ci0jaW1wb3J0ICJUZXh0dXJlQ2FjaGVDVi5oIgotCi0jaW1wb3J0ICJHcmFwaGljc0NvbnRleHRH
TE9wZW5HTC5oIgotCi0jaW1wb3J0ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLXN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlQ2FjaGVDVj4gVGV4dHVyZUNhY2hl
Q1Y6OmNyZWF0ZShHcmFwaGljc0NvbnRleHRHTE9wZW5HTCYgY29udGV4dCkKLXsKLSAgICBUZXh0
dXJlQ2FjaGVUeXBlIGNhY2hlID0gbnVsbHB0cjsKLSNpZiBVU0UoT1BFTkdMX0VTKQotICAgIENW
RUFHTENvbnRleHQgZWFnbENvbnRleHQgPSBzdGF0aWNfY2FzdDxDVkVBR0xDb250ZXh0Pihjb250
ZXh0LnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0woKSk7Ci0gICAgQ1ZSZXR1cm4gZXJyb3IgPSBD
Vk9wZW5HTEVTVGV4dHVyZUNhY2hlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIG51bGxwdHIs
IGVhZ2xDb250ZXh0LCBudWxscHRyLCAmY2FjaGUpOwotI2VsaWYgVVNFKE9QRU5HTCkKLSAgICBD
R0xDb250ZXh0T2JqIGNnbENvbnRleHQgPSBzdGF0aWNfY2FzdDxDR0xDb250ZXh0T2JqPihjb250
ZXh0LnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0woKSk7Ci0gICAgQ1ZSZXR1cm4gZXJyb3IgPSBD
Vk9wZW5HTFRleHR1cmVDYWNoZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBudWxscHRyLCBj
Z2xDb250ZXh0LCBDR0xHZXRQaXhlbEZvcm1hdChjZ2xDb250ZXh0KSwgbnVsbHB0ciwgJmNhY2hl
KTsKLSNlbGlmIFVTRShBTkdMRSkKLSAgICAvLyBGSVhNRTogZmlndXJlIG91dCBob3cgdG8gZG8g
dGhpcyBpbnRlZ3JhdGluZyB2aWEgQU5HTEUuCi0gICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwot
ICAgIENWUmV0dXJuIGVycm9yID0ga0NWUmV0dXJuU3VjY2VzcyArIDE7Ci0jZW5kaWYKLSAgICBp
ZiAoZXJyb3IgIT0ga0NWUmV0dXJuU3VjY2VzcykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICBSZXRhaW5QdHI8VGV4dHVyZUNhY2hlVHlwZT4gc3Ryb25nQ2FjaGUgPSBhZG9wdENGKGNh
Y2hlKTsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0dXJlQ2FjaGVDVj4oY29udGV4dCwgV1RG
TW92ZShzdHJvbmdDYWNoZSkpOwotfQotCi1UZXh0dXJlQ2FjaGVDVjo6VGV4dHVyZUNhY2hlQ1Yo
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmIGNvbnRleHQsIFJldGFpblB0cjxUZXh0dXJlQ2FjaGVU
eXBlPiYmIGNhY2hlKQotICAgIDogbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX2NhY2hlKGNh
Y2hlKQotewotfQotCi1SZXRhaW5QdHI8VGV4dHVyZUNhY2hlQ1Y6OlRleHR1cmVUeXBlPiBUZXh0
dXJlQ2FjaGVDVjo6dGV4dHVyZUZyb21JbWFnZShDVlBpeGVsQnVmZmVyUmVmIGltYWdlLCBHQ0dM
ZW51bSBvdXRwdXRUYXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUpCi17Ci0jaWYgVVNFKEFOR0xFKQotICAg
IC8vIEZJWE1FOiBmaWd1cmUgb3V0IGhvdyB0byBkbyB0aGlzIGludGVncmF0aW5nIHZpYSBBTkdM
RS4KLSAgICBVTlVTRURfUEFSQU0oaW1hZ2UpOwotICAgIFVOVVNFRF9QQVJBTShvdXRwdXRUYXJn
ZXQpOwotICAgIFVOVVNFRF9QQVJBTShsZXZlbCk7Ci0gICAgVU5VU0VEX1BBUkFNKGludGVybmFs
Rm9ybWF0KTsKLSAgICBVTlVTRURfUEFSQU0oZm9ybWF0KTsKLSAgICBVTlVTRURfUEFSQU0odHlw
ZSk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci0jZWxzZQotICAgIFRleHR1cmVUeXBlIGJhcmVWaWRl
b1RleHR1cmUgPSBudWxscHRyOwotI2lmIFVTRShPUEVOR0xfRVMpCi0gICAgc2l6ZV90IHdpZHRo
ID0gQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoKGltYWdlKTsKLSAgICBzaXplX3QgaGVpZ2h0ID0gQ1ZQ
aXhlbEJ1ZmZlckdldEhlaWdodChpbWFnZSk7Ci0gICAgaWYgKGtDVlJldHVyblN1Y2Nlc3MgIT0g
Q1ZPcGVuR0xFU1RleHR1cmVDYWNoZUNyZWF0ZVRleHR1cmVGcm9tSW1hZ2Uoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgbV9jYWNoZS5nZXQoKSwgaW1hZ2UsIG51bGxwdHIsIG91dHB1dFRhcmdldCwgaW50
ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgbGV2ZWwsICZiYXJlVmlk
ZW9UZXh0dXJlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0jZWxpZiBVU0UoT1BFTkdMKQot
ICAgIFVOVVNFRF9QQVJBTShvdXRwdXRUYXJnZXQpOwotICAgIFVOVVNFRF9QQVJBTShsZXZlbCk7
Ci0gICAgVU5VU0VEX1BBUkFNKGludGVybmFsRm9ybWF0KTsKLSAgICBVTlVTRURfUEFSQU0oZm9y
bWF0KTsKLSAgICBVTlVTRURfUEFSQU0odHlwZSk7Ci0gICAgaWYgKGtDVlJldHVyblN1Y2Nlc3Mg
IT0gQ1ZPcGVuR0xUZXh0dXJlQ2FjaGVDcmVhdGVUZXh0dXJlRnJvbUltYWdlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIG1fY2FjaGUuZ2V0KCksIGltYWdlLCBudWxscHRyLCAmYmFyZVZpZGVvVGV4dHVy
ZSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotI2VuZGlmCi0gICAgUmV0YWluUHRyPFRleHR1
cmVUeXBlPiB2aWRlb1RleHR1cmUgPSBhZG9wdENGKGJhcmVWaWRlb1RleHR1cmUpOwotCi0gICAg
YXV0byB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKTsKLSAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbd2Vha1RoaXNdIHsKLSAgICAgICAgaWYgKCF3ZWFr
VGhpcykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoYXV0byBjYWNoZSA9IHdl
YWtUaGlzLT5tX2NhY2hlLmdldCgpKQotI2lmIFVTRShPUEVOR0xfRVMpCi0gICAgICAgICAgICBD
Vk9wZW5HTEVTVGV4dHVyZUNhY2hlRmx1c2goY2FjaGUsIDApOwotI2VsaWYgVVNFKE9QRU5HTCkK
LSAgICAgICAgICAgIENWT3BlbkdMVGV4dHVyZUNhY2hlRmx1c2goY2FjaGUsIDApOwotI2VuZGlm
Ci0gICAgfSk7Ci0KLSAgICByZXR1cm4gdmlkZW9UZXh0dXJlOwotI2VuZGlmCi19Ci0KLX0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVy
ZUNvcGllckNWLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVv
VGV4dHVyZUNvcGllckNWLmNwcAppbmRleCBhYWZkODIzN2RhZmY5ZWU5NTYyZjIwNzJlNDE3YWVi
OGJiOGVhMGYzLi42ZjYyNTJhZWUyMmYxZWQxZWVlNjlkMDVmY2RiNzJkZmY4YzQzMjRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVD
b3BpZXJDVi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlk
ZW9UZXh0dXJlQ29waWVyQ1YuY3BwCkBAIC0yOCwxNyArMjgsMTIgQEAKIAogI2luY2x1ZGUgIkZv
dXJDQy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJUZXh0dXJlQ2FjaGVDVi5o
IgogI2luY2x1ZGUgPHBhbC9zcGkvY29jb2EvSU9TdXJmYWNlU1BJLmg+CiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAotI2lmIFVTRShPUEVOR0xfRVMpCi0jaW5jbHVkZSA8
T3BlbkdMRVMvRVMzL2dsZXh0Lmg+Ci0jZW5kaWYKIAotI2lmIFVTRShBTkdMRSkKICNkZWZpbmUg
RUdMX0VHTF9QUk9UT1RZUEVTIDAKICNpbmNsdWRlIDxBTkdMRS9lZ2wuaD4KICNpbmNsdWRlIDxB
TkdMRS9lZ2xleHQuaD4KQEAgLTQ5LDEyICs0NCwxMzQgQEAKICNkZWZpbmUgR0xfQU5HTEVfZXhw
bGljaXRfY29udGV4dAogI2luY2x1ZGUgPEFOR0xFL2dsMmV4dC5oPgogI2luY2x1ZGUgPEFOR0xF
L2dsMmV4dF9hbmdsZS5oPgotI2VuZGlmCiAKICNpbmNsdWRlICJDb3JlVmlkZW9Tb2Z0TGluay5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzX3JnYlZl
cnRleFNoYWRlciB7CisgICAgImF0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247IgorICAgICJ1bmlm
b3JtIGludCB1X2ZsaXBZOyIKKyAgICAidmFyeWluZyB2ZWMyIHZfdGV4dHVyZVBvc2l0aW9uOyIK
KyAgICAidm9pZCBtYWluKCkiCisgICAgInsiCisgICAgIiAgICB2X3RleHR1cmVQb3NpdGlvbiA9
IHZlYzIoKGFfcG9zaXRpb24ueCArIDEuMCkgLyAyLjAsIChhX3Bvc2l0aW9uLnkgKyAxLjApIC8g
Mi4wKTsiCisgICAgIiAgICBpZiAodV9mbGlwWSA9PSAxKSIKKyAgICAiICAgICAgICB2X3RleHR1
cmVQb3NpdGlvbi55ID0gMS4wIC0gdl90ZXh0dXJlUG9zaXRpb24ueTsiCisgICAgIiAgICBnbF9Q
b3NpdGlvbiA9IGFfcG9zaXRpb247IgorICAgICJ9Il9zCit9OworCitzdGF0aWMgY29uc3RleHBy
IGF1dG8gc19yZ2JGcmFnbWVudFNoYWRlclRleHR1cmUyRCB7CisgICAgInByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OyIKKyAgICAidW5pZm9ybSBzYW1wbGVyMkQgdV90ZXh0dXJlOyIKKyAgICAidmFy
eWluZyB2ZWMyIHZfdGV4dHVyZVBvc2l0aW9uOyIKKyAgICAidW5pZm9ybSBpbnQgdV9wcmVtdWx0
aXBseTsiCisgICAgInVuaWZvcm0gdmVjMiB1X3RleHR1cmVEaW1lbnNpb25zOyIKKyAgICAidW5p
Zm9ybSBpbnQgdV9zd2FwQ29sb3JDaGFubmVsczsiCisgICAgInZvaWQgbWFpbigpIgorICAgICJ7
IgorICAgICIgICAgdmVjMiB0ZXhQb3MgPSB2ZWMyKHZfdGV4dHVyZVBvc2l0aW9uLnggKiB1X3Rl
eHR1cmVEaW1lbnNpb25zLngsIHZfdGV4dHVyZVBvc2l0aW9uLnkgKiB1X3RleHR1cmVEaW1lbnNp
b25zLnkpOyIKKyAgICAiICAgIHZlYzQgY29sb3IgPSB0ZXh0dXJlMkQodV90ZXh0dXJlLCB0ZXhQ
b3MpOyIKKyAgICAiICAgIGlmICh1X3N3YXBDb2xvckNoYW5uZWxzID09IDEpIgorICAgICIgICAg
ICAgIGNvbG9yLnJnYmEgPSBjb2xvci5iZ3JhOyIKKyAgICAiICAgIGlmICh1X3ByZW11bHRpcGx5
ID09IDEpIgorICAgICIgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoY29sb3IuciAqIGNvbG9y
LmEsIGNvbG9yLmcgKiBjb2xvci5hLCBjb2xvci5iICogY29sb3IuYSwgY29sb3IuYSk7IgorICAg
ICIgICAgZWxzZSIKKyAgICAiICAgICAgICBnbF9GcmFnQ29sb3IgPSBjb2xvcjsiCisgICAgIn0i
X3MKK307CisKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzX3JnYkZyYWdtZW50U2hhZGVyVGV4dHVy
ZVJlY3RhbmdsZSB7CisgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OyIKKyAgICAidW5pZm9y
bSBzYW1wbGVyMkRSZWN0IHVfdGV4dHVyZTsiCisgICAgInZhcnlpbmcgdmVjMiB2X3RleHR1cmVQ
b3NpdGlvbjsiCisgICAgInVuaWZvcm0gaW50IHVfcHJlbXVsdGlwbHk7IgorICAgICJ1bmlmb3Jt
IHZlYzIgdV90ZXh0dXJlRGltZW5zaW9uczsiCisgICAgInVuaWZvcm0gaW50IHVfc3dhcENvbG9y
Q2hhbm5lbHM7IgorICAgICJ2b2lkIG1haW4oKSIKKyAgICAieyIKKyAgICAiICAgIHZlYzIgdGV4
UG9zID0gdmVjMih2X3RleHR1cmVQb3NpdGlvbi54ICogdV90ZXh0dXJlRGltZW5zaW9ucy54LCB2
X3RleHR1cmVQb3NpdGlvbi55ICogdV90ZXh0dXJlRGltZW5zaW9ucy55KTsiCisgICAgIiAgICB2
ZWM0IGNvbG9yID0gdGV4dHVyZTJEUmVjdCh1X3RleHR1cmUsIHRleFBvcyk7IgorICAgICIgICAg
aWYgKHVfc3dhcENvbG9yQ2hhbm5lbHMgPT0gMSkiCisgICAgIiAgICAgICAgY29sb3IucmdiYSA9
IGNvbG9yLmJncmE7IgorICAgICIgICAgaWYgKHVfcHJlbXVsdGlwbHkgPT0gMSkiCisgICAgIiAg
ICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChjb2xvci5yICogY29sb3IuYSwgY29sb3IuZyAqIGNv
bG9yLmEsIGNvbG9yLmIgKiBjb2xvci5hLCBjb2xvci5hKTsiCisgICAgIiAgICBlbHNlIgorICAg
ICIgICAgICAgIGdsX0ZyYWdDb2xvciA9IGNvbG9yOyIKKyAgICAifSJfcworfTsKKworc3RhdGlj
IGNvbnN0ZXhwciBhdXRvIHNfeXV2VmVydGV4U2hhZGVyVGV4dHVyZTJEIHsKKyAgICAiYXR0cmli
dXRlIHZlYzIgYV9wb3NpdGlvbjsiCisgICAgInVuaWZvcm0gdmVjMiB1X3lUZXh0dXJlU2l6ZTsi
CisgICAgInVuaWZvcm0gdmVjMiB1X3V2VGV4dHVyZVNpemU7IgorICAgICJ1bmlmb3JtIGludCB1
X2ZsaXBZOyIKKyAgICAidmFyeWluZyB2ZWMyIHZfeVRleHR1cmVDb29yZGluYXRlOyIKKyAgICAi
dmFyeWluZyB2ZWMyIHZfdXZUZXh0dXJlQ29vcmRpbmF0ZTsiCisgICAgInZvaWQgbWFpbigpIgor
ICAgICJ7IgorICAgICIgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KGFfcG9zaXRpb24sIDAsIDEuMCk7
IgorICAgICIgICAgdmVjMiBub3JtYWxpemVkUG9zaXRpb24gPSBhX3Bvc2l0aW9uICogLjUgKyAu
NTsiCisgICAgIiAgICBpZiAodV9mbGlwWSA9PSAxKSIKKyAgICAiICAgICAgICBub3JtYWxpemVk
UG9zaXRpb24ueSA9IDEuMCAtIG5vcm1hbGl6ZWRQb3NpdGlvbi55OyIKKyAgICAiICAgIHZfeVRl
eHR1cmVDb29yZGluYXRlID0gbm9ybWFsaXplZFBvc2l0aW9uOyIKKyAgICAiICAgIHZfdXZUZXh0
dXJlQ29vcmRpbmF0ZSA9IG5vcm1hbGl6ZWRQb3NpdGlvbjsiCisgICAgIn0iX3MKK307CisKK3N0
YXRpYyBjb25zdGV4cHIgYXV0byBzX3l1dlZlcnRleFNoYWRlclRleHR1cmVSZWN0YW5nbGUgewor
ICAgICJhdHRyaWJ1dGUgdmVjMiBhX3Bvc2l0aW9uOyIKKyAgICAidW5pZm9ybSB2ZWMyIHVfeVRl
eHR1cmVTaXplOyIKKyAgICAidW5pZm9ybSB2ZWMyIHVfdXZUZXh0dXJlU2l6ZTsiCisgICAgInVu
aWZvcm0gaW50IHVfZmxpcFk7IgorICAgICJ2YXJ5aW5nIHZlYzIgdl95VGV4dHVyZUNvb3JkaW5h
dGU7IgorICAgICJ2YXJ5aW5nIHZlYzIgdl91dlRleHR1cmVDb29yZGluYXRlOyIKKyAgICAidm9p
ZCBtYWluKCkiCisgICAgInsiCisgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoYV9wb3NpdGlv
biwgMCwgMS4wKTsiCisgICAgIiAgICB2ZWMyIG5vcm1hbGl6ZWRQb3NpdGlvbiA9IGFfcG9zaXRp
b24gKiAuNSArIC41OyIKKyAgICAiICAgIGlmICh1X2ZsaXBZID09IDEpIgorICAgICIgICAgICAg
IG5vcm1hbGl6ZWRQb3NpdGlvbi55ID0gMS4wIC0gbm9ybWFsaXplZFBvc2l0aW9uLnk7IgorICAg
ICIgICAgdl95VGV4dHVyZUNvb3JkaW5hdGUgPSBub3JtYWxpemVkUG9zaXRpb24gKiB1X3lUZXh0
dXJlU2l6ZTsiCisgICAgIiAgICB2X3V2VGV4dHVyZUNvb3JkaW5hdGUgPSBub3JtYWxpemVkUG9z
aXRpb24gKiB1X3V2VGV4dHVyZVNpemU7IgorICAgICJ9Il9zCit9OworCitjb25zdGV4cHIgYXV0
byBzX3l1dkZyYWdtZW50U2hhZGVyVGV4dHVyZTJEIHsKKyAgICAicHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7IgorICAgICJ1bmlmb3JtIHNhbXBsZXIyRCB1X3lUZXh0dXJlOyIKKyAgICAidW5pZm9y
bSBzYW1wbGVyMkQgdV91dlRleHR1cmU7IgorICAgICJ1bmlmb3JtIG1hdDQgdV9jb2xvck1hdHJp
eDsiCisgICAgInZhcnlpbmcgdmVjMiB2X3lUZXh0dXJlQ29vcmRpbmF0ZTsiCisgICAgInZhcnlp
bmcgdmVjMiB2X3V2VGV4dHVyZUNvb3JkaW5hdGU7IgorICAgICJ2b2lkIG1haW4oKSIKKyAgICAi
eyIKKyAgICAiICAgIHZlYzQgeXV2OyIKKyAgICAiICAgIHl1di5yID0gdGV4dHVyZTJEKHVfeVRl
eHR1cmUsIHZfeVRleHR1cmVDb29yZGluYXRlKS5yOyIKKyAgICAiICAgIHl1di5nYiA9IHRleHR1
cmUyRCh1X3V2VGV4dHVyZSwgdl91dlRleHR1cmVDb29yZGluYXRlKS5yZzsiCisgICAgIiAgICB5
dXYuYSA9IDEuMDsiCisgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB5dXYgKiB1X2NvbG9yTWF0cml4
OyIKKyAgICAifSJfcworfTsKKworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNfeXV2RnJhZ21lbnRT
aGFkZXJUZXh0dXJlUmVjdGFuZ2xlIHsKKyAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Igor
ICAgICJ1bmlmb3JtIHNhbXBsZXIyRFJlY3QgdV95VGV4dHVyZTsiCisgICAgInVuaWZvcm0gc2Ft
cGxlcjJEUmVjdCB1X3V2VGV4dHVyZTsiCisgICAgInVuaWZvcm0gbWF0NCB1X2NvbG9yTWF0cml4
OyIKKyAgICAidmFyeWluZyB2ZWMyIHZfeVRleHR1cmVDb29yZGluYXRlOyIKKyAgICAidmFyeWlu
ZyB2ZWMyIHZfdXZUZXh0dXJlQ29vcmRpbmF0ZTsiCisgICAgInZvaWQgbWFpbigpIgorICAgICJ7
IgorICAgICIgICAgdmVjNCB5dXY7IgorICAgICIgICAgeXV2LnIgPSB0ZXh0dXJlMkRSZWN0KHVf
eVRleHR1cmUsIHZfeVRleHR1cmVDb29yZGluYXRlKS5yOyIKKyAgICAiICAgIHl1di5nYiA9IHRl
eHR1cmUyRFJlY3QodV91dlRleHR1cmUsIHZfdXZUZXh0dXJlQ29vcmRpbmF0ZSkucmc7IgorICAg
ICIgICAgeXV2LmEgPSAxLjA7IgorICAgICIgICAgZ2xfRnJhZ0NvbG9yID0geXV2ICogdV9jb2xv
ck1hdHJpeDsiCisgICAgIn0iX3MKK307CisKIGVudW0gY2xhc3MgUGl4ZWxSYW5nZSB7CiAgICAg
VW5rbm93biwKICAgICBWaWRlbywKQEAgLTQ5OCwyMCArNjE1LDggQEAgc3RhdGljIFN0cmluZ01h
cCYgZW51bVRvU3RyaW5nTWFwKCkKIAogYm9vbCBWaWRlb1RleHR1cmVDb3BpZXJDVjo6aW5pdGlh
bGl6ZUNvbnRleHRPYmplY3RzKCkKIHsKLSAgICBTdHJpbmdCdWlsZGVyIHZlcnRleFNoYWRlclNv
dXJjZTsKLSAgICB2ZXJ0ZXhTaGFkZXJTb3VyY2UuYXBwZW5kTGl0ZXJhbCgiYXR0cmlidXRlIHZl
YzQgYV9wb3NpdGlvbjtcbiIpOwotICAgIHZlcnRleFNoYWRlclNvdXJjZS5hcHBlbmRMaXRlcmFs
KCJ1bmlmb3JtIGludCB1X2ZsaXBZO1xuIik7Ci0gICAgdmVydGV4U2hhZGVyU291cmNlLmFwcGVu
ZExpdGVyYWwoInZhcnlpbmcgdmVjMiB2X3RleHR1cmVQb3NpdGlvbjtcbiIpOwotICAgIHZlcnRl
eFNoYWRlclNvdXJjZS5hcHBlbmRMaXRlcmFsKCJ2b2lkIG1haW4oKSB7XG4iKTsKLSAgICB2ZXJ0
ZXhTaGFkZXJTb3VyY2UuYXBwZW5kTGl0ZXJhbCgiICAgIHZfdGV4dHVyZVBvc2l0aW9uID0gdmVj
MigoYV9wb3NpdGlvbi54ICsgMS4wKSAvIDIuMCwgKGFfcG9zaXRpb24ueSArIDEuMCkgLyAyLjAp
O1xuIik7Ci0gICAgdmVydGV4U2hhZGVyU291cmNlLmFwcGVuZExpdGVyYWwoIiAgICBpZiAodV9m
bGlwWSA9PSAxKSB7XG4iKTsKLSAgICB2ZXJ0ZXhTaGFkZXJTb3VyY2UuYXBwZW5kTGl0ZXJhbCgi
ICAgICAgICB2X3RleHR1cmVQb3NpdGlvbi55ID0gMS4wIC0gdl90ZXh0dXJlUG9zaXRpb24ueTtc
biIpOwotICAgIHZlcnRleFNoYWRlclNvdXJjZS5hcHBlbmRMaXRlcmFsKCIgICAgfVxuIik7Ci0g
ICAgdmVydGV4U2hhZGVyU291cmNlLmFwcGVuZExpdGVyYWwoIiAgICBnbF9Qb3NpdGlvbiA9IGFf
cG9zaXRpb247XG4iKTsKLSAgICB2ZXJ0ZXhTaGFkZXJTb3VyY2UuYXBwZW5kTGl0ZXJhbCgifVxu
Iik7Ci0KICAgICBQbGF0Zm9ybUdMT2JqZWN0IHZlcnRleFNoYWRlciA9IG1fY29udGV4dC0+Y3Jl
YXRlU2hhZGVyKEdyYXBoaWNzQ29udGV4dEdMOjpWRVJURVhfU0hBREVSKTsKLSAgICBtX2NvbnRl
eHQtPnNoYWRlclNvdXJjZSh2ZXJ0ZXhTaGFkZXIsIHZlcnRleFNoYWRlclNvdXJjZS50b1N0cmlu
ZygpKTsKKyAgICBtX2NvbnRleHQtPnNoYWRlclNvdXJjZSh2ZXJ0ZXhTaGFkZXIsIHNfcmdiVmVy
dGV4U2hhZGVyKTsKICAgICBtX2NvbnRleHQtPmNvbXBpbGVTaGFkZXJEaXJlY3QodmVydGV4U2hh
ZGVyKTsKIAogICAgIEdDR0xpbnQgdmFsdWUgPSAwOwpAQCAtNTIyLDQzICs2MjcsMTIgQEAgYm9v
bCBWaWRlb1RleHR1cmVDb3BpZXJDVjo6aW5pdGlhbGl6ZUNvbnRleHRPYmplY3RzKCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFN0cmluZ0J1aWxkZXIgZnJhZ21lbnRTaGFk
ZXJTb3VyY2U7Ci0KLSNpZiBVU0UoT1BFTkdMX0VTKSB8fCBVU0UoQU5HTEUpCi0gICAgZnJhZ21l
bnRTaGFkZXJTb3VyY2UuYXBwZW5kTGl0ZXJhbCgicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4i
KTsKLSNlbmRpZgotI2lmIFVTRShPUEVOR0xfRVMpIHx8IChVU0UoQU5HTEUpICYmIFBMQVRGT1JN
KElPU19GQU1JTFkpKQotICAgIGZyYWdtZW50U2hhZGVyU291cmNlLmFwcGVuZExpdGVyYWwoInVu
aWZvcm0gc2FtcGxlcjJEIHVfdGV4dHVyZTtcbiIpOwotI2VsaWYgVVNFKE9QRU5HTCkgfHwgKFVT
RShBTkdMRSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpKQotICAgIGZyYWdtZW50U2hhZGVyU291
cmNlLmFwcGVuZExpdGVyYWwoInVuaWZvcm0gc2FtcGxlcjJEUmVjdCB1X3RleHR1cmU7XG4iKTsK
LSNlbHNlCi0jZXJyb3IgVW5zdXBwb3J0ZWQgY29uZmlndXJhdGlvbgotI2VuZGlmCi0gICAgZnJh
Z21lbnRTaGFkZXJTb3VyY2UuYXBwZW5kTGl0ZXJhbCgidmFyeWluZyB2ZWMyIHZfdGV4dHVyZVBv
c2l0aW9uO1xuIik7Ci0gICAgZnJhZ21lbnRTaGFkZXJTb3VyY2UuYXBwZW5kTGl0ZXJhbCgidW5p
Zm9ybSBpbnQgdV9wcmVtdWx0aXBseTtcbiIpOwotICAgIGZyYWdtZW50U2hhZGVyU291cmNlLmFw
cGVuZExpdGVyYWwoInVuaWZvcm0gdmVjMiB1X3RleHR1cmVEaW1lbnNpb25zO1xuIik7Ci0gICAg
ZnJhZ21lbnRTaGFkZXJTb3VyY2UuYXBwZW5kTGl0ZXJhbCgidW5pZm9ybSBpbnQgdV9zd2FwQ29s
b3JDaGFubmVscztcbiIpOwotICAgIGZyYWdtZW50U2hhZGVyU291cmNlLmFwcGVuZExpdGVyYWwo
InZvaWQgbWFpbigpIHtcbiIpOwotICAgIGZyYWdtZW50U2hhZGVyU291cmNlLmFwcGVuZExpdGVy
YWwoIiAgICB2ZWMyIHRleFBvcyA9IHZlYzIodl90ZXh0dXJlUG9zaXRpb24ueCAqIHVfdGV4dHVy
ZURpbWVuc2lvbnMueCwgdl90ZXh0dXJlUG9zaXRpb24ueSAqIHVfdGV4dHVyZURpbWVuc2lvbnMu
eSk7XG4iKTsKLSNpZiBVU0UoT1BFTkdMX0VTKSB8fCAoVVNFKEFOR0xFKSAmJiBQTEFURk9STShJ
T1NfRkFNSUxZKSkKLSAgICBmcmFnbWVudFNoYWRlclNvdXJjZS5hcHBlbmRMaXRlcmFsKCIgICAg
dmVjNCBjb2xvciA9IHRleHR1cmUyRCh1X3RleHR1cmUsIHRleFBvcyk7XG4iKTsKLSNlbGlmIFVT
RShPUEVOR0wpIHx8IChVU0UoQU5HTEUpICYmICFQTEFURk9STShJT1NfRkFNSUxZKSkKLSAgICBm
cmFnbWVudFNoYWRlclNvdXJjZS5hcHBlbmRMaXRlcmFsKCIgICAgdmVjNCBjb2xvciA9IHRleHR1
cmUyRFJlY3QodV90ZXh0dXJlLCB0ZXhQb3MpO1xuIik7Ci0jZWxzZQotI2Vycm9yIFVuc3VwcG9y
dGVkIGNvbmZpZ3VyYXRpb24KLSNlbmRpZgotICAgIGZyYWdtZW50U2hhZGVyU291cmNlLmFwcGVu
ZExpdGVyYWwoIiAgICBpZiAodV9zd2FwQ29sb3JDaGFubmVscyA9PSAxKSB7XG4iKTsKLSAgICBm
cmFnbWVudFNoYWRlclNvdXJjZS5hcHBlbmRMaXRlcmFsKCIgICAgICAgIGNvbG9yLnJnYmEgPSBj
b2xvci5iZ3JhO1xuIik7Ci0gICAgZnJhZ21lbnRTaGFkZXJTb3VyY2UuYXBwZW5kTGl0ZXJhbCgi
ICAgIH1cbiIpOwotICAgIGZyYWdtZW50U2hhZGVyU291cmNlLmFwcGVuZExpdGVyYWwoIiAgICBp
ZiAodV9wcmVtdWx0aXBseSA9PSAxKSB7XG4iKTsKLSAgICBmcmFnbWVudFNoYWRlclNvdXJjZS5h
cHBlbmRMaXRlcmFsKCIgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoY29sb3IuciAqIGNvbG9y
LmEsIGNvbG9yLmcgKiBjb2xvci5hLCBjb2xvci5iICogY29sb3IuYSwgY29sb3IuYSk7XG4iKTsK
LSAgICBmcmFnbWVudFNoYWRlclNvdXJjZS5hcHBlbmRMaXRlcmFsKCIgICAgfSBlbHNlIHtcbiIp
OwotICAgIGZyYWdtZW50U2hhZGVyU291cmNlLmFwcGVuZExpdGVyYWwoIiAgICAgICAgZ2xfRnJh
Z0NvbG9yID0gY29sb3I7XG4iKTsKLSAgICBmcmFnbWVudFNoYWRlclNvdXJjZS5hcHBlbmRMaXRl
cmFsKCIgICAgfVxuIik7Ci0gICAgZnJhZ21lbnRTaGFkZXJTb3VyY2UuYXBwZW5kTGl0ZXJhbCgi
fVxuIik7Ci0KKyAgICBjb25zdCBib29sIHVzZVRleHR1cmUyRCA9IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpJT1N1cmZhY2VUZXh0dXJlVGFyZ2V0KCkgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlRF
WFRVUkVfMkQ7CiAgICAgUGxhdGZvcm1HTE9iamVjdCBmcmFnbWVudFNoYWRlciA9IG1fY29udGV4
dC0+Y3JlYXRlU2hhZGVyKEdyYXBoaWNzQ29udGV4dEdMOjpGUkFHTUVOVF9TSEFERVIpOwotICAg
IG1fY29udGV4dC0+c2hhZGVyU291cmNlKGZyYWdtZW50U2hhZGVyLCBmcmFnbWVudFNoYWRlclNv
dXJjZS50b1N0cmluZygpKTsKKyAgICBpZiAodXNlVGV4dHVyZTJEKQorICAgICAgICBtX2NvbnRl
eHQtPnNoYWRlclNvdXJjZShmcmFnbWVudFNoYWRlciwgc19yZ2JGcmFnbWVudFNoYWRlclRleHR1
cmUyRCk7CisgICAgZWxzZQorICAgICAgICBtX2NvbnRleHQtPnNoYWRlclNvdXJjZShmcmFnbWVu
dFNoYWRlciwgc19yZ2JGcmFnbWVudFNoYWRlclRleHR1cmVSZWN0YW5nbGUpOwogICAgIG1fY29u
dGV4dC0+Y29tcGlsZVNoYWRlckRpcmVjdChmcmFnbWVudFNoYWRlcik7CiAKICAgICBtX2NvbnRl
eHQtPmdldFNoYWRlcml2KGZyYWdtZW50U2hhZGVyLCBHcmFwaGljc0NvbnRleHRHTDo6Q09NUElM
RV9TVEFUVVMsICZ2YWx1ZSk7CkBAIC02MTAsMzMgKzY4NCwxNCBAQCBib29sIFZpZGVvVGV4dHVy
ZUNvcGllckNWOjppbml0aWFsaXplQ29udGV4dE9iamVjdHMoKQogCiBib29sIFZpZGVvVGV4dHVy
ZUNvcGllckNWOjppbml0aWFsaXplVVZDb250ZXh0T2JqZWN0cygpCiB7Ci0gICAgU3RyaW5nIHZl
cnRleFNoYWRlclNvdXJjZSB7Ci0gICAgICAgICJhdHRyaWJ1dGUgdmVjMiBhX3Bvc2l0aW9uO1xu
IgotICAgICAgICAidW5pZm9ybSB2ZWMyIHVfeVRleHR1cmVTaXplO1xuIgotICAgICAgICAidW5p
Zm9ybSB2ZWMyIHVfdXZUZXh0dXJlU2l6ZTtcbiIKLSAgICAgICAgInVuaWZvcm0gaW50IHVfZmxp
cFk7XG4iCi0gICAgICAgICJ2YXJ5aW5nIHZlYzIgdl95VGV4dHVyZUNvb3JkaW5hdGU7XG4iCi0g
ICAgICAgICJ2YXJ5aW5nIHZlYzIgdl91dlRleHR1cmVDb29yZGluYXRlO1xuIgotICAgICAgICAi
dm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgZ2xfUG9zaXRpb24gPSB2ZWM0KGFfcG9zaXRp
b24sIDAsIDEuMCk7XG4iCi0gICAgICAgICIgICB2ZWMyIG5vcm1hbGl6ZWRQb3NpdGlvbiA9IGFf
cG9zaXRpb24gKiAuNSArIC41O1xuIgotICAgICAgICAiICAgaWYgKHVfZmxpcFkgPT0gMSkge1xu
IgotICAgICAgICAiICAgICAgIG5vcm1hbGl6ZWRQb3NpdGlvbi55ID0gMS4wIC0gbm9ybWFsaXpl
ZFBvc2l0aW9uLnk7XG4iCi0gICAgICAgICIgICB9XG4iCi0jaWYgVVNFKE9QRU5HTF9FUykgfHwg
KFVTRShBTkdMRSkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkpCi0gICAgICAgICIgICB2X3lUZXh0
dXJlQ29vcmRpbmF0ZSA9IG5vcm1hbGl6ZWRQb3NpdGlvbjtcbiIKLSAgICAgICAgIiAgIHZfdXZU
ZXh0dXJlQ29vcmRpbmF0ZSA9IG5vcm1hbGl6ZWRQb3NpdGlvbjtcbiIKLSNlbGlmIFVTRShPUEVO
R0wpIHx8IChVU0UoQU5HTEUpICYmICFQTEFURk9STShJT1NfRkFNSUxZKSkKLSAgICAgICAgIiAg
IHZfeVRleHR1cmVDb29yZGluYXRlID0gbm9ybWFsaXplZFBvc2l0aW9uICogdV95VGV4dHVyZVNp
emU7XG4iCi0gICAgICAgICIgICB2X3V2VGV4dHVyZUNvb3JkaW5hdGUgPSBub3JtYWxpemVkUG9z
aXRpb24gKiB1X3V2VGV4dHVyZVNpemU7XG4iCi0jZWxzZQotI2Vycm9yIFVuc3VwcG9ydGVkIGNv
bmZpZ3VyYXRpb24KLSNlbmRpZgotICAgICAgICAifVxuIl9zCi0gICAgfTsKKyAgICBjb25zdCBi
b29sIHVzZVRleHR1cmUyRCA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpJT1N1cmZhY2VUZXh0
dXJlVGFyZ2V0KCkgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfMkQ7CiAKICAgICBQbGF0
Zm9ybUdMT2JqZWN0IHZlcnRleFNoYWRlciA9IG1fY29udGV4dC0+Y3JlYXRlU2hhZGVyKEdyYXBo
aWNzQ29udGV4dEdMOjpWRVJURVhfU0hBREVSKTsKLSAgICBtX2NvbnRleHQtPnNoYWRlclNvdXJj
ZSh2ZXJ0ZXhTaGFkZXIsIHZlcnRleFNoYWRlclNvdXJjZSk7CisgICAgaWYgKHVzZVRleHR1cmUy
RCkKKyAgICAgICAgbV9jb250ZXh0LT5zaGFkZXJTb3VyY2UodmVydGV4U2hhZGVyLCBzX3l1dlZl
cnRleFNoYWRlclRleHR1cmUyRCk7CisgICAgZWxzZQorICAgICAgICBtX2NvbnRleHQtPnNoYWRl
clNvdXJjZSh2ZXJ0ZXhTaGFkZXIsIHNfeXV2VmVydGV4U2hhZGVyVGV4dHVyZVJlY3RhbmdsZSk7
CisKICAgICBtX2NvbnRleHQtPmNvbXBpbGVTaGFkZXJEaXJlY3QodmVydGV4U2hhZGVyKTsKIAog
ICAgIEdDR0xpbnQgc3RhdHVzID0gMDsKQEAgLTY0NywzNSArNzAyLDEyIEBAIGJvb2wgVmlkZW9U
ZXh0dXJlQ29waWVyQ1Y6OmluaXRpYWxpemVVVkNvbnRleHRPYmplY3RzKCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSB7Ci0j
aWYgVVNFKE9QRU5HTF9FUykgfHwgVVNFKEFOR0xFKQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7XG4iCi0jZW5kaWYKLSNpZiBVU0UoT1BFTkdMX0VTKSB8fCAoVVNFKEFOR0xFKSAm
JiBQTEFURk9STShJT1NfRkFNSUxZKSkKLSAgICAgICAgIiNkZWZpbmUgU0FNUExFUlRZUEUgc2Ft
cGxlcjJEXG4iCi0gICAgICAgICIjZGVmaW5lIFRFWFRVUkVGVU5DIHRleHR1cmUyRFxuIgotI2Vs
aWYgVVNFKE9QRU5HTCkgfHwgKFVTRShBTkdMRSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpKQot
ICAgICAgICAiI2RlZmluZSBTQU1QTEVSVFlQRSBzYW1wbGVyMkRSZWN0XG4iCi0gICAgICAgICIj
ZGVmaW5lIFRFWFRVUkVGVU5DIHRleHR1cmUyRFJlY3RcbiIKLSNlbHNlCi0jZXJyb3IgVW5zdXBw
b3J0ZWQgY29uZmlndXJhdGlvbgotI2VuZGlmCi0gICAgICAgICJ1bmlmb3JtIFNBTVBMRVJUWVBF
IHVfeVRleHR1cmU7XG4iCi0gICAgICAgICJ1bmlmb3JtIFNBTVBMRVJUWVBFIHVfdXZUZXh0dXJl
O1xuIgotICAgICAgICAidW5pZm9ybSBtYXQ0IHVfY29sb3JNYXRyaXg7XG4iCi0gICAgICAgICJ2
YXJ5aW5nIHZlYzIgdl95VGV4dHVyZUNvb3JkaW5hdGU7XG4iCi0gICAgICAgICJ2YXJ5aW5nIHZl
YzIgdl91dlRleHR1cmVDb29yZGluYXRlO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgot
ICAgICAgICAiICAgIHZlYzQgeXV2O1xuIgotICAgICAgICAiICAgIHl1di5yID0gVEVYVFVSRUZV
TkModV95VGV4dHVyZSwgdl95VGV4dHVyZUNvb3JkaW5hdGUpLnI7XG4iCi0gICAgICAgICIgICAg
eXV2LmdiID0gVEVYVFVSRUZVTkModV91dlRleHR1cmUsIHZfdXZUZXh0dXJlQ29vcmRpbmF0ZSku
cmc7XG4iCi0gICAgICAgICIgICAgeXV2LmEgPSAxLjA7XG4iCi0gICAgICAgICIgICAgZ2xfRnJh
Z0NvbG9yID0geXV2ICogdV9jb2xvck1hdHJpeDtcbiIKLSAgICAgICAgIn1cbiJfcwotICAgIH07
Ci0KICAgICBQbGF0Zm9ybUdMT2JqZWN0IGZyYWdtZW50U2hhZGVyID0gbV9jb250ZXh0LT5jcmVh
dGVTaGFkZXIoR3JhcGhpY3NDb250ZXh0R0w6OkZSQUdNRU5UX1NIQURFUik7Ci0gICAgbV9jb250
ZXh0LT5zaGFkZXJTb3VyY2UoZnJhZ21lbnRTaGFkZXIsIGZyYWdtZW50U2hhZGVyU291cmNlKTsK
KyAgICBpZiAodXNlVGV4dHVyZTJEKQorICAgICAgICBtX2NvbnRleHQtPnNoYWRlclNvdXJjZShm
cmFnbWVudFNoYWRlciwgc195dXZGcmFnbWVudFNoYWRlclRleHR1cmUyRCk7CisgICAgZWxzZQor
ICAgICAgICBtX2NvbnRleHQtPnNoYWRlclNvdXJjZShmcmFnbWVudFNoYWRlciwgc195dXZGcmFn
bWVudFNoYWRlclRleHR1cmVSZWN0YW5nbGUpOworCiAgICAgbV9jb250ZXh0LT5jb21waWxlU2hh
ZGVyRGlyZWN0KGZyYWdtZW50U2hhZGVyKTsKIAogICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyaXYo
ZnJhZ21lbnRTaGFkZXIsIEdyYXBoaWNzQ29udGV4dEdMOjpDT01QSUxFX1NUQVRVUywgJnN0YXR1
cyk7CkBAIC03MjUsNyArNzU3LDYgQEAgYm9vbCBWaWRlb1RleHR1cmVDb3BpZXJDVjo6aW5pdGlh
bGl6ZVVWQ29udGV4dE9iamVjdHMoKQogICAgIHJldHVybiB0cnVlOwogfQogCi0jaWYgVVNFKEFO
R0xFKQogdm9pZCogVmlkZW9UZXh0dXJlQ29waWVyQ1Y6OmF0dGFjaElPU3VyZmFjZVRvVGV4dHVy
ZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIHR5cGUsIElPU3VyZmFjZVJlZiBzdXJmYWNl
LCBHQ0dMdWludCBwbGFuZSkKIHsKICAgICBhdXRvIGRpc3BsYXkgPSBtX2NvbnRleHQtPnBsYXRm
b3JtRGlzcGxheSgpOwpAQCAtNzM5LDcgKzc3MCw3IEBAIHZvaWQqIFZpZGVvVGV4dHVyZUNvcGll
ckNWOjphdHRhY2hJT1N1cmZhY2VUb1RleHR1cmUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBp
CiAgICAgICAgIExPRyhXZWJHTCwgIlVua25vd24gdGV4dHVyZSB0YXJnZXQgJWQuIiwgc3RhdGlj
X2Nhc3Q8aW50Pih0YXJnZXQpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAg
IGlmIChlZ2xUZXh0dXJlVGFyZ2V0ICE9IEdyYXBoaWNzQ29udGV4dEdMOjpFR0xJT1N1cmZhY2VU
ZXh0dXJlVGFyZ2V0KCkpIHsKKyAgICBpZiAoZWdsVGV4dHVyZVRhcmdldCAhPSBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6RUdMSU9TdXJmYWNlVGV4dHVyZVRhcmdldCgpKSB7CiAgICAgICAgIExP
RyhXZWJHTCwgIk1pc21hdGNoIGluIEVHTCB0ZXh0dXJlIHRhcmdldCAlZC4iLCBzdGF0aWNfY2Fz
dDxpbnQ+KHRhcmdldCkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC03NzIs
MzEgKzgwMywxMSBAQCB2b2lkIFZpZGVvVGV4dHVyZUNvcGllckNWOjpkZXRhY2hJT1N1cmZhY2VG
cm9tVGV4dHVyZSh2b2lkKiBoYW5kbGUpCiAgICAgRUdMX1JlbGVhc2VUZXhJbWFnZShkaXNwbGF5
LCBoYW5kbGUsIEVHTF9CQUNLX0JVRkZFUik7CiAgICAgRUdMX0Rlc3Ryb3lTdXJmYWNlKGRpc3Bs
YXksIGhhbmRsZSk7CiB9Ci0jZW5kaWYKIAogYm9vbCBWaWRlb1RleHR1cmVDb3BpZXJDVjo6Y29w
eUltYWdlVG9QbGF0Zm9ybVRleHR1cmUoQ1ZQaXhlbEJ1ZmZlclJlZiBpbWFnZSwgc2l6ZV90IHdp
ZHRoLCBzaXplX3QgaGVpZ2h0LCBQbGF0Zm9ybUdMT2JqZWN0IG91dHB1dFRleHR1cmUsIEdDR0xl
bnVtIG91dHB1dFRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBi
b29sIGZsaXBZKQogewotICAgIC8vIENWT3BlbkdMVGV4dHVyZUNhY2hlIHNlZW1zIHRvIGJlIGRp
c2FibGVkIHNpbmNlIHRoZSBkZXByZWNhdGlvbiBvZgotICAgIC8vIE9wZW5HTC4gVG8gYXZvaWQg
cG9ydGluZyB1bnVzZWQgY29kZSB0byB0aGUgQU5HTEUgY29kZSBwYXRocywgcmVtb3ZlIGl0Lgot
I2lmIFVTRShBTkdMRSkKICAgICBVTlVTRURfUEFSQU0ob3V0cHV0VGFyZ2V0KTsKICAgICBVTlVT
RURfUEFSQU0ocHJlbXVsdGlwbHlBbHBoYSk7Ci0jZWxzZQotICAgIGlmICghbV90ZXh0dXJlQ2Fj
aGUpIHsKLSAgICAgICAgbV90ZXh0dXJlQ2FjaGUgPSBUZXh0dXJlQ2FjaGVDVjo6Y3JlYXRlKG1f
Y29udGV4dCk7Ci0gICAgICAgIGlmICghbV90ZXh0dXJlQ2FjaGUpCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKGF1dG8gdGV4dHVyZSA9IG1fdGV4dHVyZUNhY2hl
LT50ZXh0dXJlRnJvbUltYWdlKGltYWdlLCBvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5hbEZv
cm1hdCwgZm9ybWF0LCB0eXBlKSkgewotICAgICAgICBib29sIHN3YXBDb2xvckNoYW5uZWxzID0g
ZmFsc2U7Ci0jaWYgVVNFKE9QRU5HTF9FUykKLSAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlz
IHdvcmthcm91bmQgb25jZSByZGFyOi8vcHJvYmxlbS8zNTgzNDM4OCBpcyBmaXhlZC4KLSAgICAg
ICAgc3dhcENvbG9yQ2hhbm5lbHMgPSBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKGlt
YWdlKSA9PSBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBOwotI2VuZGlmCi0gICAgICAgIHJldHVy
biBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUodGV4dHVyZS5nZXQoKSwgd2lkdGgs
IGhlaWdodCwgb3V0cHV0VGV4dHVyZSwgb3V0cHV0VGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3Jt
YXQsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFksIHN3YXBDb2xvckNoYW5u
ZWxzKTsKLSAgICB9Ci0jZW5kaWYgLy8gVVNFKEFOR0xFKQogCiAgICAgLy8gRklYTUU6IFRoaXMg
Y3VycmVudGx5IG9ubHkgc3VwcG9ydHMgJzQyMHYnIGFuZCAnNDIwZicgcGl4ZWwgZm9ybWF0cy4g
SW52ZXN0aWdhdGUgc3VwcG9ydGluZyBtb3JlIHBpeGVsIGZvcm1hdHMuCiAgICAgT1NUeXBlIHBp
eGVsRm9ybWF0ID0gQ1ZQaXhlbEJ1ZmZlckdldFBpeGVsRm9ybWF0VHlwZShpbWFnZSk7CkBAIC04
MDQsNyArODE1LDYgQEAgYm9vbCBWaWRlb1RleHR1cmVDb3BpZXJDVjo6Y29weUltYWdlVG9QbGF0
Zm9ybVRleHR1cmUoQ1ZQaXhlbEJ1ZmZlclJlZiBpbWFnZSwgc2kKICAgICAgICAgTE9HKFdlYkdM
LCAiVmlkZW9UZXh0dXJlQ29waWVyQ1Y6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVy
ZSglcCkgLSBBc2tlZCB0byBjb3B5IGFuIHVuc3VwcG9ydGVkIHBpeGVsIGZvcm1hdCAoJyVzJyku
IiwgdGhpcywgRm91ckNDKHBpeGVsRm9ybWF0KS50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotCiAgICAgSU9TdXJmYWNlUmVmIHN1cmZhY2Ug
PSBDVlBpeGVsQnVmZmVyR2V0SU9TdXJmYWNlKGltYWdlKTsKICAgICBpZiAoIXN1cmZhY2UpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTg1MywxNSArODYzLDggQEAgYm9vbCBWaWRlb1RleHR1
cmVDb3BpZXJDVjo6Y29weUltYWdlVG9QbGF0Zm9ybVRleHR1cmUoQ1ZQaXhlbEJ1ZmZlclJlZiBp
bWFnZSwgc2kKICAgICBhdXRvIHV2UGxhbmVXaWR0aCA9IElPU3VyZmFjZUdldFdpZHRoT2ZQbGFu
ZShzdXJmYWNlLCAxKTsKICAgICBhdXRvIHV2UGxhbmVIZWlnaHQgPSBJT1N1cmZhY2VHZXRIZWln
aHRPZlBsYW5lKHN1cmZhY2UsIDEpOwogCi0jaWYgVVNFKE9QRU5HTF9FUykKLSAgICBHQ0dMZW51
bSB2aWRlb1RleHR1cmVUYXJnZXQgPSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRDsKLSNl
bGlmIFVTRShPUEVOR0wpCi0gICAgR0NHTGVudW0gdmlkZW9UZXh0dXJlVGFyZ2V0ID0gR3JhcGhp
Y3NDb250ZXh0R0w6OlRFWFRVUkVfUkVDVEFOR0xFX0FSQjsKLSNlbGlmIFVTRShBTkdMRSkKLSAg
ICBHQ0dMZW51bSB2aWRlb1RleHR1cmVUYXJnZXQgPSBHcmFwaGljc0NvbnRleHRHTDo6SU9TdXJm
YWNlVGV4dHVyZVRhcmdldCgpOwotI2Vsc2UKLSNlcnJvciBVbnN1cHBvcnRlZCBjb25maWd1cmF0
aW9uCi0jZW5kaWYKKyAgICBHQ0dMZW51bSB2aWRlb1RleHR1cmVUYXJnZXQgPSBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6SU9TdXJmYWNlVGV4dHVyZVRhcmdldCgpOworCiAgICAgYXV0byB1dlRl
eHR1cmUgPSBtX2NvbnRleHQtPmNyZWF0ZVRleHR1cmUoKTsKICAgICBtX2NvbnRleHQtPmFjdGl2
ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkUxKTsKICAgICBtX2NvbnRleHQtPmJp
bmRUZXh0dXJlKHZpZGVvVGV4dHVyZVRhcmdldCwgdXZUZXh0dXJlKTsKQEAgLTg2OSwxOCArODcy
LDExIEBAIGJvb2wgVmlkZW9UZXh0dXJlQ29waWVyQ1Y6OmNvcHlJbWFnZVRvUGxhdGZvcm1UZXh0
dXJlKENWUGl4ZWxCdWZmZXJSZWYgaW1hZ2UsIHNpCiAgICAgbV9jb250ZXh0LT50ZXhQYXJhbWV0
ZXJpKHZpZGVvVGV4dHVyZVRhcmdldCwgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUlOX0ZJ
TFRFUiwgR3JhcGhpY3NDb250ZXh0R0w6OkxJTkVBUik7CiAgICAgbV9jb250ZXh0LT50ZXhQYXJh
bWV0ZXJpKHZpZGVvVGV4dHVyZVRhcmdldCwgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfV1JB
UF9TLCBHcmFwaGljc0NvbnRleHRHTDo6Q0xBTVBfVE9fRURHRSk7CiAgICAgbV9jb250ZXh0LT50
ZXhQYXJhbWV0ZXJpKHZpZGVvVGV4dHVyZVRhcmdldCwgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRV
UkVfV1JBUF9ULCBHcmFwaGljc0NvbnRleHRHTDo6Q0xBTVBfVE9fRURHRSk7Ci0jaWYgVVNFKEFO
R0xFKQogICAgIGF1dG8gdXZIYW5kbGUgPSBhdHRhY2hJT1N1cmZhY2VUb1RleHR1cmUodmlkZW9U
ZXh0dXJlVGFyZ2V0LCBHcmFwaGljc0NvbnRleHRHTDo6UkcsIHV2UGxhbmVXaWR0aCwgdXZQbGFu
ZUhlaWdodCwgR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0JZVEUsIHN1cmZhY2UsIDEpOwog
ICAgIGlmICghdXZIYW5kbGUpIHsKICAgICAgICAgbV9jb250ZXh0LT5kZWxldGVUZXh0dXJlKHV2
VGV4dHVyZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0jZWxzZQotICAgIGlmICgh
bV9jb250ZXh0LT50ZXhJbWFnZUlPU3VyZmFjZTJEKHZpZGVvVGV4dHVyZVRhcmdldCwgR3JhcGhp
Y3NDb250ZXh0R0w6OlJHLCB1dlBsYW5lV2lkdGgsIHV2UGxhbmVIZWlnaHQsIEdyYXBoaWNzQ29u
dGV4dEdMOjpSRywgR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0JZVEUsIHN1cmZhY2UsIDEp
KSB7Ci0gICAgICAgIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZSh1dlRleHR1cmUpOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotI2VuZGlmIC8vIFVTRShBTkdMRSkKIAogICAgIGF1dG8g
eVRleHR1cmUgPSBtX2NvbnRleHQtPmNyZWF0ZVRleHR1cmUoKTsKICAgICBtX2NvbnRleHQtPmFj
dGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkUwKTsKQEAgLTg4OSwyMCArODg1
LDEyIEBAIGJvb2wgVmlkZW9UZXh0dXJlQ29waWVyQ1Y6OmNvcHlJbWFnZVRvUGxhdGZvcm1UZXh0
dXJlKENWUGl4ZWxCdWZmZXJSZWYgaW1hZ2UsIHNpCiAgICAgbV9jb250ZXh0LT50ZXhQYXJhbWV0
ZXJpKHZpZGVvVGV4dHVyZVRhcmdldCwgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfTUlOX0ZJ
TFRFUiwgR3JhcGhpY3NDb250ZXh0R0w6OkxJTkVBUik7CiAgICAgbV9jb250ZXh0LT50ZXhQYXJh
bWV0ZXJpKHZpZGVvVGV4dHVyZVRhcmdldCwgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfV1JB
UF9TLCBHcmFwaGljc0NvbnRleHRHTDo6Q0xBTVBfVE9fRURHRSk7CiAgICAgbV9jb250ZXh0LT50
ZXhQYXJhbWV0ZXJpKHZpZGVvVGV4dHVyZVRhcmdldCwgR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRV
UkVfV1JBUF9ULCBHcmFwaGljc0NvbnRleHRHTDo6Q0xBTVBfVE9fRURHRSk7Ci0jaWYgVVNFKEFO
R0xFKQogICAgIGF1dG8geUhhbmRsZSA9IGF0dGFjaElPU3VyZmFjZVRvVGV4dHVyZSh2aWRlb1Rl
eHR1cmVUYXJnZXQsIEdyYXBoaWNzQ29udGV4dEdMOjpSRUQsIHlQbGFuZVdpZHRoLCB5UGxhbmVI
ZWlnaHQsIEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9CWVRFLCBzdXJmYWNlLCAwKTsKICAg
ICBpZiAoIXlIYW5kbGUpIHsKICAgICAgICAgbV9jb250ZXh0LT5kZWxldGVUZXh0dXJlKHlUZXh0
dXJlKTsKICAgICAgICAgbV9jb250ZXh0LT5kZWxldGVUZXh0dXJlKHV2VGV4dHVyZSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0jZWxzZQotICAgIGlmICghbV9jb250ZXh0LT50ZXhJ
bWFnZUlPU3VyZmFjZTJEKHZpZGVvVGV4dHVyZVRhcmdldCwgR3JhcGhpY3NDb250ZXh0R0w6OkxV
TUlOQU5DRSwgeVBsYW5lV2lkdGgsIHlQbGFuZUhlaWdodCwgR3JhcGhpY3NDb250ZXh0R0w6OkxV
TUlOQU5DRSwgR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0JZVEUsIHN1cmZhY2UsIDApKSB7
Ci0gICAgICAgIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZSh5VGV4dHVyZSk7Ci0gICAgICAgIG1f
Y29udGV4dC0+ZGVsZXRlVGV4dHVyZSh1dlRleHR1cmUpOwotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotI2VuZGlmIC8vIFVTRShBTkdMRSkKIAogICAgIC8vIENvbmZpZ3VyZSB0aGUgZHJh
d2luZyBwYXJhbWV0ZXJzLgogICAgIG1fY29udGV4dC0+dW5pZm9ybTFpKG1feVRleHR1cmVVbmlm
b3JtTG9jYXRpb24sIDApOwpAQCAtOTE5LDE5ICs5MDcsMTEgQEAgYm9vbCBWaWRlb1RleHR1cmVD
b3BpZXJDVjo6Y29weUltYWdlVG9QbGF0Zm9ybVRleHR1cmUoQ1ZQaXhlbEJ1ZmZlclJlZiBpbWFn
ZSwgc2kKICAgICAvLyBEbyB0aGUgYWN0dWFsIGRyYXdpbmcuCiAgICAgbV9jb250ZXh0LT5kcmF3
QXJyYXlzKEdyYXBoaWNzQ29udGV4dEdMOjpUUklBTkdMRVMsIDAsIDYpOwogCi0jaWYgVVNFKE9Q
RU5HTF9FUykgfHwgKFVTRShBTkdMRSkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkpCi0gICAgLy8g
Zmx1c2goKSBtdXN0IGJlIGNhbGxlZCBoZXJlIGluIG9yZGVyIHRvIHJlLXN5bmNocm9uaXplIHRo
ZSBvdXRwdXQgdGV4dHVyZSdzIGNvbnRlbnRzIGFjcm9zcyB0aGUKLSAgICAvLyB0d28gRUFHTCBj
b250ZXh0cy4KLSAgICBtX2NvbnRleHQtPmZsdXNoKCk7Ci0jZW5kaWYKLQogICAgIC8vIENsZWFu
LXVwLgogICAgIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZSh5VGV4dHVyZSk7CiAgICAgbV9jb250
ZXh0LT5kZWxldGVUZXh0dXJlKHV2VGV4dHVyZSk7Ci0jaWYgVVNFKEFOR0xFKQogICAgIGRldGFj
aElPU3VyZmFjZUZyb21UZXh0dXJlKHlIYW5kbGUpOwogICAgIGRldGFjaElPU3VyZmFjZUZyb21U
ZXh0dXJlKHV2SGFuZGxlKTsKLSNlbmRpZgogCiAgICAgbV9sYXN0U3VyZmFjZSA9IHN1cmZhY2U7
CiAgICAgbV9sYXN0U3VyZmFjZVNlZWQgPSBuZXdTdXJmYWNlU2VlZDsKQEAgLTk0MSw1NyArOTIx
LDYgQEAgYm9vbCBWaWRlb1RleHR1cmVDb3BpZXJDVjo6Y29weUltYWdlVG9QbGF0Zm9ybVRleHR1
cmUoQ1ZQaXhlbEJ1ZmZlclJlZiBpbWFnZSwgc2kKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBWaWRlb1RleHR1cmVDb3BpZXJDVjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJl
KFRleHR1cmVUeXBlIGlucHV0VmlkZW9UZXh0dXJlLCBzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWln
aHQsIFBsYXRmb3JtR0xPYmplY3Qgb3V0cHV0VGV4dHVyZSwgR0NHTGVudW0gb3V0cHV0VGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFksIGJvb2wg
c3dhcENvbG9yQ2hhbm5lbHMpCi17Ci0gICAgaWYgKCFpbnB1dFZpZGVvVGV4dHVyZSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgR0xmbG9hdCBsb3dlckxlZnRbMl0gPSB7IDAsIDAgfTsK
LSAgICBHTGZsb2F0IGxvd2VyUmlnaHRbMl0gPSB7IDAsIDAgfTsKLSAgICBHTGZsb2F0IHVwcGVy
UmlnaHRbMl0gPSB7IDAsIDAgfTsKLSAgICBHTGZsb2F0IHVwcGVyTGVmdFsyXSA9IHsgMCwgMCB9
OwotICAgIFBsYXRmb3JtR0xPYmplY3QgdmlkZW9UZXh0dXJlTmFtZTsKLSAgICBHQ0dMZW51bSB2
aWRlb1RleHR1cmVUYXJnZXQ7Ci0KLSNpZiBVU0UoT1BFTkdMX0VTKQotICAgIHZpZGVvVGV4dHVy
ZU5hbWUgPSBDVk9wZW5HTEVTVGV4dHVyZUdldE5hbWUoaW5wdXRWaWRlb1RleHR1cmUpOwotICAg
IHZpZGVvVGV4dHVyZVRhcmdldCA9IENWT3BlbkdMRVNUZXh0dXJlR2V0VGFyZ2V0KGlucHV0Vmlk
ZW9UZXh0dXJlKTsKLSAgICBDVk9wZW5HTEVTVGV4dHVyZUdldENsZWFuVGV4Q29vcmRzKGlucHV0
VmlkZW9UZXh0dXJlLCBsb3dlckxlZnQsIGxvd2VyUmlnaHQsIHVwcGVyUmlnaHQsIHVwcGVyTGVm
dCk7Ci0jZWxpZiBVU0UoT1BFTkdMKQotICAgIHZpZGVvVGV4dHVyZU5hbWUgPSBDVk9wZW5HTFRl
eHR1cmVHZXROYW1lKGlucHV0VmlkZW9UZXh0dXJlKTsKLSAgICB2aWRlb1RleHR1cmVUYXJnZXQg
PSBDVk9wZW5HTFRleHR1cmVHZXRUYXJnZXQoaW5wdXRWaWRlb1RleHR1cmUpOwotICAgIENWT3Bl
bkdMVGV4dHVyZUdldENsZWFuVGV4Q29vcmRzKGlucHV0VmlkZW9UZXh0dXJlLCBsb3dlckxlZnQs
IGxvd2VyUmlnaHQsIHVwcGVyUmlnaHQsIHVwcGVyTGVmdCk7Ci0jZWxpZiBVU0UoQU5HTEUpCi0g
ICAgLy8gQ1ZPcGVuR0xUZXh0dXJlQ2FjaGVDcmVhdGVUZXh0dXJlRnJvbUltYWdlIHNlZW1zIHRv
IGFsd2F5cyByZXR1cm4KLSAgICAvLyBrQ1ZSZXR1cm5QaXhlbEJ1ZmZlck5vdE9wZW5HTENvbXBh
dGlibGUgb24gZGVza3RvcCBtYWNPUyBub3csIHNvIHRoaXMKLSAgICAvLyBlbnRpcmUgY29kZSBw
YXRoIHNlZW1zIHRvIGJlIHVudXNlZC4gQXNzdW1lIHRoZSBJT1N1cmZhY2UgcGF0aCB3aWxsIGJl
Ci0gICAgLy8gdGFrZW4gd2hlbiB1c2luZyBBTkdMRS4KLSAgICBVTlVTRURfUEFSQU0obG93ZXJM
ZWZ0KTsKLSAgICBVTlVTRURfUEFSQU0obG93ZXJSaWdodCk7Ci0gICAgVU5VU0VEX1BBUkFNKHVw
cGVyTGVmdCk7Ci0gICAgVU5VU0VEX1BBUkFNKHVwcGVyUmlnaHQpOwotICAgIFVOVVNFRF9QQVJB
TSh3aWR0aCk7Ci0gICAgVU5VU0VEX1BBUkFNKGhlaWdodCk7Ci0gICAgVU5VU0VEX1BBUkFNKG91
dHB1dFRleHR1cmUpOwotICAgIFVOVVNFRF9QQVJBTShvdXRwdXRUYXJnZXQpOwotICAgIFVOVVNF
RF9QQVJBTShsZXZlbCk7Ci0gICAgVU5VU0VEX1BBUkFNKGludGVybmFsRm9ybWF0KTsKLSAgICBV
TlVTRURfUEFSQU0oZm9ybWF0KTsKLSAgICBVTlVTRURfUEFSQU0odHlwZSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHByZW11bHRpcGx5QWxwaGEpOwotICAgIFVOVVNFRF9QQVJBTShmbGlwWSk7Ci0gICAg
VU5VU0VEX1BBUkFNKHN3YXBDb2xvckNoYW5uZWxzKTsKLSAgICAvLyBGSVhNRTogZGV0ZXJtaW5l
IGhvdyB0byBhY2Nlc3MgcmVjdGFuZ3VsYXIgdGV4dHVyZXMgdmlhIEFOR0xFLgotICAgIFVOSU1Q
TEVNRU5URUQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLQotICAgIGlmIChsb3dlckxl
ZnRbMV0gPCB1cHBlclJpZ2h0WzFdKQotICAgICAgICBmbGlwWSA9ICFmbGlwWTsKLQotICAgIHJl
dHVybiBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUodmlkZW9UZXh0dXJlTmFtZSwg
dmlkZW9UZXh0dXJlVGFyZ2V0LCB3aWR0aCwgaGVpZ2h0LCBvdXRwdXRUZXh0dXJlLCBvdXRwdXRU
YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFs
cGhhLCBmbGlwWSwgc3dhcENvbG9yQ2hhbm5lbHMpOwotfQotCiBib29sIFZpZGVvVGV4dHVyZUNv
cGllckNWOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoUGxhdGZvcm1HTE9iamVj
dCB2aWRlb1RleHR1cmVOYW1lLCBHQ0dMZW51bSB2aWRlb1RleHR1cmVUYXJnZXQsIHNpemVfdCB3
aWR0aCwgc2l6ZV90IGhlaWdodCwgUGxhdGZvcm1HTE9iamVjdCBvdXRwdXRUZXh0dXJlLCBHQ0dM
ZW51bSBvdXRwdXRUYXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwg
Ym9vbCBmbGlwWSwgYm9vbCBzd2FwQ29sb3JDaGFubmVscykKIHsKICAgICBMT0coV2ViR0wsICJW
aWRlb1RleHR1cmVDb3BpZXJDVjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKCVw
KSAtIGludGVybmFsRm9ybWF0OiAlcywgZm9ybWF0OiAlcywgdHlwZTogJXMgZmxpcFk6ICVzLCBw
cmVtdWx0aXBseUFscGhhOiAlcyIsIHRoaXMsIGVudW1Ub1N0cmluZ01hcCgpW2ludGVybmFsRm9y
bWF0XSwgZW51bVRvU3RyaW5nTWFwKClbZm9ybWF0XSwgZW51bVRvU3RyaW5nTWFwKClbdHlwZV0s
IGZsaXBZID8gInRydWUiIDogImZhbHNlIiwgcHJlbXVsdGlwbHlBbHBoYSA/ICJ0cnVlIiA6ICJm
YWxzZSIpOwpAQCAtMTAzNCwxMSArOTYzLDcgQEAgYm9vbCBWaWRlb1RleHR1cmVDb3BpZXJDVjo6
Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKFBsYXRmb3JtR0xPYmplY3QgdmkKIAog
ICAgIC8vIENvbmZpZ3VyZSB0aGUgZHJhd2luZyBwYXJhbWV0ZXJzLgogICAgIG1fY29udGV4dC0+
dW5pZm9ybTFpKG1fdGV4dHVyZVVuaWZvcm1Mb2NhdGlvbiwgMCk7Ci0jaWYgVVNFKE9QRU5HTF9F
UykKLSAgICBtX2NvbnRleHQtPnVuaWZvcm0yZihtX3RleHR1cmVEaW1lbnNpb25zVW5pZm9ybUxv
Y2F0aW9uLCAxLCAxKTsKLSNlbHNlCiAgICAgbV9jb250ZXh0LT51bmlmb3JtMmYobV90ZXh0dXJl
RGltZW5zaW9uc1VuaWZvcm1Mb2NhdGlvbiwgd2lkdGgsIGhlaWdodCk7Ci0jZW5kaWYKIAogICAg
IG1fY29udGV4dC0+dW5pZm9ybTFpKG1fZmxpcFlVbmlmb3JtTG9jYXRpb24sIGZsaXBZKTsKICAg
ICBtX2NvbnRleHQtPnVuaWZvcm0xaShtX3N3YXBDb2xvckNoYW5uZWxzVW5pZm9ybUxvY2F0aW9u
LCBzd2FwQ29sb3JDaGFubmVscyk7CkBAIC0xMDUwLDEyICs5NzUsNiBAQCBib29sIFZpZGVvVGV4
dHVyZUNvcGllckNWOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoUGxhdGZvcm1H
TE9iamVjdCB2aQogICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliUG9pbnRlcihtX3Bvc2l0aW9u
QXR0cmlidXRlTG9jYXRpb24sIDIsIEdyYXBoaWNzQ29udGV4dEdMOjpGTE9BVCwgZmFsc2UsIDAs
IDApOwogICAgIG1fY29udGV4dC0+ZHJhd0FycmF5cyhHcmFwaGljc0NvbnRleHRHTDo6VFJJQU5H
TEVTLCAwLCA2KTsKIAotI2lmIFVTRShPUEVOR0xfRVMpCi0gICAgLy8gZmx1c2goKSBtdXN0IGJl
IGNhbGxlZCBoZXJlIGluIG9yZGVyIHRvIHJlLXN5bmNocm9uaXplIHRoZSBvdXRwdXQgdGV4dHVy
ZSdzIGNvbnRlbnRzIGFjcm9zcyB0aGUKLSAgICAvLyB0d28gRUFHTCBjb250ZXh0cy4KLSAgICBt
X2NvbnRleHQtPmZsdXNoKCk7Ci0jZW5kaWYKLQogICAgIC8vIENsZWFuLXVwLgogICAgIG1fY29u
dGV4dC0+YmluZFRleHR1cmUodmlkZW9UZXh0dXJlVGFyZ2V0LCAwKTsKICAgICBtX2NvbnRleHQt
PmJpbmRUZXh0dXJlKG91dHB1dFRhcmdldCwgb3V0cHV0VGV4dHVyZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3BpZXJDVi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29waWVy
Q1YuaAppbmRleCBlMDA0ZDIyYTU2NDU4MTEyZjEzYjQzZjE5ODdmNWFhOTVhZmQ2YTQzLi5jZWRm
MmQ1OGFhMjg1NGMzYjJmNDkyODY2YTUwNzBkZGVhYjBkYTEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3BpZXJDVi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGllckNW
LmgKQEAgLTM1LDIyICszNSwxMyBAQCB0eXBlZGVmIENWSW1hZ2VCdWZmZXJSZWYgQ1ZPcGVuR0xF
U1RleHR1cmVSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVGV4dHVyZUNhY2hl
Q1Y7Ci0KIGNsYXNzIFZpZGVvVGV4dHVyZUNvcGllckNWIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBWaWRlb1RleHR1cmVDb3BpZXJDVihHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCYpOwogICAgIH5WaWRlb1RleHR1cmVDb3BpZXJDVigpOwogCi0jaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKLSAgICB0eXBlZGVmIENWT3BlbkdMRVNUZXh0dXJlUmVmIFRleHR1cmVU
eXBlOwotI2Vsc2UKLSAgICB0eXBlZGVmIENWT3BlbkdMVGV4dHVyZVJlZiBUZXh0dXJlVHlwZTsK
LSNlbmRpZgotCiAgICAgYm9vbCBjb3B5SW1hZ2VUb1BsYXRmb3JtVGV4dHVyZShDVlBpeGVsQnVm
ZmVyUmVmLCBzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIFBsYXRmb3JtR0xPYmplY3Qgb3V0
cHV0VGV4dHVyZSwgR0NHTGVudW0gb3V0cHV0VGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51
bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHBy
ZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpOwotICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRv
UGxhdGZvcm1UZXh0dXJlKFRleHR1cmVUeXBlLCBzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQs
IFBsYXRmb3JtR0xPYmplY3Qgb3V0cHV0VGV4dHVyZSwgR0NHTGVudW0gb3V0cHV0VGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFksIGJvb2wgc3dh
cENvbG9yQ2hhbm5lbHMgPSBmYWxzZSk7CiAKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCYg
Y29udGV4dCgpIHsgcmV0dXJuIG1fY29udGV4dDsgfQogCkBAIC02NSwxOCArNTYsMTQgQEAgcHJp
dmF0ZToKICAgICAgICAgcmV0dXJuIG1fbGFzdFRleHR1cmVTZWVkLmdldCh0ZXh0dXJlKTsKICAg
ICB9CiAKLSNpZiBVU0UoQU5HTEUpCiAgICAgLy8gUmV0dXJucyBhIGhhbmRsZSB3aGljaCwgaWYg
bm9uLW51bGwsIG11c3QgYmUgcmVsZWFzZWQgdmlhIHRoZQogICAgIC8vIGRldGFjaCBjYWxsIGJl
bG93LgogICAgIHZvaWQqIGF0dGFjaElPU3VyZmFjZVRvVGV4dHVyZShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xlbnVtIHR5cGUsIElPU3VyZmFjZVJlZiwgR0NHTHVpbnQgcGxhbmUpOwogICAgIHZv
aWQgZGV0YWNoSU9TdXJmYWNlRnJvbVRleHR1cmUodm9pZCogaGFuZGxlKTsKLSNlbmRpZgogCiAg
ICAgUmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBtX3NoYXJlZENvbnRleHQ7CiAgICAgUmVm
PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBtX2NvbnRleHQ7Ci0jaWYgIVVTRShBTkdMRSkKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZUNhY2hlQ1Y+IG1fdGV4dHVyZUNhY2hlOwotI2VuZGlm
CisKICAgICBQbGF0Zm9ybUdMT2JqZWN0IG1fZnJhbWVidWZmZXIgeyAwIH07CiAgICAgUGxhdGZv
cm1HTE9iamVjdCBtX3Byb2dyYW0geyAwIH07CiAgICAgUGxhdGZvcm1HTE9iamVjdCBtX3ZlcnRl
eEJ1ZmZlciB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2lvcy9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTSU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9pb3MvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFU0lPUy5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOGVlMTAzMTg2YzgwOWQyNmExMTBkMmVmOGMwODA2
NzAzMzZjM2I1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTEVTSU9TLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgVVNF
KE9QRU5HTF9FUykKLQotI2RlZmluZSBnbEJpbmRGcmFtZWJ1ZmZlckVYVCBnbEJpbmRGcmFtZWJ1
ZmZlcgotI2RlZmluZSBnbEJpbmRSZW5kZXJidWZmZXJFWFQgZ2xCaW5kUmVuZGVyYnVmZmVyCi0j
ZGVmaW5lIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1c0VYVCBnbENoZWNrRnJhbWVidWZmZXJTdGF0
dXMKLSNkZWZpbmUgZ2xEZWxldGVGcmFtZWJ1ZmZlcnNFWFQgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMK
LSNkZWZpbmUgZ2xEZWxldGVSZW5kZXJidWZmZXJzRVhUIGdsRGVsZXRlUmVuZGVyYnVmZmVycwot
I2RlZmluZSBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUIGdsRnJhbWVidWZmZXJSZW5kZXJi
dWZmZXIKLSNkZWZpbmUgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyREVYVCBnbEZyYW1lYnVmZmVyVGV4
dHVyZTJECi0jZGVmaW5lIGdsR2VuZXJhdGVNaXBtYXBFWFQgZ2xHZW5lcmF0ZU1pcG1hcAotI2Rl
ZmluZSBnbEdlbkZyYW1lYnVmZmVyc0VYVCBnbEdlbkZyYW1lYnVmZmVycwotI2RlZmluZSBnbEdl
blJlbmRlcmJ1ZmZlcnNFWFQgZ2xHZW5SZW5kZXJidWZmZXJzCi0jZGVmaW5lIGdsR2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZFWFQgZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQ
YXJhbWV0ZXJpdgotI2RlZmluZSBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2RVhUIGdsR2V0
UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYKLSNkZWZpbmUgZ2xJc0ZyYW1lYnVmZmVyRVhUIGdsSXNG
cmFtZWJ1ZmZlcgotI2RlZmluZSBnbElzUmVuZGVyYnVmZmVyRVhUIGdsSXNSZW5kZXJidWZmZXIK
LSNkZWZpbmUgZ2xSZW5kZXJidWZmZXJTdG9yYWdlRVhUIGdsUmVuZGVyYnVmZmVyU3RvcmFnZQot
I2RlZmluZSBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUVYVCBnbFJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZUFQUExFCi0KLSNkZWZpbmUgZ2xEcmF3QXJyYXlzSW5zdGFuY2Vk
QVJCIGdsRHJhd0FycmF5c0luc3RhbmNlZEVYVAotI2RlZmluZSBnbERyYXdFbGVtZW50c0luc3Rh
bmNlZEFSQiBnbERyYXdFbGVtZW50c0luc3RhbmNlZEVYVAotI2RlZmluZSBnbFZlcnRleEF0dHJp
YkRpdmlzb3JBUkIgZ2xWZXJ0ZXhBdHRyaWJEaXZpc29yRVhUCi0KLSNkZWZpbmUgZ2xCaW5kVmVy
dGV4QXJyYXkgZ2xCaW5kVmVydGV4QXJyYXlPRVMKLSNkZWZpbmUgZ2xEZWxldGVWZXJ0ZXhBcnJh
eXMgZ2xEZWxldGVWZXJ0ZXhBcnJheXNPRVMKLSNkZWZpbmUgZ2xHZW5WZXJ0ZXhBcnJheXMgZ2xH
ZW5WZXJ0ZXhBcnJheXNPRVMKLSNkZWZpbmUgZ2xJc1ZlcnRleEFycmF5IGdsSXNWZXJ0ZXhBcnJh
eU9FUwotCi0jZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQwX0VYVCBHTF9DT0xPUl9BVFRBQ0hN
RU5UMAotI2RlZmluZSBHTF9ERVBUSDI0X1NURU5DSUw4X0VYVCBHTF9ERVBUSDI0X1NURU5DSUw4
X09FUwotI2RlZmluZSBHTF9ERVBUSF9BVFRBQ0hNRU5UX0VYVCAgR0xfREVQVEhfQVRUQUNITUVO
VAotI2RlZmluZSBHTF9EUkFXX0ZSQU1FQlVGRkVSX0VYVCBHTF9EUkFXX0ZSQU1FQlVGRkVSX0FQ
UExFCi0jZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFX0VYVCBHTF9GUkFNRUJVRkZFUl9D
T01QTEVURQotI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9FWFQgR0xfRlJBTUVCVUZGRVIKLSNkZWZp
bmUgR0xfTUFYX1NBTVBMRVNfRVhUIEdMX01BWF9TQU1QTEVTX0FQUExFCi0jZGVmaW5lIEdMX1JF
QURfRlJBTUVCVUZGRVJfRVhUIEdMX1JFQURfRlJBTUVCVUZGRVJfQVBQTEUKLSNkZWZpbmUgR0xf
UkVOREVSQlVGRkVSX0VYVCBHTF9SRU5ERVJCVUZGRVIKLSNpZm5kZWYgR0xfUkdCOAotI2RlZmlu
ZSBHTF9SR0I4IEdMX1JHQgotI2VuZGlmCi0jaWZuZGVmIEdMX1JHQkE4Ci0jZGVmaW5lIEdMX1JH
QkE4IEdMX1JHQkEKLSNlbmRpZgotI2RlZmluZSBHTF9TVEVOQ0lMX0FUVEFDSE1FTlRfRVhUIEdM
X1NURU5DSUxfQVRUQUNITUVOVAotI2RlZmluZSBHTF9VTlNJR05FRF9JTlRfOF84XzhfOF9SRVYg
R0xfVU5TSUdORURfQllURQotCi0jZW5kaWYgLy8gVVNFKE9QRU5HTF9FUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTC5jcHAKaW5kZXggOTYxMTI1NzIzNWQ1OGIwMTYwY2NiMjc2YmJkYTczOWRkYTMw
YjdiNC4uYmJkOWQ0NDZmOTFlZDVlMWJiYmE0ZDM3MDJkNDMyZjcxZWZmYTRlMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9w
ZW5HTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTC5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJFeHRlbnNpb25zR0xPcGVuR0wuaCIKIAotI2lmIEVOQUJMRShHUkFQSElD
U19DT05URVhUX0dMKSAmJiAoVVNFKE9QRU5HTCkgfHwgKFBMQVRGT1JNKENPQ09BKSAmJiBVU0Uo
T1BFTkdMX0VTKSkpCisjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfR0wpICYmIFVTRShPUEVO
R0wpCiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgogCkBAIC0zOCwxMCAr
MzgsNiBAQAogI2luY2x1ZGUgPE9wZW5HTC9nbC5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVNJT1MuaCIKLSNl
bmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEV4dGVuc2lvbnNHTE9wZW5HTDo6RXh0ZW5z
aW9uc0dMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBjb250ZXh0LCBib29sIHVzZUlu
ZGV4ZWRHZXRTdHJpbmcpCkBAIC01NCwyMSArNTAsNyBAQCBFeHRlbnNpb25zR0xPcGVuR0w6On5F
eHRlbnNpb25zR0xPcGVuR0woKSA9IGRlZmF1bHQ7CiAKIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
OjpibGl0RnJhbWVidWZmZXIobG9uZyBzcmNYMCwgbG9uZyBzcmNZMCwgbG9uZyBzcmNYMSwgbG9u
ZyBzcmNZMSwgbG9uZyBkc3RYMCwgbG9uZyBkc3RZMCwgbG9uZyBkc3RYMSwgbG9uZyBkc3RZMSwg
dW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nIGZpbHRlcikKIHsKLSNpZiBQTEFURk9S
TShDT0NPQSkgJiYgVVNFKE9QRU5HTF9FUykKLSAgICBVTlVTRURfUEFSQU0oc3JjWDApOwotICAg
IFVOVVNFRF9QQVJBTShzcmNZMCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNyY1gxKTsKLSAgICBVTlVT
RURfUEFSQU0oc3JjWTEpOwotICAgIFVOVVNFRF9QQVJBTShkc3RYMCk7Ci0gICAgVU5VU0VEX1BB
UkFNKGRzdFkwKTsKLSAgICBVTlVTRURfUEFSQU0oZHN0WDEpOwotICAgIFVOVVNFRF9QQVJBTShk
c3RZMSk7Ci0gICAgVU5VU0VEX1BBUkFNKG1hc2spOwotICAgIFVOVVNFRF9QQVJBTShmaWx0ZXIp
OwotICAgIDo6Z2xSZXNvbHZlTXVsdGlzYW1wbGVGcmFtZWJ1ZmZlckFQUExFKCk7Ci0jZWxzZQog
ICAgIDo6Z2xCbGl0RnJhbWVidWZmZXJFWFQoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRz
dFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpOwotI2VuZGlmCiB9CiAKIHZv
aWQgRXh0ZW5zaW9uc0dMT3BlbkdMOjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodW5z
aWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcywgdW5zaWduZWQgbG9uZyBp
bnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQp
CkBAIC04MCw3ICs2Miw3IEBAIFBsYXRmb3JtR0xPYmplY3QgRXh0ZW5zaW9uc0dMT3BlbkdMOjpj
cmVhdGVWZXJ0ZXhBcnJheU9FUygpCiB7CiAgICAgbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKTsKICAgICBHTHVpbnQgYXJyYXkgPSAwOwotI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZP
Uk0oV0lOKSB8fCAoUExBVEZPUk0oQ09DT0EpICYmIFVTRShPUEVOR0xfRVMpKQorI2lmIFBMQVRG
T1JNKEdUSykgfHwgUExBVEZPUk0oV0lOKQogICAgIGlmIChpc1ZlcnRleEFycmF5T2JqZWN0U3Vw
cG9ydGVkKCkpCiAgICAgICAgIGdsR2VuVmVydGV4QXJyYXlzKDEsICZhcnJheSk7CiAjZWxpZiBk
ZWZpbmVkKEdMX0FQUExFX3ZlcnRleF9hcnJheV9vYmplY3QpICYmIEdMX0FQUExFX3ZlcnRleF9h
cnJheV9vYmplY3QKQEAgLTk1LDcgKzc3LDcgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRl
bGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJyYXkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0jaWYgUExBVEZPUk0o
R1RLKSB8fCBQTEFURk9STShXSU4pIHx8IChQTEFURk9STShDT0NPQSkgJiYgVVNFKE9QRU5HTF9F
UykpCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pCiAgICAgaWYgKGlzVmVydGV4
QXJyYXlPYmplY3RTdXBwb3J0ZWQoKSkKICAgICAgICAgZ2xEZWxldGVWZXJ0ZXhBcnJheXMoMSwg
JmFycmF5KTsKICNlbGlmIGRlZmluZWQoR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCkgJiYg
R0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdApAQCAtMTA5LDcgKzkxLDcgQEAgR0NHTGJvb2xl
YW4gRXh0ZW5zaW9uc0dMT3BlbkdMOjppc1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3Qg
YXJyYXkpCiAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKIAogICAgIG1fY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCk7Ci0jaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pIHx8IChQ
TEFURk9STShDT0NPQSkgJiYgVVNFKE9QRU5HTF9FUykpCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQ
TEFURk9STShXSU4pCiAgICAgaWYgKGlzVmVydGV4QXJyYXlPYmplY3RTdXBwb3J0ZWQoKSkKICAg
ICAgICAgcmV0dXJuIGdsSXNWZXJ0ZXhBcnJheShhcnJheSk7CiAjZWxpZiBkZWZpbmVkKEdMX0FQ
UExFX3ZlcnRleF9hcnJheV9vYmplY3QpICYmIEdMX0FQUExFX3ZlcnRleF9hcnJheV9vYmplY3QK
QEAgLTEyMSw3ICsxMDMsNyBAQCBHQ0dMYm9vbGVhbiBFeHRlbnNpb25zR0xPcGVuR0w6OmlzVmVy
dGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcnJheSkKIHZvaWQgRXh0ZW5zaW9uc0dMT3Bl
bkdMOjpiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcnJheSkKIHsKICAgICBt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwotI2lmIFBMQVRGT1JNKEdUSykgfHwgUExB
VEZPUk0oV0lOKSB8fCAoUExBVEZPUk0oQ09DT0EpICYmIFVTRShPUEVOR0xfRVMpKQorI2lmIFBM
QVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV0lOKQogICAgIGlmIChpc1ZlcnRleEFycmF5T2JqZWN0
U3VwcG9ydGVkKCkpCiAgICAgICAgIGdsQmluZFZlcnRleEFycmF5KGFycmF5KTsKICNlbGlmIGRl
ZmluZWQoR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCkgJiYgR0xfQVBQTEVfdmVydGV4X2Fy
cmF5X29iamVjdApAQCAtMTU2LDMwICsxMzgsMTcgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6
OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICBpZiAobmFtZSA9PSAi
R0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCIpCiAgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4
dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9ibGl0Iik7CiAgICAgaWYgKG5h
bWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIikKLSNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9BUFBMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpOwotI2Vsc2UKICAgICAgICAgcmV0
dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVyX211
bHRpc2FtcGxlIik7Ci0jZW5kaWYKLQogICAgIGlmIChuYW1lID09ICJHTF9BTkdMRV9pbnN0YW5j
ZWRfYXJyYXlzIikgewogICAgICAgICByZXR1cm4gKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250
YWlucygiR0xfQVJCX2luc3RhbmNlZF9hcnJheXMiKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0VYVF9pbnN0YW5jZWRfYXJyYXlzIikpCiAgICAgICAgICAgICAmJiAobV9h
dmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19pbnN0YW5jZWQiKSB8fCBt
X2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCIpKTsK
ICAgICB9CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX3NSR0IiKQotI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMo
IkdMX0VYVF9zUkdCIik7Ci0jZWxzZQogICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9zUkdCIikgJiYgKG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVyX3NSR0IiKSB8fCBtX2F2YWlsYWJsZUV4
dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9mcmFtZWJ1ZmZlcl9zUkdCIikpOwotI2VuZGlmCiAK
ICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX2ZyYWdfZGVwdGgiKQotI2lmIFBMQVRGT1JNKE1BQykK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0jZWxzZQogICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhZ19kZXB0aCIpOwotI2VuZGlmCiAKICAgICAv
LyBEZXNrdG9wIEdMIGFsd2F5cyBzdXBwb3J0cyBHTF9PRVNfcmdiOF9yZ2JhOC4KICAgICBpZiAo
bmFtZSA9PSAiR0xfT0VTX3JnYjhfcmdiYTgiKQpAQCAtMTk0LDggKzE2Myw2IEBAIGJvb2wgRXh0
ZW5zaW9uc0dMT3BlbkdMOjpzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAg
ICAgaWYgKG5hbWUgPT0gIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IikgewogI2lmIChQTEFU
Rk9STShHVEspKQogICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9BUkJfdmVydGV4X2FycmF5X29iamVjdCIpOwotI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfT0VT
X3ZlcnRleF9hcnJheV9vYmplY3QiKTsKICNlbHNlCiAgICAgICAgIHJldHVybiBtX2F2YWlsYWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FQUExFX3ZlcnRleF9hcnJheV9vYmplY3QiKTsKICNl
bmRpZgpAQCAtMjE2LDkgKzE4Myw3IEBAIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjpzdXBwb3J0
c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgIHJldHVybiBtX2F2YWlsYWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIp
OwogCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKSB7Ci0jaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250
YWlucyhuYW1lKTsKLSNlbGlmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oR1RLKQorI2lmIFBM
QVRGT1JNKEdUSykKICAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfQVJCX2RyYXdfYnVmZmVycyIpOwogI2Vsc2UKICAgICAgICAgLy8gRklYTUU6IGltcGxl
bWVudCBzdXBwb3J0IGZvciBvdGhlciBwbGF0Zm9ybXMuCkBAIC0yMjYsMjYgKzE5MSwxMyBAQCBi
b29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6c3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBu
YW1lKQogI2VuZGlmCiAgICAgfQogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgUExBVEZP
Uk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCi0gICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9wYWNrZWRf
ZGVwdGhfc3RlbmNpbCIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOwotCi0gICAgaWYgKG5hbWUgPT0g
IkdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlIgotICAgICAgICB8fCBuYW1lID09
ICJHTF9BTkdMRV9jb21wcmVzc2VkX3RleHR1cmVfZXRjIikgewotICAgICAgICAvLyBJbXBsaWNp
dGx5IGVuYWJsZWQgd2l0aCBFUyAzLjAgY29udGV4dHMuCi0gICAgICAgIHJldHVybiBtX2NvbnRl
eHQtPm1faXNGb3JXZWJHTDI7Ci0gICAgfQotI2VuZGlmCi0KICAgICByZXR1cm4gbV9hdmFpbGFi
bGVFeHRlbnNpb25zLmNvbnRhaW5zKG5hbWUpOwogfQogCiB2b2lkIEV4dGVuc2lvbnNHTE9wZW5H
TDo6ZHJhd0J1ZmZlcnNFWFQoR0NHTHNpemVpIG4sIGNvbnN0IEdDR0xlbnVtKiBidWZzKQogewog
ICAgIC8vICBGSVhNRTogaW1wbGVtZW50IHN1cHBvcnQgZm9yIG90aGVyIHBsYXRmb3Jtcy4KLSNp
ZiBQTEFURk9STShNQUMpCi0gICAgOjpnbERyYXdCdWZmZXJzQVJCKG4sIGJ1ZnMpOwotI2VsaWYg
UExBVEZPUk0oR1RLKQorI2lmIFBMQVRGT1JNKEdUSykKICAgICA6OmdsRHJhd0J1ZmZlcnMobiwg
YnVmcyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShuKTsKQEAgLTI1OCw4ICsyMTAsNiBAQCB2
b2lkIEV4dGVuc2lvbnNHTE9wZW5HTDo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2Rl
LCBHQ0dMaW50IGZpcnN0LCBHQ0dMcwogICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCk7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIDo6Z2xEcmF3QXJyYXlzSW5zdGFuY2VkKG1vZGUs
IGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKLSNlbGlmIFBMQVRGT1JNKENPQ09BKQotICAgIDo6
Z2xEcmF3QXJyYXlzSW5zdGFuY2VkQVJCKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG1vZGUpOwogICAgIFVOVVNFRF9QQVJBTShmaXJzdCk7
CkBAIC0yNzMsOCArMjIzLDYgQEAgdm9pZCBFeHRlbnNpb25zR0xPcGVuR0w6OmRyYXdFbGVtZW50
c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEcKICAgICBtX2NvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICA6OmdsRHJh
d0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCByZWludGVycHJldF9jYXN0PEdM
dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKSwgcHJpbWNvdW50KTsKLSNlbGlm
IFBMQVRGT1JNKENPQ09BKQotICAgIDo6Z2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBUkIobW9kZSwg
Y291bnQsIHR5cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRy
X3Q+KG9mZnNldCkpLCBwcmltY291bnQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obW9kZSk7
CiAgICAgVU5VU0VEX1BBUkFNKGNvdW50KTsKQEAgLTI4OSw4ICsyMzcsNiBAQCB2b2lkIEV4dGVu
c2lvbnNHTE9wZW5HTDo6dmVydGV4QXR0cmliRGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVp
bnQgZGl2aXNvcikKICAgICBtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogI2lmIFBM
QVRGT1JNKEdUSykKICAgICA6OmdsVmVydGV4QXR0cmliRGl2aXNvcihpbmRleCwgZGl2aXNvcik7
Ci0jZWxpZiBQTEFURk9STShDT0NPQSkKLSAgICA6OmdsVmVydGV4QXR0cmliRGl2aXNvckFSQihp
bmRleCwgZGl2aXNvcik7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShpbmRleCk7CiAgICAgVU5V
U0VEX1BBUkFNKGRpdmlzb3IpOwpAQCAtMzAzLDcgKzI0OSw3IEBAIFN0cmluZyBFeHRlbnNpb25z
R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQogICAgIHJldHVybiBTdHJpbmcocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4oOjpnbEdldFN0cmluZyhHTF9FWFRFTlNJT05TKSkpOwogfQogCi0j
aWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pIHx8IChQTEFURk9STShDT0NPQSkgJiYg
VVNFKE9QRU5HTF9FUykpCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pCiBib29s
IEV4dGVuc2lvbnNHTE9wZW5HTDo6aXNWZXJ0ZXhBcnJheU9iamVjdFN1cHBvcnRlZCgpCiB7CiAg
ICAgc3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdCA9IHN1cHBvcnRz
KCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIpOwpAQCAtMzEzLDQgKzI1OSw0IEBAIGJvb2wg
RXh0ZW5zaW9uc0dMT3BlbkdMOjppc1ZlcnRleEFycmF5T2JqZWN0U3VwcG9ydGVkKCkKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRf
R0wpICYmIChVU0UoT1BFTkdMKSB8fCAoUExBVEZPUk0oQ09DT0EpICYmIFVTRShPUEVOR0xfRVMp
KSkKKyNlbmRpZiAvLyBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkgJiYgVVNFKE9QRU5HTCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0wuaAppbmRleCBlNDkyMjRiZjFlNzRhMDYxYTdkN2FlMTYzNGQ0
YTc2ZDQwZmFmZGFlLi5kM2JlOGNjMjhjMTdjMmRmNWQzYjQ4NjZiYjNjNWY5NDRjNDU1ZjIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5oCkBAIC02MSw3ICs2MSw3IEBAIHByb3RlY3RlZDoKICAg
ICBTdHJpbmcgZ2V0RXh0ZW5zaW9ucygpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotI2lmIFBMQVRG
T1JNKEdUSykgfHwgUExBVEZPUk0oV0lOKSB8fCAoUExBVEZPUk0oQ09DT0EpICYmIFVTRShPUEVO
R0xfRVMpKQorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV0lOKQogICAgIGJvb2wgaXNW
ZXJ0ZXhBcnJheU9iamVjdFN1cHBvcnRlZCgpOwogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uLmNwcAppbmRleCBkMGVlYWUwMmFiMGFkYjQ3ZGFkYjFjZjdlMjRi
MzExNDhhZTg4NjQ2Li44MDYxMGRlN2Q0MzFjZjQyNjI5OTdmNGZmY2UzN2I2YmUxZWU3NDA0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcApAQCAtMjE0LDcgKzIxNCw3
IEBAIFN0cmluZyBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0CiAKIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjppbml0aWFsaXplQXZhaWxhYmxlRXh0ZW5zaW9ucygpCiB7Ci0jaWYgKFBMQVRGT1JNKENP
Q09BKSAmJiBVU0UoT1BFTkdMKSkgfHwgKFBMQVRGT1JNKEdUSykgJiYgIVVTRShPUEVOR0xfRVMp
KQorI2lmIFBMQVRGT1JNKEdUSykgJiYgIVVTRShPUEVOR0xfRVMpCiAgICAgaWYgKG1fdXNlSW5k
ZXhlZEdldFN0cmluZykgewogICAgICAgICBHTGludCBudW1FeHRlbnNpb25zID0gMDsKICAgICAg
ICAgOjpnbEdldEludGVnZXJ2KEdMX05VTV9FWFRFTlNJT05TLCAmbnVtRXh0ZW5zaW9ucyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcAppbmRleCBiZDVjNmU2NmYzMTE3YmFi
ZmVlZGRjMTJkOTEzNmYzYTVhZjlmYWI2Li5jMWY5MjY1YjE2OTVhNWQ2NGMzN2NmYWY1YzhjMDRk
YzA5YzU4MWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTgw
OCwxMyArODA4LDExIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhY2tQaXhlbHMo
Y29uc3QgdWludDhfdCogc291cmNlRGF0YSwgRGF0YUZvcm1hdCBzCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLSNpZiAhKFBMQVRGT1JNKENPQ09BKSAmJiAoVVNFKE9QRU5HTCkgfHwgVVNFKEFOR0xF
KSkpCisjaWYgIVBMQVRGT1JNKENPQ09BKQogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
c2V0Q29udGV4dFZpc2liaWxpdHkoYm9vbCkKIHsKIH0KLSNlbmRpZgogCi0jaWYgIVBMQVRGT1JN
KENPQ09BKQogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6c2ltdWxhdGVDb250ZXh0Q2hh
bmdlZCgpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IDc3MTlj
OTE0MTMyNGJiNmU5OTI1YzRlNDc4ZjlkYTU2YTQ4YzE2ZTcuLmY4NTgyYzYxN2IwNzY4YTA1MzQy
NGFlOTdiN2M5YzY2MmNlMDMwYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5o
CkBAIC0yNyw3ICsyNyw2IEBACiAKICNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkKIAot
I2luY2x1ZGUgIkFOR0xFV2ViS2l0QnJpZGdlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
R0wuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+
CkBAIC00MCw2ICszOSwxMCBAQAogI2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXllci5oIgogI2VuZGlm
CiAKKyNpZiAhVVNFKEFOR0xFKQorI2luY2x1ZGUgIkFOR0xFV2ViS2l0QnJpZGdlLmgiCisjZW5k
aWYKKwogLy8gRklYTUU6IEZpbmQgYSBiZXR0ZXIgd2F5IHRvIGF2b2lkIHRoZSBuYW1lIGNvbmZs
aWN0aW9uIGZvciBOT19FUlJPUi4KICNpZiBQTEFURk9STShXSU4pCiAjdW5kZWYgTk9fRVJST1IK
QEAgLTQ5LDEyICs1Miw2IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotI2lmIFVT
RShPUEVOR0xfRVMpCi0jaW5jbHVkZSA8T3BlbkdMRVMvRVMyL2dsLmg+Ci0jaWZkZWYgX19PQkpD
X18KLSNpbXBvcnQgPE9wZW5HTEVTL0VBR0wuaD4KLSNlbmRpZiAvLyBfX09CSkNfXwotI2VuZGlm
IC8vIFVTRShPUEVOR0xfRVMpCiBPQkpDX0NMQVNTIENBTGF5ZXI7CiBPQkpDX0NMQVNTIFdlYkdM
TGF5ZXI7CiB0eXBlZGVmIHN0cnVjdCBfX0lPU3VyZmFjZSogSU9TdXJmYWNlUmVmOwpAQCAtNzAs
OSArNjcsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBFeHRlbnNpb25zR0w7CiAjaWYg
VVNFKEFOR0xFKQogY2xhc3MgRXh0ZW5zaW9uc0dMQU5HTEU7Ci0jZWxpZiAhUExBVEZPUk0oQ09D
T0EpICYmIFVTRShPUEVOR0xfRVMpCisjZWxpZiBVU0UoT1BFTkdMX0VTKQogY2xhc3MgRXh0ZW5z
aW9uc0dMT3BlbkdMRVM7Ci0jZWxpZiBVU0UoT1BFTkdMKSB8fCAoUExBVEZPUk0oQ09DT0EpICYm
IFVTRShPUEVOR0xfRVMpKQorI2VsaWYgVVNFKE9QRU5HTCkKIGNsYXNzIEV4dGVuc2lvbnNHTE9w
ZW5HTDsKICNlbmRpZgogY2xhc3MgSG9zdFdpbmRvdzsKQEAgLTEwMiwxNiArOTksMTQgQEAgcHVi
bGljOgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgc3RhdGljIFJlZjxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTD4gY3JlYXRlU2hhcmVkKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiBzaGFyZWRD
b250ZXh0KTsKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUGxhdGZvcm1HcmFw
aGljc0NvbnRleHRHTCBwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9jb250ZXh0T2JqOyB9CiAgICAgUGxhdGZvcm1HTE9iamVjdCBwbGF0Zm9ybVRl
eHR1cmUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3RleHR1cmU7IH0KICAgICBDQUxheWVy
KiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxDQUxheWVyKj4obV93ZWJHTExheWVyLmdldCgpKTsgfQotI2lmIFVTRShBTkdMRSkKICAgICBQ
bGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMRGlzcGxheSBwbGF0Zm9ybURpc3BsYXkoKSBjb25zdCB7
IHJldHVybiBtX2Rpc3BsYXlPYmo7IH0KICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMQ29u
ZmlnIHBsYXRmb3JtQ29uZmlnKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWdPYmo7IH0KLSNlbmRp
ZiAvLyBVU0UoQU5HTEUpCisgICAgc3RhdGljIEdDR0xlbnVtIElPU3VyZmFjZVRleHR1cmVUYXJn
ZXQoKTsKKyAgICBzdGF0aWMgR0NHTGVudW0gSU9TdXJmYWNlVGV4dHVyZVRhcmdldFF1ZXJ5KCk7
CisgICAgc3RhdGljIEdDR0xpbnQgRUdMSU9TdXJmYWNlVGV4dHVyZVRhcmdldCgpOwogI2Vsc2UK
ICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMIHBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wo
KSBjb25zdCBmaW5hbDsKICAgICBQbGF0Zm9ybUdMT2JqZWN0IHBsYXRmb3JtVGV4dHVyZSgpIGNv
bnN0IGZpbmFsOwpAQCAtMTE5LDcgKzExNCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgYm9v
bCBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBVU0Uo
QU5HTEUpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBlbnVtIGNsYXNzIFJlbGVhc2VC
ZWhhdmlvciB7CiAgICAgICAgIFByZXNlcnZlVGhyZWFkUmVzb3VyY2VzLAogICAgICAgICBSZWxl
YXNlVGhyZWFkUmVzb3VyY2VzCkBAIC01NDgsMTkgKzU0MywxMSBAQCBwdWJsaWM6CiAjZW5kaWYK
IAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJvb2wgdGV4SW1hZ2VJT1N1cmZhY2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgSU9TdXJmYWNl
UmVmLCBHQ0dMdWludCBwbGFuZSk7Ci0KLSNpZiBVU0UoT1BFTkdMX0VTKQotICAgIHZvaWQgcHJl
c2VudFJlbmRlcmJ1ZmZlcigpOwotI2VuZGlmCi0KLSNpZiBVU0UoT1BFTkdMKSB8fCBVU0UoQU5H
TEUpCiAgICAgYm9vbCBhbGxvY2F0ZUlPU3VyZmFjZUJhY2tpbmdTdG9yZShJbnRTaXplKTsKICAg
ICB2b2lkIHVwZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZUJhY2tpbmdTdG9yZUZyb21MYXllcigpOwot
I2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisjaWYgUExBVEZPUk0o
TUFDKQogICAgIHZvaWQgdXBkYXRlQ0dMQ29udGV4dCgpOwogI2VuZGlmCi0jZW5kaWYKICNlbmRp
ZiAvLyBQTEFURk9STShDT0NPQSkKIAogICAgIHZvaWQgc2V0Q29udGV4dFZpc2liaWxpdHkoYm9v
bCk7CkBAIC02OTUsNyArNjgyLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgcmVzaGFwZUZCT3Mo
Y29uc3QgSW50U2l6ZSYpOwogICAgIHZvaWQgcmVzb2x2ZU11bHRpc2FtcGxpbmdJZk5lY2Vzc2Fy
eShjb25zdCBJbnRSZWN0JiA9IEludFJlY3QoKSk7Ci0gICAgdm9pZCBhdHRhY2hEZXB0aEFuZFN0
ZW5jaWxCdWZmZXJJZk5lZWRlZChHTHVpbnQgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQsIGlu
dCB3aWR0aCwgaW50IGhlaWdodCk7CisgICAgdm9pZCBhdHRhY2hEZXB0aEFuZFN0ZW5jaWxCdWZm
ZXJJZk5lZWRlZChHQ0dMdWludCBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCwgaW50IHdpZHRo
LCBpbnQgaGVpZ2h0KTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wgYWxsb3dPZmZs
aW5lUmVuZGVyZXJzKCkgY29uc3Q7CkBAIC03MDcsMTYgKzY5NCwxNSBAQCBwcml2YXRlOgogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBtX3dlYkdMTGF5ZXI7
CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCBtX2NvbnRleHRPYmogeyBudWxscHRyIH07
Ci0jaWYgVVNFKEFOR0xFKQogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xEaXNwbGF5IG1f
ZGlzcGxheU9iaiB7IG51bGxwdHIgfTsKICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMQ29u
ZmlnIG1fY29uZmlnT2JqIHsgbnVsbHB0ciB9OwotI2VuZGlmIC8vIFVTRShBTkdMRSkKICNlbmRp
ZiAvLyBQTEFURk9STShDT0NPQSkKIAogI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKENBKQogICAg
IFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IG1fd2ViR0xMYXllcjsKICNlbmRpZgogCisjaWYgIVVT
RShBTkdMRSkKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBzaDo6U2hhZGVyVmFyaWFibGU+
IFNoYWRlclN5bWJvbE1hcDsKIAogICAgIHN0cnVjdCBTaGFkZXJTb3VyY2VFbnRyeSB7CkBAIC03
NDUsNyArNzMxLDYgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH07CiAKLSNpZiAhVVNFKEFO
R0xFKQogICAgIC8vIEZJWE1FOiBTaGFkZXJzIGFyZSBuZXZlciByZW1vdmVkIGZyb20gdGhpcyBt
YXAsIGV2ZW4gaWYgdGhleSBhbmQgdGhlaXIgcHJvZ3JhbSBhcmUgZGVsZXRlZC4KICAgICAvLyBU
aGlzIGlzIGJhZCwgYW5kIGl0IGFsc28gcmVsaWVzIG9uIHRoZSBmYWN0IHdlIG5ldmVyIHJldXNl
IFBsYXRmb3JtR0xPYmplY3QgbnVtYmVycy4KICAgICB0eXBlZGVmIEhhc2hNYXA8UGxhdGZvcm1H
TE9iamVjdCwgU2hhZGVyU291cmNlRW50cnk+IFNoYWRlclNvdXJjZU1hcDsKQEAgLTc4OSwxMSAr
Nzc0LDExIEBAIHByaXZhdGU6CiAjaWYgVVNFKEFOR0xFKQogICAgIGZyaWVuZCBjbGFzcyBFeHRl
bnNpb25zR0xBTkdMRTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uc0dMQU5HTEU+IG1f
ZXh0ZW5zaW9uczsKLSNlbGlmICFQTEFURk9STShDT0NPQSkgJiYgVVNFKE9QRU5HTF9FUykKKyNl
bGlmIFVTRShPUEVOR0xfRVMpCiAgICAgZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnNHTE9wZW5HTEVT
OwogICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0xDb21tb247CiAgICAgc3RkOjp1
bmlxdWVfcHRyPEV4dGVuc2lvbnNHTE9wZW5HTEVTPiBtX2V4dGVuc2lvbnM7Ci0jZWxpZiBVU0Uo
T1BFTkdMKSB8fCAoUExBVEZPUk0oQ09DT0EpICYmIFVTRShPUEVOR0xfRVMpKQorI2VsaWYgVVNF
KE9QRU5HTCkKICAgICBmcmllbmQgY2xhc3MgRXh0ZW5zaW9uc0dMT3BlbkdMOwogICAgIGZyaWVu
ZCBjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0xDb21tb247CiAgICAgc3RkOjp1bmlxdWVfcHRyPEV4
dGVuc2lvbnNHTE9wZW5HTD4gbV9leHRlbnNpb25zOwpAQCAtODIwLDEwICs4MDUsNiBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9sYXllckNvbXBvc2l0ZWQgeyBmYWxzZSB9OwogICAgIEdDR0x1aW50
IG1faW50ZXJuYWxDb2xvckZvcm1hdCB7IDAgfTsKIAotI2lmIFVTRShBTkdMRSkgJiYgUExBVEZP
Uk0oQ09DT0EpCi0gICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTFN1cmZhY2UgbV9wYnVmZmVy
OwotI2VuZGlmCi0KICAgICBzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0R0xTdGF0ZSB7CiAgICAgICAg
IEdDR0x1aW50IGJvdW5kUmVhZEZCTyB7IDAgfTsKICAgICAgICAgR0NHTHVpbnQgYm91bmREcmF3
RkJPIHsgMCB9OwpAQCAtOTA4LDEzICs4ODksOSBAQCBwcml2YXRlOgogICAgIFBsYXRmb3JtR0xP
YmplY3QgbV92YW8geyAwIH07CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAoVVNF
KE9QRU5HTCkgfHwgVVNFKEFOR0xFKSkKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBib29sIG1f
aGFzU3dpdGNoZWRUb0hpZ2hQZXJmb3JtYW5jZUdQVSB7IGZhbHNlIH07CiAjZW5kaWYKLQotI2lm
IFBMQVRGT1JNKE1BQykgJiYgVVNFKE9QRU5HTCkKLSAgICBib29sIG1fbmVlZHNGbHVzaEJlZm9y
ZURlbGV0ZVRleHR1cmVzIHsgZmFsc2UgfTsKLSNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAppbmRl
eCBjNGY4YjZhMWUyOTA3ZWRmYTA3ZGYwYzZlYjc5Nzg3M2JkZDY5MzkzLi5iNThiYjAyY2U3Zjhh
ZDNjZTliYWZhMTYxNWY3NGYyNjc2NWFjYWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xCYXNlLmNwcApAQCAtMjcsMTEgKzI3LDggQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIgogCi0jaWYgRU5BQkxFKEdS
QVBISUNTX0NPTlRFWFRfR0wpICYmIChVU0UoT1BFTkdMKSB8fCAoUExBVEZPUk0oQ09DT0EpICYm
IFVTRShPUEVOR0xfRVMpKSkKKyNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkgJiYgVVNF
KE9QRU5HTCkKIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0jaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xFU0lPUy5oIgotI2VuZGlmCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMT3Bl
bkdMLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKQEAgLTYz
LDE2ICs2MCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmIFBMQVRGT1JNKE1BQykK
LXN0YXRpYyB2b2lkIHdpcGVBbHBoYUNoYW5uZWxGcm9tUGl4ZWxzKGludCB3aWR0aCwgaW50IGhl
aWdodCwgdW5zaWduZWQgY2hhciogcGl4ZWxzKQotewotICAgIC8vIFdlIGNhbiBhc3N1bWUgdGhp
cyBkb2Vzbid0IG92ZXJmbG93IGJlY2F1c2UgdGhlIGNhbGxpbmcgZnVuY3Rpb25zCi0gICAgLy8g
dXNlIGNoZWNrZWQgYXJpdGhtZXRpYy4KLSAgICBpbnQgdG90YWxCeXRlcyA9IHdpZHRoICogaGVp
Z2h0ICogNDsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHRvdGFsQnl0ZXM7IGkgKz0gNCkKLSAg
ICAgICAgcGl4ZWxzW2kgKyAzXSA9IDI1NTsKLX0KLSNlbmRpZgogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzQW5kQ29udmVydFRvQkdSQUlmTmVjZXNzYXJ5KGludCB4
LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCB1bnNpZ25lZCBjaGFyKiBwaXhlbHMpCiB7
CkBAIC0xMDUsMTAgKzkyLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBp
eGVsc0FuZENvbnZlcnRUb0JHUkFJZk5lY2Vzc2FyeShpbnQgeCwgaW50IHkKICAgICB9IGVsc2UK
ICAgICAgICAgOjpnbFJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgR0xfQkdSQSwgR0xf
VU5TSUdORURfSU5UXzhfOF84XzhfUkVWLCBwaXhlbHMpOwogCi0jaWYgUExBVEZPUk0oTUFDKQot
ICAgIGlmICghYXR0cnMuYWxwaGEpCi0gICAgICAgIHdpcGVBbHBoYUNoYW5uZWxGcm9tUGl4ZWxz
KHdpZHRoLCBoZWlnaHQsIHBpeGVscyk7Ci0jZW5kaWYKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKQEAgLTEzOCwxMSArMTIxLDcgQEAgYm9v
bCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6
ZSkKICAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0VYVF9wYWNrZWRfZGVwdGhf
c3RlbmNpbCIpKQogICAgICAgICAgICAgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQgPSBHTF9E
RVBUSDI0X1NURU5DSUw4X0VYVDsKICAgICAgICAgZWxzZQotI2lmIFBMQVRGT1JNKENPQ09BKSAm
JiBVU0UoT1BFTkdMX0VTKQotICAgICAgICAgICAgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQg
PSBHTF9ERVBUSF9DT01QT05FTlQxNjsKLSNlbHNlCiAgICAgICAgICAgICBpbnRlcm5hbERlcHRo
U3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVOVDsKLSNlbmRpZgogICAgIH0KIAogICAg
IC8vIFJlc2l6ZSBtdWx0aXNhbXBsZSBGQk8uCkBAIC0xNTQsMTEgKzEzMyw3IEBAIGJvb2wgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAg
ICAgICAgIEdMaW50IHNhbXBsZUNvdW50ID0gc3RkOjptaW4oNCwgbWF4U2FtcGxlQ291bnQpOwog
ICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9tdWx0
aXNhbXBsZUZCTyk7CiAgICAgICAgIDo6Z2xCaW5kUmVuZGVyYnVmZmVyRVhUKEdMX1JFTkRFUkJV
RkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVDb2xvckJ1ZmZlcik7Ci0jaWYgUExBVEZPUk0oQ09DT0Ep
ICYmIFVTRShPUEVOR0xfRVMpCi0gICAgICAgIDo6Z2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlz
YW1wbGVFWFQoR0xfUkVOREVSQlVGRkVSX0VYVCwgc2FtcGxlQ291bnQsIEdMX1JHQkE4X09FUywg
d2lkdGgsIGhlaWdodCk7Ci0jZWxzZQogICAgICAgICA6OmdsUmVuZGVyYnVmZmVyU3RvcmFnZU11
bHRpc2FtcGxlRVhUKEdMX1JFTkRFUkJVRkZFUl9FWFQsIHNhbXBsZUNvdW50LCBtX2ludGVybmFs
Q29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwotI2VuZGlmCiAgICAgICAgIDo6Z2xGcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIEdMX0NPTE9SX0FUVEFDSE1F
TlQwX0VYVCwgR0xfUkVOREVSQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVyKTsK
ICAgICAgICAgaWYgKGF0dHJzLnN0ZW5jaWwgfHwgYXR0cnMuZGVwdGgpIHsKICAgICAgICAgICAg
IDo6Z2xCaW5kUmVuZGVyYnVmZmVyRVhUKEdMX1JFTkRFUkJVRkZFUl9FWFQsIG1fbXVsdGlzYW1w
bGVEZXB0aFN0ZW5jaWxCdWZmZXIpOwpAQCAtMjUyLDI3ICsyMjcsMTMgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cmVzb2x2ZU11bHRpc2FtcGxpbmdJZk5lY2Vzc2FyeShjb25zdCBJ
bnRSZWN0JiByZWMKICAgICBUZW1wb3JhcnlPcGVuR0xTZXR0aW5nIHNjb3BlZERlcHRoKEdMX0RF
UFRIX1RFU1QsIEdMX0ZBTFNFKTsKICAgICBUZW1wb3JhcnlPcGVuR0xTZXR0aW5nIHNjb3BlZFN0
ZW5jaWwoR0xfU1RFTkNJTF9URVNULCBHTF9GQUxTRSk7CiAKLSNpZiBQTEFURk9STShDT0NPQSkg
JiYgVVNFKE9QRU5HTF9FUykKLSAgICBHTGludCBib3VuZEZyYW1lQnVmZmVyOwotICAgIDo6Z2xH
ZXRJbnRlZ2VydihHTF9GUkFNRUJVRkZFUl9CSU5ESU5HLCAmYm91bmRGcmFtZUJ1ZmZlcik7Ci0j
ZW5kaWYKLQogICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfUkVBRF9GUkFNRUJVRkZFUl9F
WFQsIG1fbXVsdGlzYW1wbGVGQk8pOwogICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRFJB
V19GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKE9Q
RU5HTF9FUykKLSAgICBVTlVTRURfUEFSQU0ocmVjdCk7Ci0gICAgOjpnbEZsdXNoKCk7Ci0gICAg
OjpnbFJlc29sdmVNdWx0aXNhbXBsZUZyYW1lYnVmZmVyQVBQTEUoKTsKLSAgICBjb25zdCBHTGVu
dW0gZGlzY2FyZHNbXSA9IHsgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX0RFUFRIX0FUVEFDSE1F
TlQgfTsKLSAgICA6OmdsRGlzY2FyZEZyYW1lYnVmZmVyRVhUKEdMX1JFQURfRlJBTUVCVUZGRVJf
QVBQTEUsIDIsIGRpc2NhcmRzKTsKLSAgICA6OmdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVG
RkVSLCBib3VuZEZyYW1lQnVmZmVyKTsKLSNlbHNlCiAgICAgSW50UmVjdCByZXNvbHZlUmVjdCA9
IHJlY3Q7CiAgICAgaWYgKHJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXNvbHZlUmVjdCA9IElu
dFJlY3QoMCwgMCwgbV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodCk7CiAKICAgICA6Omds
QmxpdEZyYW1lYnVmZmVyRVhUKHJlc29sdmVSZWN0LngoKSwgcmVzb2x2ZVJlY3QueSgpLCByZXNv
bHZlUmVjdC5tYXhYKCksIHJlc29sdmVSZWN0Lm1heFkoKSwgcmVzb2x2ZVJlY3QueCgpLCByZXNv
bHZlUmVjdC55KCksIHJlc29sdmVSZWN0Lm1heFgoKSwgcmVzb2x2ZVJlY3QubWF4WSgpLCBHTF9D
T0xPUl9CVUZGRVJfQklULCBHTF9MSU5FQVIpOwotI2VuZGlmCiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQpA
QCAtMzM5LDIwICszMDAsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRJbnRl
Z2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTGludCogdmFsdWUpCiAgICAgICAgIGlmIChnZXRFeHRl
bnNpb25zKCkucmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkpCiAgICAgICAg
ICAgICAqdmFsdWUgPSBzdGQ6Om1pbigxMDI0LCAqdmFsdWUpOwogICAgICAgICBicmVhazsKLSNp
ZiBQTEFURk9STShNQUMpCi0gICAgLy8gU29tZSBvbGRlciBoYXJkd2FyZSBhZHZlcnRpc2VzIGEg
bGFyZ2VyIG1heGltdW0gdGhhbiB0aGV5Ci0gICAgLy8gY2FuIGFjdHVhbGx5IGhhbmRsZS4gUmF0
aGVyIHRoYW4gZGV0ZWN0aW5nIHN1Y2ggZGV2aWNlcywgc2ltcGx5Ci0gICAgLy8gY2xhbXAgdGhl
IG1heGltdW0gdG8gODE5Miwgd2hpY2ggaXMgYmlnIGVub3VnaCBmb3IgYSA1SyBkaXNwbGF5Lgot
ICAgIGNhc2UgTUFYX1JFTkRFUkJVRkZFUl9TSVpFOgotICAgICAgICA6OmdsR2V0SW50ZWdlcnYo
TUFYX1JFTkRFUkJVRkZFUl9TSVpFLCB2YWx1ZSk7Ci0gICAgICAgICp2YWx1ZSA9IHN0ZDo6bWlu
KDgxOTIsICp2YWx1ZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTUFYX1ZJRVdQT1JUX0RJ
TVM6Ci0gICAgICAgIDo6Z2xHZXRJbnRlZ2VydihNQVhfVklFV1BPUlRfRElNUywgdmFsdWUpOwot
ICAgICAgICB2YWx1ZVswXSA9IHN0ZDo6bWluKDgxOTIsIHZhbHVlWzBdKTsKLSAgICAgICAgdmFs
dWVbMV0gPSBzdGQ6Om1pbig4MTkyLCB2YWx1ZVsxXSk7Ci0gICAgICAgIGJyZWFrOwotI2VuZGlm
CiAgICAgZGVmYXVsdDoKICAgICAgICAgOjpnbEdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZSk7CiAg
ICAgfQpAQCAtNDU4LDMyICs0MDUsMjAgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnUKIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRlcHRoUmFuZ2UoR0NHTGNsYW1wZiB6TmVhciwgR0NH
TGNsYW1wZiB6RmFyKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiBVU0UoT1BFTkdMX0VTKQotICAgIDo6Z2xEZXB0aFJhbmdlZihzdGF0aWNfY2Fz
dDxmbG9hdD4oek5lYXIpLCBzdGF0aWNfY2FzdDxmbG9hdD4oekZhcikpOwotI2Vsc2UKICAgICA6
OmdsRGVwdGhSYW5nZSh6TmVhciwgekZhcik7Ci0jZW5kaWYKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y2xlYXJEZXB0aChHQ0dMY2xhbXBmIGRlcHRoKQogewogICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOwotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoT1BFTkdMX0VTKQot
ICAgIDo6Z2xDbGVhckRlcHRoZihzdGF0aWNfY2FzdDxmbG9hdD4oZGVwdGgpKTsKLSNlbHNlCiAg
ICAgOjpnbENsZWFyRGVwdGgoZGVwdGgpOwotI2VuZGlmCiB9CiAKICNpZiAhUExBVEZPUk0oR1RL
KQogRXh0ZW5zaW9uc0dMJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygp
CiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShP
UEVOR0xfRVMpCi0gICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uc0dM
T3BlbkdMPih0aGlzLCBmYWxzZSk7Ci0jZWxzZQogICAgICAgICBtX2V4dGVuc2lvbnMgPSBtYWtl
VW5pcXVlPEV4dGVuc2lvbnNHTE9wZW5HTD4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgpKTsKLSNl
bmRpZgogICAgIHJldHVybiAqbV9leHRlbnNpb25zOwogfQogI2VuZGlmCkBAIC01MDUsMTMgKzQ0
MCw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHMoR0NHTGludCB4
LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwKICAgICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3
aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEpOwogICAgIGlmIChhdHRycy5hbnRpYWxp
YXMgJiYgbV9zdGF0ZS5ib3VuZERyYXdGQk8gPT0gbV9tdWx0aXNhbXBsZUZCTykKICAgICAgICAg
OjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVIsIG1f
bXVsdGlzYW1wbGVGQk8pOwotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIGlmICghYXR0cnMuYWxw
aGEgJiYgKGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6UkdCQSB8fCBmb3JtYXQgPT0gR3Jh
cGhpY3NDb250ZXh0R0w6OkJHUkEpICYmIChtX3N0YXRlLmJvdW5kRHJhd0ZCTyA9PSBtX2ZibyB8
fCAoYXR0cnMuYW50aWFsaWFzICYmIG1fc3RhdGUuYm91bmREcmF3RkJPID09IG1fbXVsdGlzYW1w
bGVGQk8pKSkKLSAgICAgICAgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMod2lkdGgsIGhlaWdo
dCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KGRhdGEpKTsKLSNlbmRpZgogfQogCiB9CiAK
LSNlbmRpZiAvLyBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkgJiYgKFVTRShPUEVOR0wpIHx8
IChQTEFURk9STShDT0NPQSkgJiYgVVNFKE9QRU5HTF9FUykpKQorI2VuZGlmIC8vIEVOQUJMRShH
UkFQSElDU19DT05URVhUX0dMKSAmJiBVU0UoT1BFTkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29t
bW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggYjA2MGRiMDRlODkwMzE2MzUyMzk2MjFk
Njg1MzhkZjEyYjhiNjJiZS4uNzQxZWU0YzE0ZWFhMjY2YTc5ZmViN2QxMjA2MmFhYWEzY2ViNTFl
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCkBA
IC0zMSwxMSArMzEsNyBAQAogCiAjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfR0wpICYmIChV
U0UoT1BFTkdMKSB8fCBVU0UoT1BFTkdMX0VTKSkKIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
Ci0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFU0lPUy5oIgotI2VuZGlmCi0KLSNp
ZiAhUExBVEZPUk0oQ09DT0EpICYmIFVTRShPUEVOR0xfRVMpCisjaWYgVVNFKE9QRU5HTF9FUykK
ICNpbmNsdWRlICJFeHRlbnNpb25zR0xPcGVuR0xFUy5oIgogI2Vsc2UKICNpbmNsdWRlICJFeHRl
bnNpb25zR0xPcGVuR0wuaCIKQEAgLTU5LDI0ICs1NSw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAotI2lmIFBM
QVRGT1JNKENPQ09BKQotCi0jaWYgVVNFKE9QRU5HTF9FUykKLSNpbXBvcnQgPE9wZW5HTEVTL0VT
Mi9nbGV4dC5oPgotI2ltcG9ydCA8T3BlbkdMRVMvRVMzL2dsLmg+Ci0vLyBGcm9tIDxPcGVuR0xF
Uy9nbGV4dC5oPgotI2RlZmluZSBHTF9SR0JBMzJGX0FSQiAgICAgICAgICAgICAgICAgICAgICAw
eDg4MTQKLSNkZWZpbmUgR0xfUkdCMzJGX0FSQiAgICAgICAgICAgICAgICAgICAgICAgMHg4ODE1
Ci0jZWxzZQotI2RlZmluZSBHTF9ET19OT1RfV0FSTl9JRl9NVUxUSV9HTF9WRVJTSU9OX0hFQURF
UlNfSU5DTFVERUQKLSNpbmNsdWRlIDxPcGVuR0wvZ2wuaD4KLSNpbmNsdWRlIDxPcGVuR0wvZ2wz
Lmg+Ci0jaW5jbHVkZSA8T3BlbkdML2dsM2V4dC5oPgotI3VuZGVmIEdMX0RPX05PVF9XQVJOX0lG
X01VTFRJX0dMX1ZFUlNJT05fSEVBREVSU19JTkNMVURFRAotI2VuZGlmCi0KLSNlbHNlCi0KICNp
ZiBVU0UoTElCRVBPWFkpCiAjaW5jbHVkZSAiRXBveHlTaGltcy5oIgogI2VsaWYgVVNFKE9QRU5H
TF9FUykKQEAgLTg1LDkgKzYzLDYgQEAKICNpbmNsdWRlICJPcGVuR0xTaGltcy5oIgogI2VuZGlm
CiAKLSNlbmRpZgotCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIFRocmVhZFNwZWNp
ZmljPFNoYWRlck5hbWVIYXNoKj4mIGdldEN1cnJlbnROYW1lSGFzaE1hcEZvclNoYWRlcigpCkBA
IC0xODksMTAgKzE2NCw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50UmVu
ZGVyaW5nUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKiBpbWFnZUJ1CiAgICAgfQogCiAgICAg
cGFpbnRUb0NhbnZhcyhwaXhlbHMuZ2V0KCksIEludFNpemUobV9jdXJyZW50V2lkdGgsIG1fY3Vy
cmVudEhlaWdodCksIGltYWdlQnVmZmVyLT5iYWNrZW5kU2l6ZSgpLCBpbWFnZUJ1ZmZlci0+Y29u
dGV4dCgpKTsKLQotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoT1BFTkdMX0VTKQotICAgIHBy
ZXNlbnRSZW5kZXJidWZmZXIoKTsKLSNlbmRpZgogfQogCiBib29sIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKQpAQCAt
NzExLDExICs2ODIsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb3B5VGV4SW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDRwogICAgIDo6Z2xDb3B5VGV4
SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgeCwgeSwgd2lkdGgsIGhlaWdo
dCwgYm9yZGVyKTsKICAgICBpZiAoYXR0cnMuYW50aWFsaWFzICYmIG1fc3RhdGUuYm91bmREcmF3
RkJPID09IG1fbXVsdGlzYW1wbGVGQk8pCiAgICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQo
R3JhcGhpY3NDb250ZXh0R0w6OkZSQU1FQlVGRkVSLCBtX211bHRpc2FtcGxlRkJPKTsKLQotI2lm
IFBMQVRGT1JNKE1BQykgJiYgVVNFKE9QRU5HTCkKLSAgICBpZiAoZ2V0RXh0ZW5zaW9ucygpLmlz
SW50ZWwoKSkKLSAgICAgICAgbV9uZWVkc0ZsdXNoQmVmb3JlRGVsZXRlVGV4dHVyZXMgPSB0cnVl
OwotI2VuZGlmCiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvcHlUZXhTdWJJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBH
Q0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQpCkBAIC03MzEsMTEgKzY5Nyw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmNvcHlUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwKICAgICA6OmdsQ29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CiAgICAgaWYgKGF0dHJzLmFudGlhbGlhcyAmJiBt
X3N0YXRlLmJvdW5kRHJhd0ZCTyA9PSBtX211bHRpc2FtcGxlRkJPKQogICAgICAgICA6OmdsQmlu
ZEZyYW1lYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUiwgbV9tdWx0aXNh
bXBsZUZCTyk7Ci0KLSNpZiBQTEFURk9STShNQUMpICYmIFVTRShPUEVOR0wpCi0gICAgaWYgKGdl
dEV4dGVuc2lvbnMoKS5pc0ludGVsKCkpCi0gICAgICAgIG1fbmVlZHNGbHVzaEJlZm9yZURlbGV0
ZVRleHR1cmVzID0gdHJ1ZTsKLSNlbmRpZgogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpjdWxsRmFjZShHQ0dMZW51bSBtb2RlKQpAQCAtODA3LDE4ICs3NjgsMTIgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZmluaXNoKCkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKICAgICA6OmdsRmluaXNoKCk7Ci0jaWYgUExBVEZPUk0oTUFDKSAmJiBVU0UoT1BFTkdM
KQotICAgIG1fbmVlZHNGbHVzaEJlZm9yZURlbGV0ZVRleHR1cmVzID0gZmFsc2U7Ci0jZW5kaWYK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Zmx1c2goKQogewogICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOwogICAgIDo6Z2xGbHVzaCgpOwotI2lmIFBMQVRGT1JNKE1BQykgJiYg
VVNFKE9QRU5HTCkKLSAgICBtX25lZWRzRmx1c2hCZWZvcmVEZWxldGVUZXh0dXJlcyA9IGZhbHNl
OwotI2VuZGlmCiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVu
dW0gcmVuZGVyYnVmZmVydGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1ZmZlcikKQEAgLTE5OTEs
MTAgKzE5NDYsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkZWxldGVTaGFkZXIo
UGxhdGZvcm1HTE9iamVjdCBzaGFkZXIpCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpk
ZWxldGVUZXh0dXJlKFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSkKIHsKICAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKLSNpZiBQTEFURk9STShNQUMpICYmIFVTRShPUEVOR0wpCi0gICAgaWYgKG1f
bmVlZHNGbHVzaEJlZm9yZURlbGV0ZVRleHR1cmVzKQotICAgICAgICBmbHVzaCgpOwotI2VuZGlm
CiAgICAgbV9zdGF0ZS5ib3VuZFRleHR1cmVNYXAucmVtb3ZlSWYoW3RleHR1cmVdIChhdXRvJiBr
ZXlWYWx1ZSkgewogICAgICAgICByZXR1cm4ga2V5VmFsdWUudmFsdWUuZmlyc3QgPT0gdGV4dHVy
ZTsKICAgICB9KTsKQEAgLTIxMDQsNyArMjA1NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmNvcHlCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdDR0xlbnVtIHdy
CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgOjpnbENvcHlCdWZmZXJTdWJEYXRhKHJl
YWRUYXJnZXQsIHdyaXRlVGFyZ2V0LCByZWFkT2Zmc2V0LCB3cml0ZU9mZnNldCwgc2l6ZSk7CiB9
Ci0jZWxpZiAhVVNFKEFOR0xFKQorI2Vsc2UKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmNvcHlCdWZmZXJTdWJEYXRhKEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGludHB0ciwgR0NHTGlu
dHB0ciwgR0NHTHNpemVpcHRyKQogewogfQpAQCAtMjEzMSw3ICsyMDgyLDcgQEAgR0NHTGJvb2xl
YW4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnVubWFwQnVmZmVyKEdDR0xlbnVtIHRhcmdldCkK
ICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICByZXR1cm4gOjpnbFVubWFwQnVmZmVyKHRh
cmdldCk7CiB9Ci0jZWxpZiAhVVNFKEFOR0xFKQorI2Vsc2UKIHZvaWQqIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjptYXBCdWZmZXJSYW5nZShHQ0dMZW51bSwgR0NHTGludHB0ciwgR0NHTHNpemVp
cHRyLCBHQ0dMYml0ZmllbGQpCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMjIzLDcgKzIx
NzQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhTdG9yYWdlM0QoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQwogICAgIDo6Z2xUZXhTdG9yYWdlM0QodGFy
Z2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7CiAgICAg
bV9zdGF0ZS50ZXh0dXJlU2VlZENvdW50LmFkZChtX3N0YXRlLmN1cnJlbnRCb3VuZFRleHR1cmUo
KSk7CiB9Ci0jZWxpZiAhVVNFKEFOR0xFKQorI2Vsc2UKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmdldEludGVybmFsZm9ybWF0aXYoR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwg
R0NHTHNpemVpLCBHQ0dMaW50KikKIHsKIH0KQEAgLTI3MTksNyArMjY3MCw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnVuaWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVj
dCBwcm9ncmFtLCBHQ0dMCiAgICAgVU5VU0VEX1BBUkFNKHVuaWZvcm1CbG9ja0luZGV4KTsKICAg
ICBVTlVTRURfUEFSQU0odW5pZm9ybUJsb2NrQmluZGluZyk7CiB9Ci0jZWxpZiAhVVNFKEFOR0xF
KQorI2Vsc2UKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1z
KFBsYXRmb3JtR0xPYmplY3QsIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mLCBHQ0dMZW51bSwgVmVj
dG9yPEdDR0xpbnQ+JikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVT
LmNwcAppbmRleCAzMGQxMGIxZTEwYzdhYzk0MTVkZDUzZDFlZmYzMDRmZWZhN2UxMDE4Li45Mzg5
NWU1NmIwYzVhNWJkODRjYjBhYTQ5ODY4MjBhYTY3MTE0ODE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xF
Uy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCIKIAotI2lmIEVOQUJM
RShHUkFQSElDU19DT05URVhUX0dMKSAmJiBVU0UoT1BFTkdMX0VTKSAmJiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKKyNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF9HTCkgJiYgVVNFKE9QRU5HTF9F
UykKIAogI2luY2x1ZGUgIkV4dGVuc2lvbnNHTE9wZW5HTEVTLmgiCiAjaW5jbHVkZSAiSW50UmVj
dC5oIgpAQCAtNDA2LDQgKzQwNiw0IEBAIFBsYXRmb3JtTGF5ZXIqIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIAogfQogCi0jZW5kaWYgLy8gRU5BQkxFKEdS
QVBISUNTX0NPTlRFWFRfR0wpICYmIFVTRShPUEVOR0xfRVMpICYmICFQTEFURk9STShJT1NfRkFN
SUxZKQorI2VuZGlmIC8vIEVOQUJMRShHUkFQSElDU19DT05URVhUX0dMKSAmJiBVU0UoT1BFTkdM
X0VTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmNwcApp
bmRleCBhYmViM2EyNDVkYWUwYWU4YTBjMDg0YmY5MDU2YWI5YTc2ODE3M2M5Li4zZDM1Y2Q1Njg4
ZDQ4OGRjMTM2ODI4YzBiNzc4NTBmZmZmYTM2YjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xNYW5hZ2VyLmNwcApAQCAtMzUsOSArMzUsOCBAQAogI2luY2x1ZGUg
PHN5cy9zeXNjdGwuaD4KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKSAmJiAoVVNFKE9QRU5H
TCkgfHwgVVNFKEFOR0xFKSkKKyNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSAiU3dpdGNoaW5n
R1BVQ2xpZW50LmgiCi0jaW5jbHVkZSA8T3BlbkdML09wZW5HTC5oPgogI2VuZGlmCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTEzNCw3ICsxMzMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMTWFuYWdlcjo6ZGlzcGxheVdhc1JlY29uZmlndXJlZChDR0RpcmVjdERpc3BsYXlJRCwg
QwogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6dXBkYXRlQWxsQ29udGV4
dHMoKQogewotI2lmIFBMQVRGT1JNKE1BQykgJiYgKFVTRShPUEVOR0wpIHx8IFVTRShBTkdMRSkp
CisjaWYgUExBVEZPUk0oTUFDKQogICAgIGZvciAoY29uc3QgYXV0byYgY29udGV4dCA6IG1fY29u
dGV4dHMpIHsKICAgICAgICAgY29udGV4dC0+dXBkYXRlQ0dMQ29udGV4dCgpOwogICAgICAgICBj
b250ZXh0LT5kaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90aWZpY2F0aW9uKCk7CkBAIC0yMjEsNyAr
MjIwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXI6OnJlbW92ZUNvbnRl
eHRSZXF1aXJpbmdIaWdoUGVyZm9ybWFuY2UoR3JhcGgKIAogdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTE1hbmFnZXI6OnVwZGF0ZUhpZ2hQZXJmb3JtYW5jZVN0YXRlKCkKIHsKLSNpZiBQTEFU
Rk9STShNQUMpICYmIChVU0UoT1BFTkdMKSB8fCBVU0UoQU5HTEUpKQorI2lmIFBMQVRGT1JNKE1B
QykKICAgICBpZiAoIWhhc0xvd0FuZEhpZ2hQb3dlckdQVXMoKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIApAQCAtMjM1LDEwICsyMzQsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFu
YWdlcjo6dXBkYXRlSGlnaFBlcmZvcm1hbmNlU3RhdGUoKQogICAgICAgICBpZiAoIW1fcmVxdWVz
dGluZ0hpZ2hQZXJmb3JtYW5jZSkgewogICAgICAgICAgICAgTE9HKFdlYkdMLCAiUmVxdWVzdCB0
aGUgaGlnaC1wZXJmb3JtYW5jZSBHUFUuIik7CiAgICAgICAgICAgICBtX3JlcXVlc3RpbmdIaWdo
UGVyZm9ybWFuY2UgPSB0cnVlOwotI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgICAgIGlmIChh
dXRvKiBzaW5nbGV0b24gPSBTd2l0Y2hpbmdHUFVDbGllbnQ6OnNpbmdsZXRvbklmRXhpc3RzKCkp
CiAgICAgICAgICAgICAgICAgc2luZ2xldG9uLT5yZXF1ZXN0SGlnaFBlcmZvcm1hbmNlR1BVKCk7
Ci0jZW5kaWYKICAgICAgICAgfQogCiAgICAgfSBlbHNlIHsKQEAgLTI2Miw3ICsyNTksNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlcjo6ZGlzYWJsZUhpZ2hQZXJmb3JtYW5j
ZUdQVVRpbWVyRmlyZWQoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3JlcXVlc3RpbmdIaWdo
UGVyZm9ybWFuY2UgPSBmYWxzZTsKLSNpZiBQTEFURk9STShNQUMpICYmIChVU0UoT1BFTkdMKSB8
fCBVU0UoQU5HTEUpKQorI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAoYXV0byogc2luZ2xldG9u
ID0gU3dpdGNoaW5nR1BVQ2xpZW50OjpzaW5nbGV0b25JZkV4aXN0cygpKQogICAgICAgICBzaW5n
bGV0b24tPnJlbGVhc2VIaWdoUGVyZm9ybWFuY2VHUFUoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMTWFuYWdlci5oCmluZGV4IGFjMzlhNzMwZGQzMGFiMGM3
YjE4ZDNkZjliYzVkYmNlNjM0Njg2M2MuLjNhZjhhMDUyYWU4ZTJhMTVkNWMwNTE3ODRmYjA4NTQ1
ZWU5YTFkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xNYW5hZ2Vy
LmgKQEAgLTMxLDcgKzMxLDYgQEAKIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlIDxDb3Jl
R3JhcGhpY3MvQ0dEaXNwbGF5Q29uZmlndXJhdGlvbi5oPgotI2luY2x1ZGUgPE9wZW5HTC9DR0xU
eXBlcy5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>