<?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>123437</bug_id>
          
          <creation_ts>2013-10-29 01:01:26 -0700</creation_ts>
          <short_desc>[GStreamer] Remove NATIVE_FULLSCREEN_VIDEO support</short_desc>
          <delta_ts>2013-11-05 01:06:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>122831</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Philippe Normand">pnormand</reporter>
          <assigned_to name="Xabier Rodríguez Calvar">calvaris</assigned_to>
          <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>menard</cc>
    
    <cc>mrobinson</cc>
    
    <cc>rakuco</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>944349</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-10-29 01:01:26 -0700</bug_when>
    <thetext>This code path has been disabled for months, better to remove it once for all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944363</commentid>
    <comment_count>1</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2013-10-29 02:46:52 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; This code path has been disabled for months, better to remove it once for all.

I think it is better to keep it because in the end we should use it, but the problem is that the native controls have problems and also need a redisign.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944364</commentid>
    <comment_count>2</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-10-29 02:53:37 -0700</bug_when>
    <thetext>Well, now that we have hw accelerated decoding/rendering I don&apos;t think this is needed anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944378</commentid>
    <comment_count>3</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2013-10-29 03:51:56 -0700</bug_when>
    <thetext>Yes, and we always have the possibiilty of bringing the code back from repository.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946704</commentid>
    <comment_count>4</comment_count>
      <attachid>215927</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2013-11-04 09:45:37 -0800</bug_when>
    <thetext>Created attachment 215927
Patch

Removed all references to NATIVE_FULLSCREEN_VIDEO related to GStreamer code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946706</commentid>
    <comment_count>5</comment_count>
      <attachid>215927</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-11-04 09:55:03 -0800</bug_when>
    <thetext>Comment on attachment 215927
Patch

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

Nice clean-up!

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests (OOPS!).

The commit hooks don&apos;t like OOPS!. Can you also please provide a short explanation and at least mention this is about removing dead code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946708</commentid>
    <comment_count>6</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-11-04 09:59:11 -0800</bug_when>
    <thetext>Forgot to mention the dependency on gstreamer-video-1.0 can perhaps be removed now, needs double checking though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946745</commentid>
    <comment_count>7</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2013-11-04 11:16:54 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Forgot to mention the dependency on gstreamer-video-1.0 can perhaps be removed now, needs double checking though.

Though I could remove the use of some headers, I cannot remove that dependency because it is still used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946748</commentid>
    <comment_count>8</comment_count>
      <attachid>215935</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2013-11-04 11:26:17 -0800</bug_when>
    <thetext>Created attachment 215935
Patch

Removed some header declarations and updated changelogs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947056</commentid>
    <comment_count>9</comment_count>
      <attachid>215935</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-05 01:06:20 -0800</bug_when>
    <thetext>Comment on attachment 215935
Patch

Clearing flags on attachment: 215935

Committed r158656: &lt;http://trac.webkit.org/changeset/158656&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947057</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-05 01:06:23 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215927</attachid>
            <date>2013-11-04 09:45:37 -0800</date>
            <delta_ts>2013-11-04 11:26:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123437-20131104184534.patch</filename>
            <type>text/plain</type>
            <size>81594</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU4NTI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmM0ODQ1M2U1M2NhNDQy
YTc4OWJjOWZiYjQ5OWE4YTc5MWE5Yzg3ZS4uNmJmMWQ4MzlhZThmYjI2YmNjYmVlZTcwZjZkMWI4
OGYyZWQ5ZThhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEzLTExLTA0ICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dT
dHJlYW1lcl0gUmVtb3ZlIE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPIHN1cHBvcnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzQzNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09Q
UyEpLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBQbGF0Zm9y
bUVmbC5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZTogUmVtb3ZlZCBjb21waWxh
dGlvbiBvZiBkZWxldGVkIGZpbGVzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmg6IFJlbW92ZWQgc3RydWN0dXJlcyByZWxhdGVkIHRvCisgICAgICAgIEdTdHJlYW1l
ciBhbmQgTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9GdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyR1N0cmVhbWVyLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5oOiBSZW1vdmVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2U6On5NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBsYXRmb3JtTWVkaWEp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y3Jl
YXRlVmlkZW9TaW5rKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oOgorICAgICAgICBSZW1vdmVkIGNvZGUgcmVs
YXRlZCB0byBHU3RyZWFtZXIgYW5kIE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93Lmg6IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9X
aW5kb3dFZmwuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9QbGF0Zm9ybVZpZGVvV2luZG93R3RrLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd01hYy5tbTogUmVtb3Zl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dp
bmRvd05peC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dQcml2YXRlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHA6CisgICAgICAg
ICh3ZWJraXRWaWRlb1NpbmtSZW5kZXIpOgorICAgICAgICAod2Via2l0VmlkZW9TaW5rTmV3KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVy
Lmg6IFJlbW92ZWQgY29kZQorICAgICAgICByZWxhdGVkIHRvIEdTdHJlYW1lciBhbmQgTkFUSVZF
X0ZVTExTQ1JFRU5fVklERU8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0Z1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2d0ay9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrLmg6IFJlbW92ZWQuCisK
IDIwMTMtMTEtMDMgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAg
IElubGluZSBSZW5kZXJTdHlsZSBmdW5jdGlvbnMgZm9yIGdldHRpbmcvc2V0dGluZyBwc2V1ZG8g
c3R5bGUgYml0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vQ2hhbmdlTG9nCmluZGV4
IDc5YTYzNGU4NmFlOWFkYzI5NWM5NWQxMzA1MjFmMWRlMThjMjc1YWMuLmQyNzc5ZWNkMGNmNDll
M2Q5MjA3ODdjOTA0YTgwNTJkMzAzOGJhNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9wby9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L3BvL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEzLTExLTA0ICBYYWJpZXIgUm9kcmln
dWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0g
UmVtb3ZlIE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzQzNworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUE9URklMRVMuaW46IFJlbW92ZWQgRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlckd0ay5jcHAuCisgICAgICAgICogZ2wucG86IFJlbW92ZWQg
YXBwZWFyYW5jZXMgb2Ygc3RyaW5ncyBvZgorICAgICAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyR3RrLmNwcC4KKwogMjAxMy0xMC0xMCAgU2hhbnRoYSBrdW1hciAgPHNoa3VtYXJAcmVkaGF0
LmNvbT4KIAogICAgICAgICBXZWJraXQgLSBVcGRhdGVkIFRhbWlsIHRyYW5zbGF0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9D
aGFuZ2VMb2cKaW5kZXggNzA2YzkzMTE5ZTJjYTRiNWI5NmZjMTUxOTVmOWJmNzM2MmVhOWZkNS4u
M2NmYjU4YmEzMmM3ODFmNjQ2OWFiZDQ3NzcyYWZhMzg2MDNjNTQzNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTExLTA0ICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAg
PGNhbHZhcmlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gUmVtb3ZlIE5BVElW
RV9GVUxMU0NSRUVOX1ZJREVPIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyMzQzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlckVmbC5oOiBSZW1vdmVkLgorCiAyMDEzLTExLTAxICBSeXVhbiBDaG9pICA8cnl1YW4uY2hv
aUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzFdIFJlbmRlcmluZyBpcyBicm9rZW4g
d2hlbiBzY3JvbGxlZCBld2tfdmlld19zaW5nbGUgcmVwZWF0ZWRseQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmlu
ZGV4IGJjZDllMzgzYTdhNzJlMDg5Zjk1MzgwNWU3MzJlZjViMTQ0YWMxODEuLjQzNzI4ZjFlYmM5
NmQxNjY2OWUzYmE2YzFjNjBmYzE5Mjc3Y2Q4ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAxMy0xMS0wNCAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0Bp
Z2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIFJlbW92ZSBOQVRJVkVfRlVMTFNDUkVF
Tl9WSURFTyBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjM0MzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkNocm9tZUNsaWVudDo6ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudCk6CisgICAgICAg
IChXZWJLaXQ6OkNocm9tZUNsaWVudDo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaDogUmVtb3ZlZCBjb2RlIHJlbGF0
ZWQgdG8KKyAgICAgICAgR1N0cmVhbWVyIGFuZCBOQVRJVkVfRlVMTFNDUkVFTl9WSURFTy4KKwog
MjAxMy0xMC0yOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZC4gVXBkYXRlIE5FV1MgYW5kIFZlcnNpb25zLm00IGZvciAyLjMu
MSByZWxlYXNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMTI1ZTE4ODM5ZGNl
ZmQ1ZTk3YjRmNGNiZTg2Y2UwOGI2NjEwZDcyMS4uYTkzMzhiN2FmN2JiMjM4MThmNGE5MGIyZjY0
YzNmMDA1MzBkZTJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC02MDg4LDE0
ICs2MDg4LDEwIEBAIHdlYmNvcmVndGtfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGFn
ZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL2d0ay9F
dmVudEhhbmRsZXJHdGsuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jYWlyby9XaWRn
ZXRCYWNraW5nU3RvcmUuaCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIuY3BwIFwKLQlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlckdTdHJlYW1lci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggXAotCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9GdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyR3RrLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0Z1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3RrL0ljb25HdGsuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ndGsvSW1hZ2VCdWZmZXJHdGsuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
Q2xpcGJvYXJkVXRpbGl0aWVzR3RrLmNwcCBcCkBAIC02MTMxLDEyICs2MTI3LDggQEAgcGxhdGZv
cm1ndGtfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YS5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJl
ZVR5cGUuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyR1dvcmxkLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJDYWlyby5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5oIFwKLQlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRv
d0d0ay5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9Q
bGF0Zm9ybVZpZGVvV2luZG93LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Db2xvckd0ay5jcHAgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUVmbC5jbWFrZQppbmRleCA4MTU1NTdiNTZhNjQ0YWY1ZWUzODI3M2Q4MzFhOGU1NjA1YzNmYWVm
Li44NTI1ODFkMjI1MjYzZDNiOGI4ODAyZGQ3NzJkN2I1NDdhZDY2OTUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUVmbC5jbWFrZQpAQCAtMTI1LDE0ICsxMjUsMTIgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9T
T1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQdHJH
U3RyZWFtZXIuY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdX
b3JsZC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVXRpbGl0
aWVzLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWZXJzaW9u
aW5nLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lckNh
aXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlR1N0cmVhbWVyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCi0gICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dFZmwuY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1RleHRDb21iaW5lckdTdHJlYW1lci5jcHAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVGV4dFNpbmtHU3RyZWFtZXIuY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtR1RLLmNtYWtlCmluZGV4IDhmZjgxZjhlMDUwMjYyNmE4ZmQxMzU4ODk2NDJhMDBiOTM0
YjgzZGEuLmJjY2Q3ZWYxNzRkYjRlMzZlMmY1MjVlNmU5YjY4MDFjYTllOTQwOWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtR1RLLmNtYWtlCkBAIC05NywxOCArOTcsMTUgQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHAKIAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVmUHRyR1N0cmVhbWVyLmNwcAotICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVyc2lvbmluZy5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJDYWlyby5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlLmNwcAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVv
V2luZG93R3RrLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtH
U3RyZWFtZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNv
dXJjZUdTdHJlYW1lci5jcHAKIAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9Db2xvckd0ay5j
cHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0
ay5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvR2RrQ2Fpcm9VdGlsaXRpZXMuY3BwCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ljb25HdGsuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3RrL0ltYWdlQnVmZmVyR3RrLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggMDlhYjk5OWJmNmYxNDkyNDU3MWYwOTM3ZWE5Mzc3
MjllZTNmMzJjNS4uMmQ4MjNiZDRiZWEyYTk2ODQ3YmU5YmUzMTMzNjhjMzBhODg5YzBmYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC02
Niw3ICs2Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9Tb3VyY2VQcm92
aWRlcjsKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgR1N0cmVhbWVyR1dvcmxkOwogI2lmIEVOQUJM
RShNRURJQV9TT1VSQ0UpCiBjbGFzcyBIVE1MTWVkaWFTb3VyY2U7CiAjZW5kaWYKQEAgLTgzLDcg
KzgyLDYgQEAgc3RydWN0IFBsYXRmb3JtTWVkaWEgewogICAgICAgICBRVE1vdmllVHlwZSwKICAg
ICAgICAgUVRNb3ZpZUdXb3JsZFR5cGUsCiAgICAgICAgIFFUTW92aWVWaXN1YWxDb250ZXh0VHlw
ZSwKLSAgICAgICAgR1N0cmVhbWVyR1dvcmxkVHlwZSwKICAgICAgICAgQ2hyb21pdW1NZWRpYVBs
YXllclR5cGUsCiAgICAgICAgIFF0TWVkaWFQbGF5ZXJUeXBlLAogICAgICAgICBBVkZvdW5kYXRp
b25NZWRpYVBsYXllclR5cGUsCkBAIC05NCw3ICs5Miw2IEBAIHN0cnVjdCBQbGF0Zm9ybU1lZGlh
IHsKICAgICAgICAgUVRNb3ZpZSogcXRNb3ZpZTsKICAgICAgICAgUVRNb3ZpZUdXb3JsZCogcXRN
b3ZpZUdXb3JsZDsKICAgICAgICAgUVRNb3ZpZVZpc3VhbENvbnRleHQqIHF0TW92aWVWaXN1YWxD
b250ZXh0OwotICAgICAgICBHU3RyZWFtZXJHV29ybGQqIGdzdHJlYW1lckdXb3JsZDsKICAgICAg
ICAgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlKiBjaHJvbWl1bU1lZGlhUGxheWVyOwogICAg
ICAgICBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UqIHF0TWVkaWFQbGF5ZXI7CiAgICAgICAg
IEFWUGxheWVyKiBhdmZNZWRpYVBsYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9GdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNDdhNmFmY2EwNjY5MGVhZjVhM2RjNjI3NjI4ZTczODI3OTkyOGM2NS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJl
YW1lci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTYgKzAsMCBAQAotLyoKLSAqICBDb3B5cmln
aHQgKEMpIDIwMTMgSWdhbGlhIFMuTAotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAq
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0K
LSNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIFVTRShOQVRJVkVfRlVMTFND
UkVFTl9WSURFTykKLQotI2luY2x1ZGUgIkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFt
ZXIuaCIKLQotI2lmIFBMQVRGT1JNKEdUSykKLSNpbmNsdWRlICJGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyR3RrLmgiCi0jZW5kaWYKLQotI2luY2x1ZGUgIkdTdHJlYW1lckdXb3JsZC5oIgotI2lu
Y2x1ZGUgIk1lZGlhUGxheWVyLmgiCi0jaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZS5oIgotI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+Ci0KLSNkZWZpbmUgVk9MVU1FX1VQX09GRlNFVCAwLjA1IC8vIDUlCi0jZGVmaW5lIFZP
TFVNRV9ET1dOX09GRlNFVCAwLjA1IC8vIDUlCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9p
ZCBwbGF5ZXJWb2x1bWVDaGFuZ2VkQ2FsbGJhY2soR09iamVjdCAqZWxlbWVudCwgR1BhcmFtU3Bl
YyAqcHNwZWMsIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIqIGNvbnRyb2xsZXIp
Ci17Ci0gICAgY29udHJvbGxlci0+dm9sdW1lQ2hhbmdlZCgpOwotfQotCi12b2lkIHBsYXllck11
dGVDaGFuZ2VkQ2FsbGJhY2soR09iamVjdCAqZWxlbWVudCwgR1BhcmFtU3BlYyAqcHNwZWMsIEZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIqIGNvbnRyb2xsZXIpCi17Ci0gICAgY29u
dHJvbGxlci0+bXV0ZUNoYW5nZWQoKTsKLX0KLQotUGFzc093blB0cjxGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyR1N0cmVhbWVyPiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjpj
cmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSogcGxheWVyKQotewotI2lmIFBM
QVRGT1JNKEdUSykKLSAgIHJldHVybiBhZG9wdFB0cihuZXcgRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlckd0ayhwbGF5ZXIpKTsKLSNlbHNlCi0gICByZXR1cm4gbnVsbHB0cjsKLSNlbmRpZgotfQot
Ci1GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjpGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyR1N0cmVhbWVyKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UqIHBsYXllcikK
LSAgICA6IG1fcGxheWVyKHBsYXllcikKLSAgICAsIG1fY2xpZW50KHBsYXllci0+bWVkaWFQbGF5
ZXIoKS0+bWVkaWFQbGF5ZXJDbGllbnQoKSkKLSAgICAsIG1fZ3N0cmVhbWVyR1dvcmxkKHBsYXll
ci0+cGxhdGZvcm1NZWRpYSgpLm1lZGlhLmdzdHJlYW1lckdXb3JsZCkKLSAgICAsIG1fcGxheWVy
Vm9sdW1lU2lnbmFsSGFuZGxlcigwKQotICAgICwgbV9wbGF5ZXJNdXRlU2lnbmFsSGFuZGxlcigw
KQotewotfQotCi1GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjp+RnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlckdTdHJlYW1lcigpCi17Ci0gICAgZXhpdEZ1bGxzY3JlZW4oKTsKLX0K
LQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjplbnRlckZ1bGxzY3Jl
ZW4oKQotewotICAgIGlmICghbV9nc3RyZWFtZXJHV29ybGQpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGlmICghbV9nc3RyZWFtZXJHV29ybGQtPmVudGVyRnVsbHNjcmVlbigpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBpbml0aWFsaXplV2luZG93KCk7Ci0KLSAgICBHc3RFbGVtZW50KiBwaXBl
bGluZSA9IG1fZ3N0cmVhbWVyR1dvcmxkLT5waXBlbGluZSgpOwotICAgIG1fcGxheWVyVm9sdW1l
U2lnbmFsSGFuZGxlciA9IGdfc2lnbmFsX2Nvbm5lY3QocGlwZWxpbmUsICJub3RpZnk6OnZvbHVt
ZSIsIEdfQ0FMTEJBQ0socGxheWVyVm9sdW1lQ2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7Ci0gICAg
bV9wbGF5ZXJNdXRlU2lnbmFsSGFuZGxlciA9IGdfc2lnbmFsX2Nvbm5lY3QocGlwZWxpbmUsICJu
b3RpZnk6Om11dGUiLCBHX0NBTExCQUNLKHBsYXllck11dGVDaGFuZ2VkQ2FsbGJhY2spLCB0aGlz
KTsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjpleGl0RnVs
bHNjcmVlbigpCi17Ci0gICAgZGVzdHJveVdpbmRvdygpOwotCi0gICAgR3N0RWxlbWVudCogcGlw
ZWxpbmUgPSBtX2dzdHJlYW1lckdXb3JsZC0+cGlwZWxpbmUoKTsKLSAgICBpZiAobV9wbGF5ZXJW
b2x1bWVTaWduYWxIYW5kbGVyKSB7Ci0gICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVj
dChwaXBlbGluZSwgbV9wbGF5ZXJWb2x1bWVTaWduYWxIYW5kbGVyKTsKLSAgICAgICAgbV9wbGF5
ZXJWb2x1bWVTaWduYWxIYW5kbGVyID0gMDsKLSAgICB9Ci0KLSAgICBpZiAobV9wbGF5ZXJNdXRl
U2lnbmFsSGFuZGxlcikgewotICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QocGlw
ZWxpbmUsIG1fcGxheWVyTXV0ZVNpZ25hbEhhbmRsZXIpOwotICAgICAgICBtX3BsYXllck11dGVT
aWduYWxIYW5kbGVyID0gMDsKLSAgICB9Ci0KLSAgICBtX2dzdHJlYW1lckdXb3JsZC0+ZXhpdEZ1
bGxzY3JlZW4oKTsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVy
OjpleGl0T25Vc2VyUmVxdWVzdCgpCi17Ci0gICAgbV9jbGllbnQtPm1lZGlhUGxheWVyRXhpdEZ1
bGxzY3JlZW4oKTsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVy
Ojp0b2dnbGVQbGF5KCkKLXsKLSAgICBpZiAobV9jbGllbnQtPm1lZGlhUGxheWVySXNQYXVzZWQo
KSkKLSAgICAgICAgbV9jbGllbnQtPm1lZGlhUGxheWVyUGxheSgpOwotICAgIGVsc2UKLSAgICAg
ICAgbV9jbGllbnQtPm1lZGlhUGxheWVyUGF1c2UoKTsKLSAgICBwbGF5U3RhdGVDaGFuZ2VkKCk7
Ci19Ci0KLXZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcjo6aW5jcmVhc2VW
b2x1bWUoKQotewotICAgIHNldFZvbHVtZShtX3BsYXllci0+dm9sdW1lKCkgKyBWT0xVTUVfVVBf
T0ZGU0VUKTsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjpk
ZWNyZWFzZVZvbHVtZSgpCi17Ci0gICAgc2V0Vm9sdW1lKG1fcGxheWVyLT52b2x1bWUoKSAtIFZP
TFVNRV9ET1dOX09GRlNFVCk7Ci19Ci0KLXZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdT
dHJlYW1lcjo6c2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkKLXsKLSAgICB2b2x1bWUgPSBDTEFNUCh2
b2x1bWUsIDAuMCwgMS4wKTsKLSAgICBtX3BsYXllci0+c2V0Vm9sdW1lKHZvbHVtZSk7Ci19Ci0K
LVN0cmluZyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjp0aW1lVG9TdHJpbmco
ZmxvYXQgdGltZSkKLXsKLSAgICBpZiAoIXN0ZDo6aXNmaW5pdGUodGltZSkpCi0gICAgICAgIHRp
bWUgPSAwOwotICAgIGludCBzZWNvbmRzID0gZmFic2YodGltZSk7Ci0gICAgaW50IGhvdXJzID0g
c2Vjb25kcyAvICg2MCAqIDYwKTsKLSAgICBpbnQgbWludXRlcyA9IChzZWNvbmRzIC8gNjApICUg
NjA7Ci0gICAgc2Vjb25kcyAlPSA2MDsKLQotICAgIGlmIChob3VycykgewotICAgICAgICBpZiAo
aG91cnMgPiA5KQotICAgICAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlcyUwMmQ6JTAy
ZDolMDJkIiwgKHRpbWUgPCAwID8gIi0iIDogIiIpLCBob3VycywgbWludXRlcywgc2Vjb25kcyk7
Ci0gICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJXMlMDFkOiUwMmQ6JTAyZCIsICh0aW1l
IDwgMCA/ICItIiA6ICIiKSwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpOwotICAgIH0KLQotICAg
IHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJXMlMDJkOiUwMmQiLCAodGltZSA8IDAgPyAiLSIgOiAi
IiksIG1pbnV0ZXMsIHNlY29uZHMpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0jZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJl
YW1lci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTE5Nzk5MGM4NzdlYmVmYTc0
MmNiMWJjNzk5ZDUzNDA2NzFhNTZjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9G
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3
NCArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MCi0gKgotICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICov
Ci0KLSNpZm5kZWYgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcl9oCi0jZGVmaW5l
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXJfaAotCi0jaWYgRU5BQkxFKFZJREVP
KSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCi0KLSNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
R1N0cmVhbWVyR1dvcmxkOwotY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTsK
LWNsYXNzIE1lZGlhUGxheWVyQ2xpZW50OwotCi1jbGFzcyBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyR1N0cmVhbWVyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyR1N0cmVhbWVyKTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyPiBjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyQmFzZSopOwotICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIo
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSopOwotICAgIHZpcnR1YWwgfkZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIoKTsKLQotICAgIHZvaWQgZW50ZXJGdWxsc2NyZWVu
KCk7Ci0gICAgdm9pZCBleGl0RnVsbHNjcmVlbigpOwotICAgIHZvaWQgZXhpdE9uVXNlclJlcXVl
c3QoKTsKLQotICAgIHZvaWQgdG9nZ2xlUGxheSgpOwotICAgIHZpcnR1YWwgdm9pZCBwbGF5U3Rh
dGVDaGFuZ2VkKCkgeyB9Ci0KLSAgICB2b2lkIGluY3JlYXNlVm9sdW1lKCk7Ci0gICAgdm9pZCBk
ZWNyZWFzZVZvbHVtZSgpOwotICAgIHZvaWQgc2V0Vm9sdW1lKGZsb2F0KTsKLQotICAgIHZpcnR1
YWwgdm9pZCB2b2x1bWVDaGFuZ2VkKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIG11dGVDaGFuZ2Vk
KCkgeyB9Ci0KLXByb3RlY3RlZDoKLSAgICBTdHJpbmcgdGltZVRvU3RyaW5nKGZsb2F0IHRpbWUp
OwotCi0gICAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSogbV9wbGF5ZXI7Ci0gICAg
TWVkaWFQbGF5ZXJDbGllbnQqIG1fY2xpZW50OwotICAgIEdTdHJlYW1lckdXb3JsZCogbV9nc3Ry
ZWFtZXJHV29ybGQ7Ci0KLXByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVXaW5k
b3coKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveVdpbmRvdygpIHsgfQotCi0gICAgdW5z
aWduZWQgbG9uZyBtX3BsYXllclZvbHVtZVNpZ25hbEhhbmRsZXI7Ci0gICAgdW5zaWduZWQgbG9u
ZyBtX3BsYXllck11dGVTaWduYWxIYW5kbGVyOwotfTsKLQotfQotI2VuZGlmCi0KLSNlbmRpZiAv
LyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdX
b3JsZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmZWMyZTI1ZDhlYTQ1Y2Nk
MTY1YjBiYzY5OGU1N2M1YTVhOTJhZTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lckdXb3JsZC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODAgKzAsMCBAQAotLyoK
LSAqICBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAotICoKLSAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0KLSNpbmNsdWRlICJHU3RyZWFtZXJHV29ybGQuaCIKLQotI2lmIEVOQUJMRShW
SURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQot
Ci0jaW5jbHVkZSAiR1JlZlB0ckdTdHJlYW1lci5oIgotI2luY2x1ZGUgIkdTdHJlYW1lclZlcnNp
b25pbmcuaCIKLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0jaW5jbHVkZSA8Z3N0L3BidXRpbHMvcGJ1
dGlscy5oPgotCi0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSNpbmNsdWRlIDxnc3QvdmlkZW8v
dmlkZW9vdmVybGF5Lmg+Ci0jZWxzZQotI2luY2x1ZGUgPGdzdC9pbnRlcmZhY2VzL3hvdmVybGF5
Lmg+Ci0jZW5kaWYKLQotCi0jaWYgUExBVEZPUk0oR1RLKQotI2luY2x1ZGUgPGd0ay9ndGsuaD4K
LSNpZmRlZiBHREtfV0lORE9XSU5HX1gxMQotI2luY2x1ZGUgPGdkay9nZGt4Lmg+IC8vIGZvciBH
REtfV0lORE9XX1hJRAotI2VuZGlmCi0jZW5kaWYKLQotI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05f
MQotc3RhdGljIGNvbnN0IGNoYXIqIGdWaWRlb0NvbnZlcnROYW1lID0gImZmbXBlZ2NvbG9yc3Bh
Y2UiOwotI2Vsc2UKLXN0YXRpYyBjb25zdCBjaGFyKiBnVmlkZW9Db252ZXJ0TmFtZSA9ICJ2aWRl
b2NvbnZlcnQiOwotI2VuZGlmCi0KLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotZ2Jvb2xlYW4gZ3N0R1dvcmxkU3luY01lc3NhZ2VDYWxsYmFjayhHc3RCdXMq
LCBHc3RNZXNzYWdlKiBtZXNzYWdlLCBncG9pbnRlciBkYXRhKQotewotICAgIEFTU0VSVChHU1Rf
TUVTU0FHRV9UWVBFKG1lc3NhZ2UpID09IEdTVF9NRVNTQUdFX0VMRU1FTlQpOwotCi0gICAgR1N0
cmVhbWVyR1dvcmxkKiBnc3RHV29ybGQgPSBzdGF0aWNfY2FzdDxHU3RyZWFtZXJHV29ybGQqPihk
YXRhKTsKLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICBjb25zdCBHc3RTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IGdzdF9tZXNzYWdlX2dldF9zdHJ1Y3R1cmUobWVzc2FnZSk7Ci0KLSAgICBp
ZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJwcmVwYXJlLXh3aW5kb3ctaWQi
KQotICAgICAgICB8fCBnc3Rfc3RydWN0dXJlX2hhc19uYW1lKHN0cnVjdHVyZSwgImhhdmUtbnMt
dmlldyIpKQotICAgICAgICBnc3RHV29ybGQtPnNldFdpbmRvd092ZXJsYXkobWVzc2FnZSk7Ci0j
ZWxzZQotICAgIGlmIChnc3RfaXNfdmlkZW9fb3ZlcmxheV9wcmVwYXJlX3dpbmRvd19oYW5kbGVf
bWVzc2FnZShtZXNzYWdlKSkKLSAgICAgICAgZ3N0R1dvcmxkLT5zZXRXaW5kb3dPdmVybGF5KG1l
c3NhZ2UpOwotI2VuZGlmCi0gICAgcmV0dXJuIFRSVUU7Ci19Ci0KLVBhc3NSZWZQdHI8R1N0cmVh
bWVyR1dvcmxkPiBHU3RyZWFtZXJHV29ybGQ6OmNyZWF0ZUdXb3JsZChHc3RFbGVtZW50KiBwaXBl
bGluZSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdTdHJlYW1lckdXb3JsZChwaXBlbGlu
ZSkpOwotfQotCi1HU3RyZWFtZXJHV29ybGQ6OkdTdHJlYW1lckdXb3JsZChHc3RFbGVtZW50KiBw
aXBlbGluZSkKLSAgICA6IG1fcGlwZWxpbmUocGlwZWxpbmUpCi17Ci0gICAgLy8gWE92ZXJsYXkg
bWVzc2FnZXMgbmVlZCB0byBiZSBoYW5kbGVkIHN5bmNocm9ub3VzbHkuCi0gICAgR1JlZlB0cjxH
c3RCdXM+IGJ1cyA9IHdlYmtpdEdzdFBpcGVsaW5lR2V0QnVzKEdTVF9QSVBFTElORShtX3BpcGVs
aW5lKSk7Ci0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCi0gICAgZ3N0X2J1c19zZXRfc3luY19o
YW5kbGVyKGJ1cy5nZXQoKSwgZ3N0X2J1c19zeW5jX3NpZ25hbF9oYW5kbGVyLCB0aGlzKTsKLSNl
bHNlCi0gICAgZ3N0X2J1c19zZXRfc3luY19oYW5kbGVyKGJ1cy5nZXQoKSwgZ3N0X2J1c19zeW5j
X3NpZ25hbF9oYW5kbGVyLCB0aGlzLCAwKTsKLSNlbmRpZgotICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
YnVzLmdldCgpLCAic3luYy1tZXNzYWdlOjplbGVtZW50IiwgR19DQUxMQkFDSyhnc3RHV29ybGRT
eW5jTWVzc2FnZUNhbGxiYWNrKSwgdGhpcyk7Ci19Ci0KLUdTdHJlYW1lckdXb3JsZDo6fkdTdHJl
YW1lckdXb3JsZCgpCi17Ci0gICAgZXhpdEZ1bGxzY3JlZW4oKTsKLQotICAgIEdSZWZQdHI8R3N0
QnVzPiBidXMgPSB3ZWJraXRHc3RQaXBlbGluZUdldEJ1cyhHU1RfUElQRUxJTkUobV9waXBlbGlu
ZSkpOwotICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhidXMuZ2V0KCks
IHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KGdzdEdXb3JsZFN5bmNNZXNzYWdlQ2FsbGJhY2sp
LCB0aGlzKTsKLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICBnc3RfYnVzX3NldF9zeW5j
X2hhbmRsZXIoYnVzLmdldCgpLCAwLCB0aGlzKTsKLSNlbHNlCi0gICAgZ3N0X2J1c19zZXRfc3lu
Y19oYW5kbGVyKGJ1cy5nZXQoKSwgMCwgdGhpcywgMCk7Ci0jZW5kaWYKLQotICAgIG1fcGlwZWxp
bmUgPSAwOwotfQotCi1ib29sIEdTdHJlYW1lckdXb3JsZDo6ZW50ZXJGdWxsc2NyZWVuKCkKLXsK
LSAgICBpZiAobV9keW5hbWljUGFkTmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
aWYgKCFtX3ZpZGVvV2luZG93KQotICAgICAgICBtX3ZpZGVvV2luZG93ID0gUGxhdGZvcm1WaWRl
b1dpbmRvdzo6Y3JlYXRlV2luZG93KCk7Ci0KLSAgICBHc3RFbGVtZW50KiBwbGF0Zm9ybVZpZGVv
U2luayA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiYXV0b3ZpZGVvc2luayIsICJwbGF0Zm9y
bVZpZGVvU2luayIpOwotICAgIEdzdEVsZW1lbnQqIGNvbG9yc3BhY2UgPSBnc3RfZWxlbWVudF9m
YWN0b3J5X21ha2UoZ1ZpZGVvQ29udmVydE5hbWUsICJjb2xvcnNwYWNlIik7Ci0gICAgR3N0RWxl
bWVudCogcXVldWUgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoInF1ZXVlIiwgInF1ZXVlIik7
Ci0gICAgR3N0RWxlbWVudCogdmlkZW9TY2FsZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgi
dmlkZW9zY2FsZSIsICJ2aWRlb1NjYWxlIik7Ci0KLSAgICAvLyBHZXQgdmlkZW8gc2luayBiaW4g
YW5kIHRoZSB0ZWUgaW5zaWRlLgotICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gdmlkZW9TaW5rOwot
ICAgIGdfb2JqZWN0X2dldChtX3BpcGVsaW5lLCAidmlkZW8tc2luayIsICZ2aWRlb1Npbmsub3V0
UHRyKCksIE5VTEwpOwotCi0gICAgR1JlZlB0cjxHc3RFbGVtZW50PiB0ZWUgPSBhZG9wdEdSZWYo
Z3N0X2Jpbl9nZXRfYnlfbmFtZShHU1RfQklOKHZpZGVvU2luay5nZXQoKSksICJ2aWRlb1RlZSIp
KTsKLQotICAgIGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJTih2aWRlb1NpbmsuZ2V0KCkpLCBwbGF0
Zm9ybVZpZGVvU2luaywgdmlkZW9TY2FsZSwgY29sb3JzcGFjZSwgcXVldWUsIE5VTEwpOwotCi0g
ICAgLy8gRmFzdGVyIGVsZW1lbnRzIGxpbmtpbmcuCi0gICAgZ3N0X2VsZW1lbnRfbGlua19wYWRz
X2Z1bGwocXVldWUsICJzcmMiLCBjb2xvcnNwYWNlLCAic2luayIsIEdTVF9QQURfTElOS19DSEVD
S19OT1RISU5HKTsKLSAgICBnc3RfZWxlbWVudF9saW5rX3BhZHNfZnVsbChjb2xvcnNwYWNlLCAi
c3JjIiwgdmlkZW9TY2FsZSwgInNpbmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9USElORyk7Ci0g
ICAgZ3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1bGwodmlkZW9TY2FsZSwgInNyYyIsIHBsYXRmb3Jt
VmlkZW9TaW5rLCAic2luayIsIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKLQotICAgIC8v
IExpbmsgYSBuZXcgc3JjIHBhZCBmcm9tIHRlZSB0byBxdWV1ZS4KLSNpZm5kZWYgR1NUX0FQSV9W
RVJTSU9OXzEKLSAgICBHUmVmUHRyPEdzdFBhZD4gc3JjUGFkID0gYWRvcHRHUmVmKGdzdF9lbGVt
ZW50X2dldF9yZXF1ZXN0X3BhZCh0ZWUuZ2V0KCksICJzcmMlZCIpKTsKLSNlbHNlCi0gICAgR1Jl
ZlB0cjxHc3RQYWQ+IHNyY1BhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRfcmVxdWVzdF9w
YWQodGVlLmdldCgpLCAic3JjXyV1IikpOwotI2VuZGlmCi0gICAgR1JlZlB0cjxHc3RQYWQ+IHNp
bmtQYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQocXVldWUsICJzaW5r
IikpOwotICAgIGdzdF9wYWRfbGluayhzcmNQYWQuZ2V0KCksIHNpbmtQYWQuZ2V0KCkpOwotCi0g
ICAgbV9keW5hbWljUGFkTmFtZS5zZXQoZ3N0X3BhZF9nZXRfbmFtZShzcmNQYWQuZ2V0KCkpKTsK
LQotICAgIC8vIFN5bmNocm9uaXplIHRoZSBuZXcgZWxlbWVudHMgd2l0aCBwaXBlbGluZSBzdGF0
ZS4gSWYgaXQncwotICAgIC8vIHBhdXNlZCBsaW1pdCB0aGUgc3RhdGUgY2hhbmdlIHRvIHByZS1y
b2xsaW5nLgotICAgIEdzdFN0YXRlIHN0YXRlOwotICAgIGdzdF9lbGVtZW50X2dldF9zdGF0ZSht
X3BpcGVsaW5lLCAmc3RhdGUsIDAsIDApOwotICAgIGlmIChzdGF0ZSA8IEdTVF9TVEFURV9QTEFZ
SU5HKQotICAgICAgICBzdGF0ZSA9IEdTVF9TVEFURV9SRUFEWTsKLQotICAgIGdzdF9lbGVtZW50
X3NldF9zdGF0ZShwbGF0Zm9ybVZpZGVvU2luaywgc3RhdGUpOwotICAgIGdzdF9lbGVtZW50X3Nl
dF9zdGF0ZSh2aWRlb1NjYWxlLCBzdGF0ZSk7Ci0gICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKGNv
bG9yc3BhY2UsIHN0YXRlKTsKLSAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUocXVldWUsIHN0YXRl
KTsKLQotI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQotICAgIC8vIFF1ZXJ5IHRoZSBjdXJyZW50
IG1lZGlhIHNlZ21lbnQgaW5mb3JtYXRpb25zIGFuZCBzZW5kIHRoZW0gdG93YXJkcwotICAgIC8v
IHRoZSBuZXcgdGVlIGJyYW5jaCBkb3duc3RyZWFtLgotICAgIEdzdFF1ZXJ5KiBxdWVyeSA9IGdz
dF9xdWVyeV9uZXdfc2VnbWVudChHU1RfRk9STUFUX1RJTUUpOwotICAgIGdib29sZWFuIHF1ZXJ5
UmVzdWx0ID0gZ3N0X2VsZW1lbnRfcXVlcnkobV9waXBlbGluZSwgcXVlcnkpOwotCi0gICAgaWYg
KCFxdWVyeVJlc3VsdCkgewotICAgICAgICBnc3RfcXVlcnlfdW5yZWYocXVlcnkpOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBnaW50NjQgcG9zaXRpb247Ci0gICAgR3N0Rm9y
bWF0IGZvcm1hdDsKLSAgICBpZiAoIWdzdF9lbGVtZW50X3F1ZXJ5X3Bvc2l0aW9uKG1fcGlwZWxp
bmUsICZmb3JtYXQsICZwb3NpdGlvbikpCi0gICAgICAgIHBvc2l0aW9uID0gMDsKLQotICAgIGdk
b3VibGUgcmF0ZTsKLSAgICBnaW50NjQgc3RhcnRWYWx1ZSwgc3RvcFZhbHVlOwotICAgIGdzdF9x
dWVyeV9wYXJzZV9zZWdtZW50KHF1ZXJ5LCAmcmF0ZSwgJmZvcm1hdCwgJnN0YXJ0VmFsdWUsICZz
dG9wVmFsdWUpOwotCi0gICAgR3N0RXZlbnQqIGV2ZW50ID0gZ3N0X2V2ZW50X25ld19uZXdfc2Vn
bWVudChGQUxTRSwgcmF0ZSwgZm9ybWF0LCBzdGFydFZhbHVlLCBzdG9wVmFsdWUsIHBvc2l0aW9u
KTsKLSAgICBnc3RfcGFkX3B1c2hfZXZlbnQoc3JjUGFkLmdldCgpLCBldmVudCk7Ci0KLSAgICBn
c3RfcXVlcnlfdW5yZWYocXVlcnkpOwotI2VuZGlmCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLSNp
ZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQotc3RhdGljIEdzdFBhZFByb2JlUmV0dXJuIGdzdEdXb3Js
ZFBhZFByb2JlQ2FsbGJhY2soR3N0UGFkKiBwYWQsIEdzdFBhZFByb2JlSW5mbyogaW5mbywgR1N0
cmVhbWVyR1dvcmxkKiBnc3RHV29ybGQpCi17Ci0gICAgZ3N0R1dvcmxkLT5yZW1vdmVQbGF0Zm9y
bVZpZGVvU2luaygpOwotICAgIHJldHVybiBHU1RfUEFEX1BST0JFX1JFTU9WRTsKLX0KLSNlbmRp
ZgotCi12b2lkIEdTdHJlYW1lckdXb3JsZDo6ZXhpdEZ1bGxzY3JlZW4oKQotewotICAgIGlmICgh
bV9keW5hbWljUGFkTmFtZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR1JlZlB0cjxHc3RFbGVt
ZW50PiB2aWRlb1Npbms7Ci0gICAgZ19vYmplY3RfZ2V0KG1fcGlwZWxpbmUsICJ2aWRlby1zaW5r
IiwgJnZpZGVvU2luay5vdXRQdHIoKSwgTlVMTCk7Ci0KLSAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+
IHRlZSA9IGFkb3B0R1JlZihnc3RfYmluX2dldF9ieV9uYW1lKEdTVF9CSU4odmlkZW9TaW5rLmdl
dCgpKSwgInZpZGVvVGVlIikpOwotICAgIEdSZWZQdHI8R3N0UGFkPiBzcmNQYWQgPSBhZG9wdEdS
ZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQodGVlLmdldCgpLCBtX2R5bmFtaWNQYWROYW1l
LmdldCgpKSk7Ci0KLSAgICAvLyBCbG9jayBkYXRhIGZsb3cgdG93YXJkcyB0aGUgcGlwZWxpbmUg
YnJhbmNoIHRvIHJlbW92ZS4gTm8gbmVlZAotICAgIC8vIGZvciBwYWQgYmxvY2tpbmcgaWYgdGhl
IHBpcGVsaW5lIGlzIHBhdXNlZC4KLSAgICBHc3RTdGF0ZSBzdGF0ZTsKLSAgICBnc3RfZWxlbWVu
dF9nZXRfc3RhdGUobV9waXBlbGluZSwgJnN0YXRlLCAwLCAwKTsKLSNpZmRlZiBHU1RfQVBJX1ZF
UlNJT05fMQotICAgIGlmIChzdGF0ZSA+PSBHU1RfU1RBVEVfUExBWUlORykKLSAgICAgICAgZ3N0
X3BhZF9hZGRfcHJvYmUoc3JjUGFkLmdldCgpLCBHU1RfUEFEX1BST0JFX1RZUEVfSURMRSwgcmVp
bnRlcnByZXRfY2FzdDxHc3RQYWRQcm9iZUNhbGxiYWNrPihnc3RHV29ybGRQYWRQcm9iZUNhbGxi
YWNrKSwgdGhpcywgMCk7Ci0gICAgZWxzZQotI2Vsc2UKLSAgICBpZiAoc3RhdGUgPCBHU1RfU1RB
VEVfUExBWUlORyB8fCBnc3RfcGFkX3NldF9ibG9ja2VkKHNyY1BhZC5nZXQoKSwgdHJ1ZSkpCi0j
ZW5kaWYKLSAgICAgICAgcmVtb3ZlUGxhdGZvcm1WaWRlb1NpbmsoKTsKLQotICAgIG1fdmlkZW9X
aW5kb3cgPSAwOwotfQotCi12b2lkIEdTdHJlYW1lckdXb3JsZDo6cmVtb3ZlUGxhdGZvcm1WaWRl
b1NpbmsoKQotewotICAgIGlmICghbV9keW5hbWljUGFkTmFtZSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgLy8gR2V0IHZpZGVvIHNpbmsgYmluIGFuZCB0aGUgZWxlbWVudHMgdG8gcmVtb3ZlLgot
ICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gdmlkZW9TaW5rOwotICAgIGdfb2JqZWN0X2dldChtX3Bp
cGVsaW5lLCAidmlkZW8tc2luayIsICZ2aWRlb1Npbmsub3V0UHRyKCksIE5VTEwpOwotCi0gICAg
R1JlZlB0cjxHc3RFbGVtZW50PiB0ZWUgPSBhZG9wdEdSZWYoZ3N0X2Jpbl9nZXRfYnlfbmFtZShH
U1RfQklOKHZpZGVvU2luay5nZXQoKSksICJ2aWRlb1RlZSIpKTsKLSAgICBHUmVmUHRyPEdzdEVs
ZW1lbnQ+IHBsYXRmb3JtVmlkZW9TaW5rID0gYWRvcHRHUmVmKGdzdF9iaW5fZ2V0X2J5X25hbWUo
R1NUX0JJTih2aWRlb1NpbmsuZ2V0KCkpLCAicGxhdGZvcm1WaWRlb1NpbmsiKSk7Ci0gICAgR1Jl
ZlB0cjxHc3RFbGVtZW50PiBxdWV1ZSA9IGFkb3B0R1JlZihnc3RfYmluX2dldF9ieV9uYW1lKEdT
VF9CSU4odmlkZW9TaW5rLmdldCgpKSwgInF1ZXVlIikpOwotICAgIEdSZWZQdHI8R3N0RWxlbWVu
dD4gY29sb3JzcGFjZSA9IGFkb3B0R1JlZihnc3RfYmluX2dldF9ieV9uYW1lKEdTVF9CSU4odmlk
ZW9TaW5rLmdldCgpKSwgImNvbG9yc3BhY2UiKSk7Ci0gICAgR1JlZlB0cjxHc3RFbGVtZW50PiB2
aWRlb1NjYWxlID0gYWRvcHRHUmVmKGdzdF9iaW5fZ2V0X2J5X25hbWUoR1NUX0JJTih2aWRlb1Np
bmsuZ2V0KCkpLCAidmlkZW9TY2FsZSIpKTsKLQotICAgIEdSZWZQdHI8R3N0UGFkPiBzcmNQYWQg
PSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQodGVlLmdldCgpLCBtX2R5bmFt
aWNQYWROYW1lLmdldCgpKSk7Ci0gICAgR1JlZlB0cjxHc3RQYWQ+IHNpbmtQYWQgPSBhZG9wdEdS
ZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQocXVldWUuZ2V0KCksICJzaW5rIikpOwotICAg
IGdzdF9wYWRfdW5saW5rKHNyY1BhZC5nZXQoKSwgc2lua1BhZC5nZXQoKSk7Ci0gICAgZ3N0X2Vs
ZW1lbnRfcmVsZWFzZV9yZXF1ZXN0X3BhZCh0ZWUuZ2V0KCksIHNyY1BhZC5nZXQoKSk7Ci0KLSAg
ICBnc3RfZWxlbWVudF91bmxpbmtfbWFueShxdWV1ZS5nZXQoKSwgY29sb3JzcGFjZS5nZXQoKSwg
dmlkZW9TY2FsZS5nZXQoKSwgcGxhdGZvcm1WaWRlb1NpbmsuZ2V0KCksIE5VTEwpOwotICAgIGdz
dF9iaW5fcmVtb3ZlX21hbnkoR1NUX0JJTih2aWRlb1NpbmsuZ2V0KCkpLCBxdWV1ZS5nZXQoKSwg
Y29sb3JzcGFjZS5nZXQoKSwgdmlkZW9TY2FsZS5nZXQoKSwgcGxhdGZvcm1WaWRlb1NpbmsuZ2V0
KCksIE5VTEwpOwotICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShwbGF0Zm9ybVZpZGVvU2luay5n
ZXQoKSwgR1NUX1NUQVRFX05VTEwpOwotICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZSh2aWRlb1Nj
YWxlLmdldCgpLCBHU1RfU1RBVEVfTlVMTCk7Ci0gICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKGNv
bG9yc3BhY2UuZ2V0KCksIEdTVF9TVEFURV9OVUxMKTsKLSAgICBnc3RfZWxlbWVudF9zZXRfc3Rh
dGUocXVldWUuZ2V0KCksIEdTVF9TVEFURV9OVUxMKTsKLQotICAgIG1fZHluYW1pY1BhZE5hbWUu
Y2xlYXIoKTsKLX0KLQotdm9pZCBHU3RyZWFtZXJHV29ybGQ6OnNldFdpbmRvd092ZXJsYXkoR3N0
TWVzc2FnZSogbWVzc2FnZSkKLXsKLSAgICBHc3RPYmplY3QqIHNpbmsgPSBHU1RfTUVTU0FHRV9T
UkMobWVzc2FnZSk7Ci0KLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICBpZiAoIUdTVF9J
U19YX09WRVJMQVkoc2luaykpCi0jZWxzZQotICAgIGlmICghR1NUX0lTX1ZJREVPX09WRVJMQVko
c2luaykpCi0jZW5kaWYKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGdfb2JqZWN0X2NsYXNz
X2ZpbmRfcHJvcGVydHkoR19PQkpFQ1RfR0VUX0NMQVNTKHNpbmspLCAiZm9yY2UtYXNwZWN0LXJh
dGlvIikpCi0gICAgICAgIGdfb2JqZWN0X3NldChzaW5rLCAiZm9yY2UtYXNwZWN0LXJhdGlvIiwg
VFJVRSwgTlVMTCk7Ci0KLSAgICBpZiAobV92aWRlb1dpbmRvdykgewotICAgICAgICBtX3ZpZGVv
V2luZG93LT5wcmVwYXJlRm9yT3ZlcmxheShtZXNzYWdlKTsKLQotI2lmbmRlZiBHU1RfQVBJX1ZF
UlNJT05fMQotLy8gZ3N0X3hfb3ZlcmxheV9zZXRfd2luZG93X2hhbmRsZSB3YXMgaW50cm9kdWNl
ZCBpbiAtcGx1Z2lucy1iYXNlCi0vLyAwLjEwLjMxLCBqdXN0IGxpa2UgdGhlIG1hY3JvIGZvciBj
aGVja2luZyB0aGUgdmVyc2lvbi4KLSNpZmRlZiBHU1RfQ0hFQ0tfUExVR0lOU19CQVNFX1ZFUlNJ
T04KLSAgICAgICAgZ3N0X3hfb3ZlcmxheV9zZXRfd2luZG93X2hhbmRsZShHU1RfWF9PVkVSTEFZ
KHNpbmspLCBtX3ZpZGVvV2luZG93LT52aWRlb1dpbmRvd0lkKCkpOwotI2Vsc2UKLSAgICAgICAg
Z3N0X3hfb3ZlcmxheV9zZXRfeHdpbmRvd19pZChHU1RfWF9PVkVSTEFZKHNpbmspLCBtX3ZpZGVv
V2luZG93LT52aWRlb1dpbmRvd0lkKCkpOwotI2VuZGlmCi0jZWxzZQotICAgICAgICBnc3Rfdmlk
ZW9fb3ZlcmxheV9zZXRfd2luZG93X2hhbmRsZShHU1RfVklERU9fT1ZFUkxBWShzaW5rKSwgbV92
aWRlb1dpbmRvdy0+dmlkZW9XaW5kb3dJZCgpKTsKLSNlbmRpZgotICAgIH0KLX0KLQotfQotI2Vu
ZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgVVNFKE5BVElWRV9GVUxM
U0NSRUVOX1ZJREVPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAyMjgwNmI0MDhmODBhNjU2ODFkNjZhZTc2YTNiOGY3MTNiMzc5NGZmLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDcyICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBT
LkwKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAq
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCi0gKi8KLQotCi0jaWZuZGVmIEdTdHJlYW1lckdXb3JsZF9oCi0jZGVmaW5lIEdTdHJl
YW1lckdXb3JsZF9oCi0jaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBVU0Uo
TkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCi0KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgot
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+
Ci0KLSNpbmNsdWRlICJQbGF0Zm9ybVZpZGVvV2luZG93LmgiCi0KLSNpbmNsdWRlIDxnbGliLmg+
Ci0KLXR5cGVkZWYgc3RydWN0IF9Hc3RFbGVtZW50IEdzdEVsZW1lbnQ7Ci10eXBlZGVmIHN0cnVj
dCBfR3N0TWVzc2FnZSBHc3RNZXNzYWdlOwotdHlwZWRlZiBzdHJ1Y3QgX0dzdEJ1cyBHc3RCdXM7
Ci10eXBlZGVmIHN0cnVjdCBfR3N0QmluIEdzdEJpbjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI7Ci0KLWdib29sZWFuIGdzdEdXb3Js
ZFN5bmNNZXNzYWdlQ2FsbGJhY2soR3N0QnVzKiBidXMsIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIGdw
b2ludGVyIGRhdGEpOwotCi1jbGFzcyBHU3RyZWFtZXJHV29ybGQgOiBwdWJsaWMgUmVmQ291bnRl
ZDxHU3RyZWFtZXJHV29ybGQ+IHsKLSAgICBmcmllbmQgZ2Jvb2xlYW4gZ3N0R1dvcmxkU3luY01l
c3NhZ2VDYWxsYmFjayhHc3RCdXMqIGJ1cywgR3N0TWVzc2FnZSogbWVzc2FnZSwgZ3BvaW50ZXIg
ZGF0YSk7Ci0KLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxHU3RyZWFtZXJHV29ybGQ+
IGNyZWF0ZUdXb3JsZChHc3RFbGVtZW50Kik7Ci0gICAgfkdTdHJlYW1lckdXb3JsZCgpOwotCi0g
ICAgR3N0RWxlbWVudCogcGlwZWxpbmUoKSBjb25zdCB7IHJldHVybiBtX3BpcGVsaW5lOyB9Ci0g
ICAgdm9pZCByZW1vdmVQbGF0Zm9ybVZpZGVvU2luaygpOwotCi0gICAgLy8gUmV0dXJucyB0aGUg
ZnVsbC1zY3JlZW4gd2luZG93IGNyZWF0ZWQKLSAgICBib29sIGVudGVyRnVsbHNjcmVlbigpOwot
ICAgIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKTsKLQotICAgIGJvb2wgaXNGdWxsc2NyZWVuKCkgY29u
c3QgeyByZXR1cm4gbV9keW5hbWljUGFkTmFtZTsgfQotCi0gICAgdm9pZCBzZXRXaW5kb3dPdmVy
bGF5KEdzdE1lc3NhZ2UqIG1lc3NhZ2UpOwotICAgIFBsYXRmb3JtVmlkZW9XaW5kb3cqIHBsYXRm
b3JtVmlkZW9XaW5kb3coKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvV2luZG93LmdldCgpOyB9Ci0K
LXByaXZhdGU6Ci0gICAgR1N0cmVhbWVyR1dvcmxkKEdzdEVsZW1lbnQqKTsKLSAgICBHc3RFbGVt
ZW50KiBtX3BpcGVsaW5lOwotICAgIFJlZlB0cjxQbGF0Zm9ybVZpZGVvV2luZG93PiBtX3ZpZGVv
V2luZG93OwotICAgIEdPd25QdHI8Z2NoYXI+IG1fZHluYW1pY1BhZE5hbWU7Ci19OwotCi19Ci0j
ZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZV
TExTQ1JFRU5fVklERU8pCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCAzNmIyNzA2Yzg0ZmNjMWI4NDZmNzVhYjk4
ODA0ZDY5YjEwYWM4M2JmLi5mYmJkMDdjYTVlMjllNmNkMjg2MDUzMjdmOGVmODZjNGY3YmE5M2Uw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2UuY3BwCkBAIC0yNyw4ICsyNyw2IEBACiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVB
TUVSKQogCiAjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgotI2luY2x1ZGUgIkZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXJHU3RyZWFtZXIuaCIKLSNpbmNsdWRlICJHU3RyZWFtZXJHV29ybGQuaCIKICNp
bmNsdWRlICJHU3RyZWFtZXJVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJHU3RyZWFtZXJWZXJzaW9u
aW5nLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCkBAIC0xNTYsMTEgKzE1NCw2IEBA
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6On5NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlKCkKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1fdm9sdW1l
RWxlbWVudC5nZXQoKSwgbV9tdXRlU2lnbmFsSGFuZGxlcik7CiAgICAgICAgIG1fbXV0ZVNpZ25h
bEhhbmRsZXIgPSAwOwogICAgIH0KLQotI2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykK
LSAgICBpZiAobV9mdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKQotICAgICAgICBleGl0RnVsbHNj
cmVlbigpOwotI2VuZGlmCiB9CiAKIC8vIFJldHVybnMgdGhlIHNpemUgb2YgdGhlIHZpZGVvCkBA
IC00NjQsMjQgKzQ1Nyw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6
cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyCiB9CiAjZW5kaWYKIAot
I2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyQmFzZTo6ZW50ZXJGdWxsc2NyZWVuKCkKLXsKLSAgICBBU1NFUlQoIW1fZnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlcik7Ci0gICAgbV9mdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyID0g
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcjo6Y3JlYXRlKHRoaXMpOwotICAgIGlm
IChtX2Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIpCi0gICAgICAgIG1fZnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlci0+ZW50ZXJGdWxsc2NyZWVuKCk7Ci19Ci0KLXZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZTo6ZXhpdEZ1bGxzY3JlZW4oKQotewotICAgIGlmICghbV9mdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyKQotICAgICAgICByZXR1cm47Ci0gICAgbV9mdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyLT5leGl0RnVsbHNjcmVlbigpOwotICAgIG1fZnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlci5yZWxlYXNlKCk7Ci19Ci0jZW5kaWYKLQogYm9vbCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlOjpzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdAogewogICAgIHJldHVybiB0
cnVlOwpAQCAtNDg5LDE0ICs0NjQsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2U6OnN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0CiAKIFBsYXRmb3JtTWVkaWEgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGxhdGZvcm1NZWRpYSgpIGNvbnN0CiB7Ci0jaWYg
VVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQotICAgIFBsYXRmb3JtTWVkaWEgcDsKLSAgICBw
LnR5cGUgPSBQbGF0Zm9ybU1lZGlhOjpHU3RyZWFtZXJHV29ybGRUeXBlOwotICAgIHAubWVkaWEu
Z3N0cmVhbWVyR1dvcmxkID0gbV9nc3RHV29ybGQuZ2V0KCk7Ci0gICAgcmV0dXJuIHA7Ci0jZWxz
ZQogICAgIHJldHVybiBOb1BsYXRmb3JtTWVkaWE7Ci0jZW5kaWYKIH0KIAogTWVkaWFQbGF5ZXI6
Ok1vdmllTG9hZFR5cGUgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bW92aWVMb2Fk
VHlwZSgpIGNvbnN0CkBAIC01MjUsMzggKzQ5MywxMyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2U6OmNyZWF0ZVZpZGVvU2luayhHc3RFbGVtZW50KiBwaXBlbGluZSkKICAg
ICBpZiAoIWluaXRpYWxpemVHU3RyZWFtZXIoKSkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgVVNF
KE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQotICAgIG1fZ3N0R1dvcmxkID0gR1N0cmVhbWVyR1dv
cmxkOjpjcmVhdGVHV29ybGQocGlwZWxpbmUpOwotICAgIG1fd2Via2l0VmlkZW9TaW5rID0gd2Vi
a2l0VmlkZW9TaW5rTmV3KG1fZ3N0R1dvcmxkLmdldCgpKTsKLSNlbHNlCiAgICAgVU5VU0VEX1BB
UkFNKHBpcGVsaW5lKTsKICAgICBtX3dlYmtpdFZpZGVvU2luayA9IHdlYmtpdFZpZGVvU2lua05l
dygpOwotI2VuZGlmCiAKICAgICBtX3JlcGFpbnRIYW5kbGVyID0gZ19zaWduYWxfY29ubmVjdCht
X3dlYmtpdFZpZGVvU2luay5nZXQoKSwgInJlcGFpbnQtcmVxdWVzdGVkIiwgR19DQUxMQkFDSyht
ZWRpYVBsYXllclByaXZhdGVSZXBhaW50Q2FsbGJhY2spLCB0aGlzKTsKIAogICAgIG1fdmlkZW9T
aW5rQmluID0gZ3N0X2Jpbl9uZXcobnVsbHB0cik7CiAKLSNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JF
RU5fVklERU8pCi0gICAgLy8gQnVpbGQgYSBuZXcgdmlkZW8gc2luayBjb25zaXN0aW5nIG9mIGEg
YmluIGNvbnRhaW5pbmcgYSB0ZWUKLSAgICAvLyAobWVhbnQgdG8gZGlzdHJpYnV0ZSBkYXRhIHRv
IG11bHRpcGxlIHZpZGVvIHNpbmtzKSBhbmQgb3VyCi0gICAgLy8gaW50ZXJuYWwgdmlkZW8gc2lu
ay4gRm9yIGZ1bGxzY3JlZW4gd2UgY3JlYXRlIGFuIGF1dG92aWRlb3NpbmsKLSAgICAvLyBhbmQg
aW5pdGlhbGx5IGJsb2NrIHRoZSBkYXRhIGZsb3cgdG93YXJkcyBpdCBhbmQgY29uZmlndXJlIGl0
Ci0KLSAgICBHc3RFbGVtZW50KiB2aWRlb1RlZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgi
dGVlIiwgInZpZGVvVGVlIik7Ci0gICAgR3N0RWxlbWVudCogcXVldWUgPSBnc3RfZWxlbWVudF9m
YWN0b3J5X21ha2UoInF1ZXVlIiwgbnVsbHB0cik7Ci0KLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05f
MQotICAgIEdSZWZQdHI8R3N0UGFkPiBzaW5rUGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dl
dF9zdGF0aWNfcGFkKHZpZGVvVGVlLCAic2luayIpKTsKLSAgICBHU1RfT0JKRUNUX0ZMQUdfU0VU
KEdTVF9PQkpFQ1Qoc2lua1BhZC5nZXQoKSksIEdTVF9QQURfRkxBR19QUk9YWV9BTExPQ0FUSU9O
KTsKLSNlbmRpZgotCi0gICAgZ3N0X2Jpbl9hZGRfbWFueShHU1RfQklOKG1fdmlkZW9TaW5rQmlu
LmdldCgpKSwgdmlkZW9UZWUsIHF1ZXVlLCBudWxscHRyKTsKLQotICAgIC8vIExpbmsgYSBuZXcg
c3JjIHBhZCBmcm9tIHRlZSB0byBxdWV1ZTEuCi0gICAgZ3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1
bGwodmlkZW9UZWUsIG51bGxwdHIsIHF1ZXVlLCAic2luayIsIEdTVF9QQURfTElOS19DSEVDS19O
T1RISU5HKTsKLSNlbmRpZgotCiAgICAgR3N0RWxlbWVudCogdmlkZW9TaW5rID0gbnVsbHB0cjsK
ICAgICBtX2Zwc1NpbmsgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImZwc2Rpc3BsYXlzaW5r
IiwgInNpbmsiKTsKICAgICBpZiAobV9mcHNTaW5rKSB7CkBAIC01OTQsMTIgKzUzNyw2IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y3JlYXRlVmlkZW9TaW5rKEdzdEVs
ZW1lbnQqIHBpcGVsaW5lKQogICAgIEFTU0VSVCh2aWRlb1NpbmspOwogCiAgICAgR3N0RWxlbWVu
dCogZmlyc3RDaGlsZCA9IHZpZGVvU2luazsKLSNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklE
RU8pCi0gICAgLy8gRmFzdGVyIGVsZW1lbnRzIGxpbmtpbmcuCi0gICAgZ3N0X2VsZW1lbnRfbGlu
a19wYWRzX2Z1bGwocXVldWUsICJzcmMiLCB2aWRlb1NpbmssICJzaW5rIiwgR1NUX1BBRF9MSU5L
X0NIRUNLX05PVEhJTkcpOwotCi0gICAgZmlyc3RDaGlsZCA9IHZpZGVvVGVlOwotI2VuZGlmCiAg
ICAgR1JlZlB0cjxHc3RQYWQ+IHBhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRfc3RhdGlj
X3BhZChmaXJzdENoaWxkLCAic2luayIpKTsKICAgICBnc3RfZWxlbWVudF9hZGRfcGFkKG1fdmlk
ZW9TaW5rQmluLmdldCgpLCBnc3RfZ2hvc3RfcGFkX25ldygic2luayIsIHBhZC5nZXQoKSkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgK
aW5kZXggZDhkN2I0YWRiMWViYTVjN2RmMjNhZjA2ZmNjZjA5ZmVjNjY1YmE0My4uNmYwMDgyMTFi
ZjVmMWQxYmY5MTE0ZjczOWIwN2ZjOTEwYjNhOTA4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCkBAIC00MywxMSArNDMsOSBAQCB0eXBl
ZGVmIHN0cnVjdCBfV2ViS2l0VmlkZW9TaW5rIFdlYktpdFZpZGVvU2luazsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOwog
Y2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIEludFJlY3Q7Ci1j
bGFzcyBHU3RyZWFtZXJHV29ybGQ7CiAKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2UgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlCiAjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpCkBAIC04NCwxMiArODIsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIHZpcnR1YWwgZmxvYXQgbWF4VGltZUxvYWRlZCgpIGNvbnN0IHsgcmV0dXJuIDAuMDsgfQog
Ci0jaWYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQotICAgIHZvaWQgZW50ZXJGdWxsc2Ny
ZWVuKCk7Ci0gICAgdm9pZCBleGl0RnVsbHNjcmVlbigpOwotICAgIGJvb2wgY2FuRW50ZXJGdWxs
c2NyZWVuKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotI2VuZGlmCi0KICAgICBib29sIHN1cHBv
cnRzRnVsbHNjcmVlbigpIGNvbnN0OwogICAgIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRpYSgp
IGNvbnN0OwogCkBAIC0xMjYsMTAgKzExOCw2IEBAIHByb3RlY3RlZDoKICAgICBJbnRTaXplIG1f
c2l6ZTsKICAgICBHTXV0ZXgqIG1fYnVmZmVyTXV0ZXg7CiAgICAgR3N0QnVmZmVyKiBtX2J1ZmZl
cjsKLSNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCi0gICAgUmVmUHRyPEdTdHJlYW1l
ckdXb3JsZD4gbV9nc3RHV29ybGQ7Ci0gICAgT3duUHRyPEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXJHU3RyZWFtZXI+IG1fZnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjsKLSNlbmRpZgogICAgIHVu
c2lnbmVkIGxvbmcgbV92b2x1bWVUaW1lckhhbmRsZXI7CiAgICAgdW5zaWduZWQgbG9uZyBtX211
dGVUaW1lckhhbmRsZXI7CiAgICAgdW5zaWduZWQgbG9uZyBtX3JlcGFpbnRIYW5kbGVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRm
b3JtVmlkZW9XaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9QbGF0Zm9ybVZpZGVvV2luZG93LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDRhMWJjOWYwZmQ0Y2QyZGYzN2NlZDdjMTU4MzgxM2Y4NjlmYmMwZjcuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3cuaAorKysgL2Rldi9udWxsCkBA
IC0xLDY1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAotICoK
LSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZu
ZGVmIFBsYXRmb3JtVmlkZW9XaW5kb3dfaAotI2RlZmluZSBQbGF0Zm9ybVZpZGVvV2luZG93X2gK
LSNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIFVTRShOQVRJVkVfRlVMTFND
UkVFTl9WSURFTykKLQotI2luY2x1ZGUgIldpZGdldC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotI2lmIFBMQVRGT1JNKE1BQykK
LSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jZW5kaWYKLQotdHlwZWRlZiBzdHJ1Y3QgX0dz
dE1lc3NhZ2UgR3N0TWVzc2FnZTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBQbGF0
Zm9ybVZpZGVvV2luZG93IDogcHVibGljIFJlZkNvdW50ZWQ8UGxhdGZvcm1WaWRlb1dpbmRvdz4g
ewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1WaWRlb1dp
bmRvdz4gY3JlYXRlV2luZG93KCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3JtVmlkZW9X
aW5kb3coKSk7IH0KLQotICAgICAgICBQbGF0Zm9ybVZpZGVvV2luZG93KCk7Ci0gICAgICAgIH5Q
bGF0Zm9ybVZpZGVvV2luZG93KCk7Ci0KLQotICAgICAgICB2b2lkIHByZXBhcmVGb3JPdmVybGF5
KEdzdE1lc3NhZ2UqKTsKLSNpZiAhUExBVEZPUk0oTUFDKQotICAgICAgICBQbGF0Zm9ybVdpZGdl
dCB3aW5kb3coKSBjb25zdCB7IHJldHVybiBtX3dpbmRvdzsgfQotI2Vsc2UKLSAgICAgICAgUGxh
dGZvcm1XaWRnZXQgd2luZG93KCkgY29uc3QgeyByZXR1cm4gbV93aW5kb3cuZ2V0KCk7IH0KLSNl
bmRpZgotICAgICAgICB1bnNpZ25lZCBsb25nIHZpZGVvV2luZG93SWQoKSBjb25zdCB7IHJldHVy
biBtX3ZpZGVvV2luZG93SWQ7IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIHVuc2lnbmVkIGxv
bmcgbV92aWRlb1dpbmRvd0lkOwotICAgICAgICBQbGF0Zm9ybVdpZGdldCBtX3ZpZGVvV2luZG93
OwotI2lmICFQTEFURk9STShNQUMpCi0gICAgICAgIFBsYXRmb3JtV2lkZ2V0IG1fd2luZG93Owot
I2Vsc2UKLSAgICAgICAgUmV0YWluUHRyPE5TVmlldz4gbV93aW5kb3c7Ci0jZW5kaWYKLQotICAg
IH07Ci19Ci0KLSNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JF
RU5fVklERU8pCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93RWZsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93RWZsLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGEzZDEwZDhhY2YyMWZiMDMyMjhlZDQ1
NDQyYjNlODhiNzUyYmUyMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZv
cm1WaWRlb1dpbmRvd0VmbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAqCi0gKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0g
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIlBsYXRmb3JtVmlkZW9XaW5kb3cuaCIKLSNpZiBVU0UoR1NUUkVBTUVS
KSAmJiAhZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKLQotI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1QbGF0Zm9ybVZpZGVvV2luZG93
OjpQbGF0Zm9ybVZpZGVvV2luZG93KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1Q
bGF0Zm9ybVZpZGVvV2luZG93Ojp+UGxhdGZvcm1WaWRlb1dpbmRvdygpCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KLQotdm9pZCBQbGF0Zm9ybVZpZGVvV2luZG93OjpwcmVwYXJlRm9yT3Zl
cmxheShHc3RNZXNzYWdlKikKLXsKLX0KLQotI2VuZGlmIC8vIFVTRShHU1RSRUFNRVIpICYmICFk
ZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dHdGsuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5k
b3dHdGsuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzM1NzJiMjc2MDYxOGZm
OGQ5OWM0ZmFiZDg1ZTgwZjc1MTJkMzczLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9QbGF0Zm9ybVZpZGVvV2luZG93R3RrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAotICoKLSAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
Ci0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
Ci0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1WaWRlb1dpbmRvdy5oIgotI2lmIEVOQUJMRShWSURFTykg
JiYgVVNFKEdTVFJFQU1FUikgJiYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQotCi0jaW5j
bHVkZSA8Z3RrL2d0ay5oPgotCi0jaWZkZWYgR0RLX1dJTkRPV0lOR19YMTEKLSNpbmNsdWRlIDxn
ZGsvZ2RreC5oPiAvLyBmb3IgR0RLX1dJTkRPV19YSUQKLSNlbmRpZgotCi11c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKLQotUGxhdGZvcm1WaWRlb1dpbmRvdzo6UGxhdGZvcm1WaWRlb1dpbmRvdygp
Ci17Ci0gICAgbV93aW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1RPUExFVkVMKTsK
LSAgICBndGtfd2lkZ2V0X3NldF9ldmVudHMobV93aW5kb3csIEdES19QT0lOVEVSX01PVElPTl9N
QVNLIHwgR0RLX0tFWV9QUkVTU19NQVNLIHwgR0RLX0ZPQ1VTX0NIQU5HRV9NQVNLKTsKLQotICAg
IG1fdmlkZW9XaW5kb3cgPSBndGtfZHJhd2luZ19hcmVhX25ldygpOwotICAgIGd0a193aWRnZXRf
c2V0X2RvdWJsZV9idWZmZXJlZChtX3ZpZGVvV2luZG93LCBGQUxTRSk7Ci0gICAgZ3RrX2NvbnRh
aW5lcl9hZGQoR1RLX0NPTlRBSU5FUihtX3dpbmRvdyksIG1fdmlkZW9XaW5kb3cpOwotCi0gICAg
Z3RrX3dpZGdldF9yZWFsaXplKG1fd2luZG93KTsKLQotI2lmZGVmIEdES19XSU5ET1dJTkdfWDEx
Ci0gICAgbV92aWRlb1dpbmRvd0lkID0gR0RLX1dJTkRPV19YSUQoZ3RrX3dpZGdldF9nZXRfd2lu
ZG93KG1fd2luZG93KSk7Ci0jZW5kaWYKLQotfQotCi1QbGF0Zm9ybVZpZGVvV2luZG93Ojp+UGxh
dGZvcm1WaWRlb1dpbmRvdygpCi17Ci0gICAgaWYgKG1fdmlkZW9XaW5kb3cpIHsKLSAgICAgICAg
Z3RrX3dpZGdldF9kZXN0cm95KG1fdmlkZW9XaW5kb3cpOwotICAgICAgICBtX3ZpZGVvV2luZG93
ID0gMDsKLSAgICB9Ci0KLSAgICBpZiAobV93aW5kb3cpIHsKLSAgICAgICAgZ3RrX3dpZGdldF9k
ZXN0cm95KG1fd2luZG93KTsKLSAgICAgICAgbV93aW5kb3cgPSAwOwotICAgIH0KLQotICAgIG1f
dmlkZW9XaW5kb3dJZCA9IDA7Ci19Ci0KLXZvaWQgUGxhdGZvcm1WaWRlb1dpbmRvdzo6cHJlcGFy
ZUZvck92ZXJsYXkoR3N0TWVzc2FnZSopCi17Ci19Ci0jZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAm
JiBVU0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCi0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9y
bVZpZGVvV2luZG93TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dNYWMubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGEzNGFiNzhlNDA2ZGZmNjNkMWY4YWEyOTkyY2EyZmU4OWIxYjg0NjEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dNYWMubW0KKysrIC9k
ZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxp
YSBTLkwKLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlBsYXRmb3JtVmlkZW9XaW5kb3cu
aCIKLQotI2lmIFVTRShHU1RSRUFNRVIpICYmICFkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQot
Ci0jaW5jbHVkZSA8Z3N0L2dzdC5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotUGxh
dGZvcm1WaWRlb1dpbmRvdzo6UGxhdGZvcm1WaWRlb1dpbmRvdygpCi17Ci0gICAgbV93aW5kb3cg
PSBhZG9wdE5TKFtbTlNWaWV3IGFsbG9jXSBpbml0XSk7Ci0gICAgbV92aWRlb1dpbmRvd0lkID0g
cmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBsb25nPihtX3dpbmRvdy5nZXQoKSk7Ci19Ci0KLVBs
YXRmb3JtVmlkZW9XaW5kb3c6On5QbGF0Zm9ybVZpZGVvV2luZG93KCkKLXsKLSAgICBtX3ZpZGVv
V2luZG93SWQgPSAwOwotfQotCi12b2lkIFBsYXRmb3JtVmlkZW9XaW5kb3c6OnByZXBhcmVGb3JP
dmVybGF5KEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCi17Ci0gICAgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFz
X25hbWUobWVzc2FnZS0+c3RydWN0dXJlLCAiaGF2ZS1ucy12aWV3IikpIHsKLSAgICAgICAgbV92
aWRlb1dpbmRvdyA9IHN0YXRpY19jYXN0PFBsYXRmb3JtV2lkZ2V0PihnX3ZhbHVlX2dldF9wb2lu
dGVyKGdzdF9zdHJ1Y3R1cmVfZ2V0X3ZhbHVlKG1lc3NhZ2UtPnN0cnVjdHVyZSwgIm5zdmlldyIp
KSk7Ci0gICAgICAgIEFTU0VSVChtX3ZpZGVvV2luZG93KTsKLSAgICAgICAgW21fd2luZG93Lmdl
dCgpIGFkZFN1YnZpZXc6bV92aWRlb1dpbmRvd107Ci0gICAgfQotfQotCi0jZW5kaWYgLy8gVVNF
KEdTVFJFQU1FUikgJiYgIWRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dp
bmRvd05peC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
UGxhdGZvcm1WaWRlb1dpbmRvd05peC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDJkOWRhMmY5MGQ2YjYwMzcxNDMzMGYzOTZmNDE1YjA4NjczZDA2NDAuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dOaXguY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBTYW1zdW5nIEVs
ZWN0cm9uaWNzCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUGxh
dGZvcm1WaWRlb1dpbmRvdy5oIgotCi0jaWYgVVNFKEdTVFJFQU1FUikgJiYgIWRlZmluZWQoR1NU
X0FQSV9WRVJTSU9OXzEpCi0KLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotCi11c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKLQotUGxhdGZvcm1WaWRlb1dpbmRvdzo6UGxhdGZvcm1WaWRlb1dp
bmRvdygpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotUGxhdGZvcm1WaWRlb1dpbmRv
dzo6flBsYXRmb3JtVmlkZW9XaW5kb3coKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0K
LXZvaWQgUGxhdGZvcm1WaWRlb1dpbmRvdzo6cHJlcGFyZUZvck92ZXJsYXkoR3N0TWVzc2FnZSop
Ci17Ci19Ci0KLSNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSKSAmJiAhZGVmaW5lZChHU1RfQVBJX1ZF
UlNJT05fMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93UHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dQcml2YXRlLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3MmI1MjJiZTU0OTJhMmIxOTZmZTk3NTBlZmYy
MDIxMTAzN2M3NWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlk
ZW9XaW5kb3dQcml2YXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICAg
IENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAg
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAg
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCi0qLwotCi0jaWZuZGVmIFBsYXRmb3JtVmlkZW9XaW5kb3dQcml2YXRlX2gKLSNkZWZp
bmUgUGxhdGZvcm1WaWRlb1dpbmRvd1ByaXZhdGVfaAotI2lmIEVOQUJMRShWSURFTykgJiYgVVNF
KEdTVFJFQU1FUikgJiYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQotCi0jaW5jbHVkZSA8
UUV2ZW50PgotI2luY2x1ZGUgPFFUaW1lcj4KLQotI2luY2x1ZGUgPFFXaW5kb3c+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKLQotY2xhc3MgRnVsbFNj
cmVlblZpZGVvV2luZG93OiBwdWJsaWMgUVdpbmRvdyB7Ci1RX09CSkVDVAotcHVibGljOgotICAg
IEZ1bGxTY3JlZW5WaWRlb1dpbmRvdygpOwotICAgIHZvaWQgc2V0VmlkZW9FbGVtZW50KEhUTUxW
aWRlb0VsZW1lbnQqKTsKLVFfU0lHTkFMUzoKLSAgICB2b2lkIGNsb3NlZCgpOwotcHJvdGVjdGVk
OgotICAgIHZvaWQga2V5UHJlc3NFdmVudChRS2V5RXZlbnQqKTsKLSAgICBib29sIGV2ZW50KFFF
dmVudCopOwotCi1wdWJsaWMgUV9TTE9UUzoKLSAgICB2b2lkIHNob3dGdWxsU2NyZWVuKCk7Ci0K
LXByaXZhdGUgUV9TTE9UUzoKLSAgICB2b2lkIGhpZGVDdXJzb3IoKTsKLQotcHJpdmF0ZToKLSAg
ICB2b2lkIHNob3dDdXJzb3IoKTsKLSAgICBRVGltZXIgbV9jdXJzb3JUaW1lcjsKLSAgICBIVE1M
VmlkZW9FbGVtZW50KiBtX21lZGlhRWxlbWVudDsKLX07Ci0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBVU0Uo
TkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCi0jZW5kaWYgLy8gUGxhdGZvcm1WaWRlb1dpbmRvd1By
aXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcAppbmRleCBjZmZmM2QxNjVi
YTRmYzY1OTU1YTY0NDRiZDAwMTlkZDk3YzJkYjU3Li44YjkyNDFjMDY1ODVmMTg4NDNlZDQ5YmI2
NmU3YjhkYmQxNjc0NWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcApAQCAt
OTIsMTAgKzkyLDYgQEAgc3RydWN0IF9XZWJLaXRWaWRlb1NpbmtQcml2YXRlIHsKICAgICBHc3RW
aWRlb0luZm8gaW5mbzsKICNlbmRpZgogCi0jaWYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVP
KQotICAgIFdlYkNvcmU6OkdTdHJlYW1lckdXb3JsZCogZ3N0R1dvcmxkOwotI2VuZGlmCi0KICAg
ICBHc3RDYXBzKiBjdXJyZW50Q2FwczsKIAogICAgIC8vIElmIHRoaXMgaXMgVFJVRSBhbGwgcHJv
Y2Vzc2luZyBzaG91bGQgZmluaXNoIEFTQVAKQEAgLTE2NywxNSArMTYzLDYgQEAgc3RhdGljIEdz
dEZsb3dSZXR1cm4gd2Via2l0VmlkZW9TaW5rUmVuZGVyKEdzdEJhc2VTaW5rKiBiYXNlU2luaywg
R3N0QnVmZmVyKiBidWYKICAgICAgICAgcmV0dXJuIEdTVF9GTE9XX09LOwogICAgIH0KIAotI2lm
IFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKLSAgICAvLyBJZ25vcmUgYnVmZmVycyBpZiB0
aGUgdmlkZW8gaXMgYWxyZWFkeSBpbiBmdWxsc2NyZWVuIHVzaW5nCi0gICAgLy8gYW5vdGhlciBz
aW5rLgotICAgIGlmIChwcml2LT5nc3RHV29ybGQtPmlzRnVsbHNjcmVlbigpKSB7Ci0gICAgICAg
IGdfbXV0ZXhfdW5sb2NrKHByaXYtPmJ1ZmZlck11dGV4KTsKLSAgICAgICAgcmV0dXJuIEdTVF9G
TE9XX09LOwotICAgIH0KLSNlbmRpZgotCiAgICAgcHJpdi0+YnVmZmVyID0gZ3N0X2J1ZmZlcl9y
ZWYoYnVmZmVyKTsKIAogI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQpAQCAtNDkwLDE4ICs0Nzcs
OSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfdmlkZW9fc2lua19jbGFzc19pbml0KFdlYktpdFZpZGVv
U2lua0NsYXNzKiBrbGFzcykKIH0KIAogCi0jaWYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVP
KQotR3N0RWxlbWVudCogd2Via2l0VmlkZW9TaW5rTmV3KFdlYkNvcmU6OkdTdHJlYW1lckdXb3Js
ZCogZ3N0R1dvcmxkKQotewotICAgIEdzdEVsZW1lbnQqIGVsZW1lbnQgPSBHU1RfRUxFTUVOVChn
X29iamVjdF9uZXcoV0VCS0lUX1RZUEVfVklERU9fU0lOSywgMCkpOwotICAgIFdFQktJVF9WSURF
T19TSU5LKGVsZW1lbnQpLT5wcml2LT5nc3RHV29ybGQgPSBnc3RHV29ybGQ7Ci0gICAgcmV0dXJu
IGVsZW1lbnQ7Ci19Ci0jZWxzZQogR3N0RWxlbWVudCogd2Via2l0VmlkZW9TaW5rTmV3KCkKIHsK
ICAgICByZXR1cm4gR1NUX0VMRU1FTlQoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1ZJREVPX1NJ
TkssIDApKTsKIH0KLSNlbmRpZgogCiAjZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NU
UkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5oCmluZGV4IDhjZmQyYWVkYTJlZDBh
YzcxNWNkY2ZlZWVkZGU1NmYzMWZiN2IwNzYuLmVjZDFlMmNmMThmNmZjYjBkNTMxNTA4NzU3ZDcx
NGM4YzBlZjZhNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmgKQEAgLTIyLDEwICsy
Miw2IEBACiAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCiAKLSNpZiBVU0Uo
TkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCi0jaW5jbHVkZSAiR1N0cmVhbWVyR1dvcmxkLmgiCi0j
ZW5kaWYKLQogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL2dz
dHZpZGVvc2luay5oPgogI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby5oPgpAQCAtNjEsMTEgKzU3
LDcgQEAgc3RydWN0IF9XZWJLaXRWaWRlb1NpbmtDbGFzcyB7CiAKIEdUeXBlIHdlYmtpdF92aWRl
b19zaW5rX2dldF90eXBlKCkgR19HTlVDX0NPTlNUOwogCi0jaWYgVVNFKE5BVElWRV9GVUxMU0NS
RUVOX1ZJREVPKQotR3N0RWxlbWVudCogd2Via2l0VmlkZW9TaW5rTmV3KFdlYkNvcmU6OkdTdHJl
YW1lckdXb3JsZCopOwotI2Vsc2UKIEdzdEVsZW1lbnQqIHdlYmtpdFZpZGVvU2lua05ldygpOwot
I2VuZGlmCiAKICNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSKQogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlckd0ay5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGZjNDYwMjk5NDE2NzBiNWEzNDRjM2EwYWNkMGIyYjQ5Njc2MzcwODAuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3RrL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsNDU5ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBT
LkwKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAq
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFZJREVPKSAm
JiBVU0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCi0KLSNpbmNs
dWRlICJGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrLmgiCi0KLSNpbmNsdWRlICJGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyLmgiCi0jaW5jbHVkZSAiR1JlZlB0ckd0ay5oIgot
I2luY2x1ZGUgIkdTdHJlYW1lckdXb3JsZC5oIgotI2luY2x1ZGUgIkd0a1ZlcnNpb25pbmcuaCIK
LSNpbmNsdWRlICJNZWRpYVBsYXllci5oIgotI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2UuaCIKLQotI2luY2x1ZGUgPGdkay9nZGsuaD4KLSNpbmNsdWRlIDxnZGsvZ2Rr
a2V5c3ltcy5oPgotI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+Ci0jaW5jbHVkZSA8Z3RrL2d0
ay5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotI2RlZmluZSBIVURfQVVUT19I
SURFX0lOVEVSVkFMIDMwMDAgLy8gMyBzZWNvbmRzCi0jZGVmaW5lIFBST0dSRVNTX0JBUl9VUERB
VEVfSU5URVJWQUwgMTUwIC8vIDE1MG1zCi0KLS8vIFVzZSBzeW1ib2xpYyBpY29ucyBvbmx5IGlm
IHdlIGJ1aWxkIHdpdGggR1RLKy0zIHN1cHBvcnQuIFRoZXkgY291bGQKLS8vIGJlIGVuYWJsZWQg
Zm9yIHRoZSBHVEsrMiBidWlsZCBidXQgd2UnZCBuZWVkIHRvIGJ1bXAgdGhlIHJlcXVpcmVkCi0v
LyB2ZXJzaW9uIHRvIGF0IGxlYXN0IDIuMjIuCi0jaWYgR1RLX01BSk9SX1ZFUlNJT04gPiAyCi0j
ZGVmaW5lIElDT05fTkFNRV9TVUZGSVggIi1zeW1ib2xpYyIKLSNlbHNlCi0jZGVmaW5lIElDT05f
TkFNRV9TVUZGSVgKLSNlbmRpZgotCi0jZGVmaW5lIFBMQVlfSUNPTl9OQU1FICJtZWRpYS1wbGF5
YmFjay1zdGFydCIgSUNPTl9OQU1FX1NVRkZJWAotI2RlZmluZSBQQVVTRV9JQ09OX05BTUUgIm1l
ZGlhLXBsYXliYWNrLXBhdXNlIiBJQ09OX05BTUVfU1VGRklYCi0jZGVmaW5lIEVYSVRfRlVMTFND
UkVFTl9JQ09OX05BTUUgInZpZXctcmVzdG9yZSIgSUNPTl9OQU1FX1NVRkZJWAotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBnYm9vbGVhbiBoaWRlSHVkQ2FsbGJhY2soRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlckd0ayogY29udHJvbGxlcikKLXsKLSAgICBjb250cm9sbGVyLT5oaWRl
SHVkKCk7Ci0gICAgcmV0dXJuIEZBTFNFOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4gb25GdWxsc2Ny
ZWVuR3RrTW90aW9uTm90aWZ5RXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50TW90aW9u
KiBldmVudCwgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsqIGNvbnRyb2xsZXIpCi17Ci0g
ICAgY29udHJvbGxlci0+c2hvd0h1ZCh0cnVlKTsKLSAgICByZXR1cm4gVFJVRTsKLX0KLQotc3Rh
dGljIHZvaWQgb25GdWxsc2NyZWVuR3RrQWN0aXZlTm90aWZpY2F0aW9uKEd0a1dpZGdldCogd2lk
Z2V0LCBHUGFyYW1TcGVjKiBwcm9wZXJ0eSwgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0ayog
Y29udHJvbGxlcikKLXsKLSAgICBpZiAoIWd0a193aW5kb3dfaXNfYWN0aXZlKEdUS19XSU5ET1co
d2lkZ2V0KSkpCi0gICAgICAgIGNvbnRyb2xsZXItPmhpZGVIdWQoKTsKLX0KLQotc3RhdGljIGdi
b29sZWFuIG9uRnVsbHNjcmVlbkd0a0NvbmZpZ3VyZUV2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBH
ZGtFdmVudENvbmZpZ3VyZSogZXZlbnQsIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsqIGNv
bnRyb2xsZXIpCi17Ci0gICAgY29udHJvbGxlci0+Z3RrQ29uZmlndXJlKGV2ZW50KTsKLSAgICBy
ZXR1cm4gVFJVRTsKLX0KLQotc3RhdGljIHZvaWQgb25GdWxsc2NyZWVuR3RrRGVzdHJveShHdGtX
aWRnZXQqIHdpZGdldCwgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0ayogY29udHJvbGxlcikK
LXsKLSAgICBjb250cm9sbGVyLT5leGl0RnVsbHNjcmVlbigpOwotfQotCi1zdGF0aWMgdm9pZCB0
b2dnbGVQbGF5UGF1c2VBY3RpdmF0ZWQoR3RrQWN0aW9uKiBhY3Rpb24sIEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXJHdGsqIGNvbnRyb2xsZXIpCi17Ci0gICAgY29udHJvbGxlci0+dG9nZ2xlUGxh
eSgpOwotfQotCi1zdGF0aWMgdm9pZCBleGl0RnVsbHNjcmVlbkFjdGl2YXRlZChHdGtBY3Rpb24q
IGFjdGlvbiwgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0ayogY29udHJvbGxlcikKLXsKLSAg
ICBjb250cm9sbGVyLT5leGl0T25Vc2VyUmVxdWVzdCgpOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4g
cHJvZ3Jlc3NCYXJVcGRhdGVDYWxsYmFjayhGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrKiBj
b250cm9sbGVyKQotewotICAgIHJldHVybiBjb250cm9sbGVyLT51cGRhdGVIdWRQcm9ncmVzc0Jh
cigpOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4gdGltZVNjYWxlQnV0dG9uUHJlc3NlZChHdGtXaWRn
ZXQqIHdpZGdldCwgR2RrRXZlbnRCdXR0b24qIGV2ZW50LCBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyR3RrKiBjb250cm9sbGVyKQotewotICAgIGlmIChldmVudC0+dHlwZSAhPSBHREtfQlVUVE9O
X1BSRVNTKQotICAgICAgICByZXR1cm4gRkFMU0U7Ci0KLSAgICBjb250cm9sbGVyLT5iZWdpblNl
ZWsoKTsKLSAgICByZXR1cm4gRkFMU0U7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbiB0aW1lU2NhbGVC
dXR0b25SZWxlYXNlZChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRCdXR0b24qIGV2ZW50LCBG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrKiBjb250cm9sbGVyKQotewotICAgIGNvbnRyb2xs
ZXItPmVuZFNlZWsoKTsKLSAgICByZXR1cm4gRkFMU0U7Ci19Ci0KLXN0YXRpYyB2b2lkIHRpbWVT
Y2FsZVZhbHVlQ2hhbmdlZChHdGtXaWRnZXQqIHdpZGdldCwgRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlckd0ayogY29udHJvbGxlcikKLXsKLSAgICBjb250cm9sbGVyLT5kb1NlZWsoKTsKLX0KLQot
c3RhdGljIHZvaWQgdm9sdW1lVmFsdWVDaGFuZ2VkKEd0a1NjYWxlQnV0dG9uICpidXR0b24sIGdk
b3VibGUgdmFsdWUsIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsqIGNvbnRyb2xsZXIpCi17
Ci0gICAgY29udHJvbGxlci0+c2V0Vm9sdW1lKHN0YXRpY19jYXN0PGZsb2F0Pih2YWx1ZSkpOwot
fQotCi0KLUZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGs6OkZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXJHdGsoTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSogcGxheWVyKQotICAgIDog
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcihwbGF5ZXIpCi0gICAgLCBtX2h1ZFRp
bWVvdXRJZCgwKQotICAgICwgbV9wcm9ncmVzc0JhclVwZGF0ZUlkKDApCi0gICAgLCBtX3NlZWtM
b2NrKGZhbHNlKQotICAgICwgbV93aW5kb3coMCkKLSAgICAsIG1faHVkV2luZG93KDApCi0gICAg
LCBtX3ZvbHVtZUJ1dHRvbigwKQotICAgICwgbV9rZXlQcmVzc1NpZ25hbElkKDApCi0gICAgLCBt
X2Rlc3Ryb3lTaWduYWxJZCgwKQotICAgICwgbV9pc0FjdGl2ZVNpZ25hbElkKDApCi0gICAgLCBt
X21vdGlvbk5vdGlmeVNpZ25hbElkKDApCi0gICAgLCBtX2NvbmZpZ3VyZUV2ZW50U2lnbmFsSWQo
MCkKLSAgICAsIG1faHVkTW90aW9uTm90aWZ5U2lnbmFsSWQoMCkKLSAgICAsIG1fdGltZVNjYWxl
QnV0dG9uUHJlc3NlZFNpZ25hbElkKDApCi0gICAgLCBtX3RpbWVTY2FsZUJ1dHRvblJlbGVhc2Vk
U2lnbmFsSWQoMCkKLSAgICAsIG1fcGxheUFjdGlvbkFjdGl2YXRlU2lnbmFsSWQoMCkKLSAgICAs
IG1fZXhpdEZ1bGxjcmVlbkFjdGlvbkFjdGl2YXRlU2lnbmFsSWQoMCkKLXsKLX0KLQotdm9pZCBG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrOjpndGtDb25maWd1cmUoR2RrRXZlbnRDb25maWd1
cmUqIGV2ZW50KQotewotICAgIHVwZGF0ZUh1ZFBvc2l0aW9uKCk7Ci19Ci0KLXZvaWQgRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlckd0azo6c2hvd0h1ZChib29sIGF1dG9IaWRlKQotewotICAgIGlm
ICghbV9odWRXaW5kb3cpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX2h1ZFRpbWVvdXRJ
ZCkgewotICAgICAgICBnX3NvdXJjZV9yZW1vdmUobV9odWRUaW1lb3V0SWQpOwotICAgICAgICBt
X2h1ZFRpbWVvdXRJZCA9IDA7Ci0gICAgfQotCi0gICAgLy8gU2hvdyB0aGUgY3Vyc29yLgotICAg
IEdka1dpbmRvdyogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93KG1fd2luZG93KTsKLSAg
ICBnZGtfd2luZG93X3NldF9jdXJzb3Iod2luZG93LCAwKTsKLQotICAgIC8vIFVwZGF0ZSB0aGUg
cHJvZ3Jlc3MgYmFyIGltbWVkaWF0ZWx5IGJlZm9yZSBzaG93aW5nIHRoZSB3aW5kb3cuCi0gICAg
dXBkYXRlSHVkUHJvZ3Jlc3NCYXIoKTsKLSAgICBndGtfd2lkZ2V0X3Nob3dfYWxsKG1faHVkV2lu
ZG93KTsKLSAgICB1cGRhdGVIdWRQb3NpdGlvbigpOwotCi0gICAgLy8gU3RhcnQgcGVyaW9kaWMg
dXBkYXRlcyBvZiB0aGUgcHJvZ3Jlc3MgYmFyLgotICAgIGlmICghbV9wcm9ncmVzc0JhclVwZGF0
ZUlkKSB7Ci0gICAgICAgIG1fcHJvZ3Jlc3NCYXJVcGRhdGVJZCA9IGdfdGltZW91dF9hZGQoUFJP
R1JFU1NfQkFSX1VQREFURV9JTlRFUlZBTCwgcmVpbnRlcnByZXRfY2FzdDxHU291cmNlRnVuYz4o
cHJvZ3Jlc3NCYXJVcGRhdGVDYWxsYmFjayksIHRoaXMpOwotICAgICAgICBnX3NvdXJjZV9zZXRf
bmFtZV9ieV9pZChtX3Byb2dyZXNzQmFyVXBkYXRlSWQsICJbV2ViS2l0XSBwcm9ncmVzc0JhclVw
ZGF0ZUNhbGxiYWNrIik7Ci0gICAgfQotCi0gICAgLy8gSGlkZSB0aGUgaHVkIGluIGZldyBzZWNv
bmRzLCBpZiByZXF1ZXN0ZWQuCi0gICAgaWYgKGF1dG9IaWRlKSB7Ci0gICAgICAgIG1faHVkVGlt
ZW91dElkID0gZ190aW1lb3V0X2FkZChIVURfQVVUT19ISURFX0lOVEVSVkFMLCByZWludGVycHJl
dF9jYXN0PEdTb3VyY2VGdW5jPihoaWRlSHVkQ2FsbGJhY2spLCB0aGlzKTsKLSAgICAgICAgZ19z
b3VyY2Vfc2V0X25hbWVfYnlfaWQobV9odWRUaW1lb3V0SWQsICJbV2ViS2l0XSBoaWRlSHVkQ2Fs
bGJhY2siKTsKLSAgICB9Ci19Ci0KLXZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0azo6
aGlkZUh1ZCgpCi17Ci0gICAgaWYgKG1faHVkVGltZW91dElkKSB7Ci0gICAgICAgIGdfc291cmNl
X3JlbW92ZShtX2h1ZFRpbWVvdXRJZCk7Ci0gICAgICAgIG1faHVkVGltZW91dElkID0gMDsKLSAg
ICB9Ci0KLSAgICBpZiAoIW1faHVkV2luZG93KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBL
ZWVwIHRoZSBodWQgdmlzaWJsZSBpZiBhIHNlZWsgaXMgaW4gcHJvZ3Jlc3Mgb3IgaWYgdGhlIHZv
bHVtZQotICAgIC8vIHBvcHVwIGlzIHZpc2libGUuCi0gICAgR3RrV2lkZ2V0KiB2b2x1bWVQb3B1
cCA9IGd0a19zY2FsZV9idXR0b25fZ2V0X3BvcHVwKEdUS19TQ0FMRV9CVVRUT04obV92b2x1bWVC
dXR0b24pKTsKLSAgICBpZiAobV9zZWVrTG9jayB8fCBndGtfd2lkZ2V0X2dldF92aXNpYmxlKHZv
bHVtZVBvcHVwKSkgewotICAgICAgICBzaG93SHVkKHRydWUpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgR2RrV2luZG93KiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF93aW5kb3cobV93
aW5kb3cpOwotICAgIEdSZWZQdHI8R2RrQ3Vyc29yPiBjdXJzb3IgPSBhZG9wdEdSZWYoZ2RrX2N1
cnNvcl9uZXcoR0RLX0JMQU5LX0NVUlNPUikpOwotICAgIGdka193aW5kb3dfc2V0X2N1cnNvcih3
aW5kb3csIGN1cnNvci5nZXQoKSk7Ci0KLSAgICBndGtfd2lkZ2V0X2hpZGUobV9odWRXaW5kb3cp
OwotCi0gICAgaWYgKG1fcHJvZ3Jlc3NCYXJVcGRhdGVJZCkgewotICAgICAgICBnX3NvdXJjZV9y
ZW1vdmUobV9wcm9ncmVzc0JhclVwZGF0ZUlkKTsKLSAgICAgICAgbV9wcm9ncmVzc0JhclVwZGF0
ZUlkID0gMDsKLSAgICB9Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbiBvbkZ1bGxzY3JlZW5HdGtLZXlQ
cmVzc0V2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEtleSogZXZlbnQsIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXJHdGsqIGNvbnRyb2xsZXIpCi17Ci0gICAgc3dpdGNoIChldmVudC0+
a2V5dmFsKSB7Ci0gICAgY2FzZSBHREtfRXNjYXBlOgotICAgICAgICBjb250cm9sbGVyLT5leGl0
T25Vc2VyUmVxdWVzdCgpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEdES19zcGFjZToKLSAg
ICBjYXNlIEdES19SZXR1cm46Ci0gICAgICAgIGNvbnRyb2xsZXItPnRvZ2dsZVBsYXkoKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHREtfVXA6Ci0gICAgICAgIGNvbnRyb2xsZXItPmluY3Jl
YXNlVm9sdW1lKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgR0RLX0Rvd246Ci0gICAgICAg
IGNvbnRyb2xsZXItPmRlY3JlYXNlVm9sdW1lKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1
bHQ6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIHJldHVybiBUUlVFOwotfQotCi12b2lk
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGs6OmluaXRpYWxpemVXaW5kb3coKQotewotICAg
IG1fd2luZG93ID0gcmVpbnRlcnByZXRfY2FzdDxHdGtXaWRnZXQqPihtX2dzdHJlYW1lckdXb3Js
ZC0+cGxhdGZvcm1WaWRlb1dpbmRvdygpLT53aW5kb3coKSk7Ci0KLSAgICBpZiAoIW1faHVkV2lu
ZG93KQotICAgICAgICBjcmVhdGVIdWQoKTsKLQotICAgIC8vIEVuc3VyZSBibGFjayBiYWNrZ3Jv
dW5kLgotI2lmZGVmIEdUS19BUElfVkVSU0lPTl8yCi0gICAgR2RrQ29sb3IgY29sb3IgPSB7IDEs
IDAsIDAsIDAgfTsKLSAgICBndGtfd2lkZ2V0X21vZGlmeV9iZyhtX3dpbmRvdywgR1RLX1NUQVRF
X05PUk1BTCwgJmNvbG9yKTsKLSNlbHNlCi0gICAgR2RrUkdCQSBjb2xvciA9IHsgMCwgMCwgMCwg
MX07Ci0gICAgZ3RrX3dpZGdldF9vdmVycmlkZV9iYWNrZ3JvdW5kX2NvbG9yKG1fd2luZG93LCBH
VEtfU1RBVEVfRkxBR19OT1JNQUwsICZjb2xvcik7Ci0jZW5kaWYKLSAgICBndGtfd2lkZ2V0X3Nl
dF9kb3VibGVfYnVmZmVyZWQobV93aW5kb3csIEZBTFNFKTsKLQotICAgIG1fa2V5UHJlc3NTaWdu
YWxJZCA9IGdfc2lnbmFsX2Nvbm5lY3QobV93aW5kb3csICJrZXktcHJlc3MtZXZlbnQiLCBHX0NB
TExCQUNLKG9uRnVsbHNjcmVlbkd0a0tleVByZXNzRXZlbnQpLCB0aGlzKTsKLSAgICBtX2Rlc3Ry
b3lTaWduYWxJZCA9IGdfc2lnbmFsX2Nvbm5lY3QobV93aW5kb3csICJkZXN0cm95IiwgR19DQUxM
QkFDSyhvbkZ1bGxzY3JlZW5HdGtEZXN0cm95KSwgdGhpcyk7Ci0gICAgbV9pc0FjdGl2ZVNpZ25h
bElkID0gZ19zaWduYWxfY29ubmVjdChtX3dpbmRvdywgIm5vdGlmeTo6aXMtYWN0aXZlIiwgR19D
QUxMQkFDSyhvbkZ1bGxzY3JlZW5HdGtBY3RpdmVOb3RpZmljYXRpb24pLCB0aGlzKTsKLQotICAg
IGd0a193aWRnZXRfc2hvd19hbGwobV93aW5kb3cpOwotCi0gICAgR2RrV2luZG93KiB3aW5kb3cg
PSBndGtfd2lkZ2V0X2dldF93aW5kb3cobV93aW5kb3cpOwotICAgIEdSZWZQdHI8R2RrQ3Vyc29y
PiBjdXJzb3IgPSBhZG9wdEdSZWYoZ2RrX2N1cnNvcl9uZXcoR0RLX0JMQU5LX0NVUlNPUikpOwot
ICAgIGdka193aW5kb3dfc2V0X2N1cnNvcih3aW5kb3csIGN1cnNvci5nZXQoKSk7Ci0KLSAgICBt
X21vdGlvbk5vdGlmeVNpZ25hbElkID0gZ19zaWduYWxfY29ubmVjdChtX3dpbmRvdywgIm1vdGlv
bi1ub3RpZnktZXZlbnQiLCBHX0NBTExCQUNLKG9uRnVsbHNjcmVlbkd0a01vdGlvbk5vdGlmeUV2
ZW50KSwgdGhpcyk7Ci0gICAgbV9jb25maWd1cmVFdmVudFNpZ25hbElkID0gZ19zaWduYWxfY29u
bmVjdChtX3dpbmRvdywgImNvbmZpZ3VyZS1ldmVudCIsIEdfQ0FMTEJBQ0sob25GdWxsc2NyZWVu
R3RrQ29uZmlndXJlRXZlbnQpLCB0aGlzKTsKLQotICAgIGd0a193aW5kb3dfZnVsbHNjcmVlbihH
VEtfV0lORE9XKG1fd2luZG93KSk7Ci0gICAgc2hvd0h1ZCh0cnVlKTsKLX0KLQotdm9pZCBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyR3RrOjp1cGRhdGVIdWRQb3NpdGlvbigpCi17Ci0gICAgaWYg
KCFtX2h1ZFdpbmRvdykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gR2V0IHRoZSBzY3JlZW4g
cmVjdGFuZ2xlLgotICAgIEdka1NjcmVlbiogc2NyZWVuID0gZ3RrX3dpbmRvd19nZXRfc2NyZWVu
KEdUS19XSU5ET1cobV93aW5kb3cpKTsKLSAgICBHZGtXaW5kb3cqIHdpbmRvdyA9IGd0a193aWRn
ZXRfZ2V0X3dpbmRvdyhtX3dpbmRvdyk7Ci0gICAgR2RrUmVjdGFuZ2xlIGZ1bGxzY3JlZW5SZWN0
YW5nbGU7Ci0gICAgZ2RrX3NjcmVlbl9nZXRfbW9uaXRvcl9nZW9tZXRyeShzY3JlZW4sIGdka19z
Y3JlZW5fZ2V0X21vbml0b3JfYXRfd2luZG93KHNjcmVlbiwgd2luZG93KSwgJmZ1bGxzY3JlZW5S
ZWN0YW5nbGUpOwotCi0gICAgLy8gR2V0IHRoZSBwb3B1cCB3aW5kb3cgc2l6ZS4KLSAgICBpbnQg
aHVkV2lkdGgsIGh1ZEhlaWdodDsKLSAgICBndGtfd2luZG93X2dldF9zaXplKEdUS19XSU5ET1co
bV9odWRXaW5kb3cpLCAmaHVkV2lkdGgsICZodWRIZWlnaHQpOwotCi0gICAgLy8gUmVzaXplIHRo
ZSBodWQgdG8gdGhlIGZ1bGwgd2lkdGggb2YgdGhlIHNjcmVlbi4KLSAgICBndGtfd2luZG93X3Jl
c2l6ZShHVEtfV0lORE9XKG1faHVkV2luZG93KSwgZnVsbHNjcmVlblJlY3RhbmdsZS53aWR0aCwg
aHVkSGVpZ2h0KTsKLQotICAgIC8vIE1vdmUgdGhlIGh1ZCB0byB0aGUgYm90dG9tIG9mIHRoZSBz
Y3JlZW4uCi0gICAgZ3RrX3dpbmRvd19tb3ZlKEdUS19XSU5ET1cobV9odWRXaW5kb3cpLCBmdWxs
c2NyZWVuUmVjdGFuZ2xlLngsIGZ1bGxzY3JlZW5SZWN0YW5nbGUuaGVpZ2h0ICsgZnVsbHNjcmVl
blJlY3RhbmdsZS55IC0gaHVkSGVpZ2h0KTsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyR3RrOjpkZXN0cm95V2luZG93KCkKLXsKLSAgICBpZiAoIW1faHVkV2luZG93KQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QobV93aW5kb3cs
IG1fa2V5UHJlc3NTaWduYWxJZCk7Ci0gICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1f
d2luZG93LCBtX2Rlc3Ryb3lTaWduYWxJZCk7Ci0gICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25u
ZWN0KG1fd2luZG93LCBtX2lzQWN0aXZlU2lnbmFsSWQpOwotICAgIGdfc2lnbmFsX2hhbmRsZXJf
ZGlzY29ubmVjdChtX3dpbmRvdywgbV9tb3Rpb25Ob3RpZnlTaWduYWxJZCk7Ci0gICAgZ19zaWdu
YWxfaGFuZGxlcl9kaXNjb25uZWN0KG1fd2luZG93LCBtX2NvbmZpZ3VyZUV2ZW50U2lnbmFsSWQp
OwotICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChtX2h1ZFdpbmRvdywgbV9odWRNb3Rp
b25Ob3RpZnlTaWduYWxJZCk7Ci0gICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1fdGlt
ZUhTY2FsZSwgbV90aW1lU2NhbGVCdXR0b25QcmVzc2VkU2lnbmFsSWQpOwotICAgIGdfc2lnbmFs
X2hhbmRsZXJfZGlzY29ubmVjdChtX3RpbWVIU2NhbGUsIG1fdGltZVNjYWxlQnV0dG9uUmVsZWFz
ZWRTaWduYWxJZCk7Ci0gICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1fdGltZUhTY2Fs
ZSwgbV9oc2NhbGVVcGRhdGVJZCk7Ci0gICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1f
dm9sdW1lQnV0dG9uLCBtX3ZvbHVtZVVwZGF0ZUlkKTsKLSAgICBnX3NpZ25hbF9oYW5kbGVyX2Rp
c2Nvbm5lY3QobV9wbGF5UGF1c2VBY3Rpb24sIG1fcGxheUFjdGlvbkFjdGl2YXRlU2lnbmFsSWQp
OwotICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChtX2V4aXRGdWxsc2NyZWVuQWN0aW9u
LCBtX2V4aXRGdWxsY3JlZW5BY3Rpb25BY3RpdmF0ZVNpZ25hbElkKTsKLQotICAgIGlmIChtX2h1
ZFRpbWVvdXRJZCkgewotICAgICAgICBnX3NvdXJjZV9yZW1vdmUobV9odWRUaW1lb3V0SWQpOwot
ICAgICAgICBtX2h1ZFRpbWVvdXRJZCA9IDA7Ci0gICAgfQotCi0gICAgaWYgKG1fcHJvZ3Jlc3NC
YXJVcGRhdGVJZCkgewotICAgICAgICBnX3NvdXJjZV9yZW1vdmUobV9wcm9ncmVzc0JhclVwZGF0
ZUlkKTsKLSAgICAgICAgbV9wcm9ncmVzc0JhclVwZGF0ZUlkID0gMDsKLSAgICB9Ci0KLSAgICBn
dGtfd2lkZ2V0X2hpZGUobV93aW5kb3cpOwotCi0gICAgaWYgKG1faHVkV2luZG93KQotICAgICAg
ICBndGtfd2lkZ2V0X2Rlc3Ryb3kobV9odWRXaW5kb3cpOwotICAgIG1faHVkV2luZG93ID0gMDsK
LX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrOjpwbGF5U3RhdGVDaGFuZ2Vk
KCkKLXsKLSAgICBpZiAobV9jbGllbnQtPm1lZGlhUGxheWVySXNQYXVzZWQoKSkKLSAgICAgICAg
Z19vYmplY3Rfc2V0KG1fcGxheVBhdXNlQWN0aW9uLCAidG9vbHRpcCIsIF8oIlBsYXkiKSwgImlj
b24tbmFtZSIsIFBMQVlfSUNPTl9OQU1FLCBOVUxMKTsKLSAgICBlbHNlCi0gICAgICAgIGdfb2Jq
ZWN0X3NldChtX3BsYXlQYXVzZUFjdGlvbiwgInRvb2x0aXAiLCBfKCJQYXVzZSIpLCAiaWNvbi1u
YW1lIiwgUEFVU0VfSUNPTl9OQU1FLCBOVUxMKTsKLSAgICBzaG93SHVkKCFtX2NsaWVudC0+bWVk
aWFQbGF5ZXJJc1BhdXNlZCgpKTsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
R3RrOjp2b2x1bWVDaGFuZ2VkKCkKLXsKLSAgICBpZiAoIW1fdm9sdW1lQnV0dG9uKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBnX3NpZ25hbF9oYW5kbGVyX2Jsb2NrKG1fdm9sdW1lQnV0dG9uLCBt
X3ZvbHVtZVVwZGF0ZUlkKTsKLSAgICBndGtfc2NhbGVfYnV0dG9uX3NldF92YWx1ZShHVEtfU0NB
TEVfQlVUVE9OKG1fdm9sdW1lQnV0dG9uKSwgbV9wbGF5ZXItPnZvbHVtZSgpKTsKLSAgICBnX3Np
Z25hbF9oYW5kbGVyX3VuYmxvY2sobV92b2x1bWVCdXR0b24sIG1fdm9sdW1lVXBkYXRlSWQpOwot
fQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGs6Om11dGVDaGFuZ2VkKCkKLXsK
LSAgICBpZiAoIW1fdm9sdW1lQnV0dG9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnX3NpZ25h
bF9oYW5kbGVyX2Jsb2NrKG1fdm9sdW1lQnV0dG9uLCBtX3ZvbHVtZVVwZGF0ZUlkKTsKLSAgICBn
dGtfc2NhbGVfYnV0dG9uX3NldF92YWx1ZShHVEtfU0NBTEVfQlVUVE9OKG1fdm9sdW1lQnV0dG9u
KSwgbV9wbGF5ZXItPm11dGVkKCkgPyAwIDogbV9wbGF5ZXItPnZvbHVtZSgpKTsKLSAgICBnX3Np
Z25hbF9oYW5kbGVyX3VuYmxvY2sobV92b2x1bWVCdXR0b24sIG1fdm9sdW1lVXBkYXRlSWQpOwot
fQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGs6OmJlZ2luU2VlaygpCi17Ci0g
ICAgbV9zZWVrTG9jayA9IHRydWU7Ci19Ci0KLXZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ckd0azo6ZG9TZWVrKCkKLXsKLSAgICBpZiAoIW1fc2Vla0xvY2spCi0gICAgICAgIHJldHVybjsK
LQotICAgIG1fcGxheWVyLT5zZWVrKGd0a19yYW5nZV9nZXRfdmFsdWUoR1RLX1JBTkdFKG1fdGlt
ZUhTY2FsZSkpKm1fcGxheWVyLT5kdXJhdGlvbigpIC8gMTAwKTsKLX0KLQotdm9pZCBGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyR3RrOjplbmRTZWVrKCkKLXsKLSAgICBtX3NlZWtMb2NrID0gZmFs
c2U7Ci19Ci0KLWdib29sZWFuIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGs6OnVwZGF0ZUh1
ZFByb2dyZXNzQmFyKCkKLXsKLSAgICBmbG9hdCBtZWRpYUR1cmF0aW9uKG1fcGxheWVyLT5kdXJh
dGlvbigpKTsKLSAgICBmbG9hdCBtZWRpYVBvc2l0aW9uKG1fcGxheWVyLT5jdXJyZW50VGltZSgp
KTsKLQotICAgIGlmICghbV9zZWVrTG9jaykgewotICAgICAgICBnZG91YmxlIHZhbHVlID0gMC4w
OwotCi0gICAgICAgIGlmIChtZWRpYVBvc2l0aW9uICYmIG1lZGlhRHVyYXRpb24pCi0gICAgICAg
ICAgICB2YWx1ZSA9IChtZWRpYVBvc2l0aW9uICogMTAwLjApIC8gbWVkaWFEdXJhdGlvbjsKLQot
ICAgICAgICBHdGtBZGp1c3RtZW50KiBhZGp1c3RtZW50ID0gZ3RrX3JhbmdlX2dldF9hZGp1c3Rt
ZW50KEdUS19SQU5HRShtX3RpbWVIU2NhbGUpKTsKLSAgICAgICAgZ3RrX2FkanVzdG1lbnRfc2V0
X3ZhbHVlKGFkanVzdG1lbnQsIHZhbHVlKTsKLSAgICB9Ci0KLSAgICBndGtfcmFuZ2Vfc2V0X2Zp
bGxfbGV2ZWwoR1RLX1JBTkdFKG1fdGltZUhTY2FsZSksIChtX3BsYXllci0+bWF4VGltZUxvYWRl
ZCgpIC8gbWVkaWFEdXJhdGlvbikqIDEwMCk7Ci0KLSAgICBnY2hhciogbGFiZWwgPSBnX3N0cmR1
cF9wcmludGYoIiVzIC8gJXMiLCB0aW1lVG9TdHJpbmcobWVkaWFQb3NpdGlvbikudXRmOCgpLmRh
dGEoKSwgdGltZVRvU3RyaW5nKG1lZGlhRHVyYXRpb24pLnV0ZjgoKS5kYXRhKCkpOwotICAgIGd0
a19sYWJlbF9zZXRfdGV4dChHVEtfTEFCRUwobV90aW1lTGFiZWwpLCBsYWJlbCk7Ci0gICAgZ19m
cmVlKGxhYmVsKTsKLSAgICByZXR1cm4gVFJVRTsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyR3RrOjpjcmVhdGVIdWQoKQotewotICAgIG1faHVkV2luZG93ID0gZ3RrX3dpbmRv
d19uZXcoR1RLX1dJTkRPV19QT1BVUCk7Ci0gICAgZ3RrX3dpbmRvd19zZXRfZ3Jhdml0eShHVEtf
V0lORE9XKG1faHVkV2luZG93KSwgR0RLX0dSQVZJVFlfU09VVEhfV0VTVCk7Ci0gICAgZ3RrX3dp
bmRvd19zZXRfdHlwZV9oaW50KEdUS19XSU5ET1cobV9odWRXaW5kb3cpLCBHREtfV0lORE9XX1RZ
UEVfSElOVF9OT1JNQUwpOwotCi0gICAgbV9odWRNb3Rpb25Ob3RpZnlTaWduYWxJZCA9IGdfc2ln
bmFsX2Nvbm5lY3QobV9odWRXaW5kb3csICJtb3Rpb24tbm90aWZ5LWV2ZW50IiwgR19DQUxMQkFD
SyhvbkZ1bGxzY3JlZW5HdGtNb3Rpb25Ob3RpZnlFdmVudCksIHRoaXMpOwotCi0jaWZkZWYgR1RL
X0FQSV9WRVJTSU9OXzIKLSAgICBHdGtXaWRnZXQqIGhib3ggPSBndGtfaGJveF9uZXcoRkFMU0Us
IDQpOwotI2Vsc2UKLSAgICBHdGtXaWRnZXQqIGhib3ggPSBndGtfYm94X25ldyhHVEtfT1JJRU5U
QVRJT05fSE9SSVpPTlRBTCwgNCk7Ci0jZW5kaWYKLSAgICBndGtfY29udGFpbmVyX2FkZChHVEtf
Q09OVEFJTkVSKG1faHVkV2luZG93KSwgaGJveCk7Ci0KLSAgICBtX3BsYXlQYXVzZUFjdGlvbiA9
IGd0a19hY3Rpb25fbmV3KCJwbGF5IiwgXygiUGxheSAvIFBhdXNlIiksIF8oIlBsYXkgb3IgcGF1
c2UgdGhlIG1lZGlhIiksIFBBVVNFX0lDT05fTkFNRSk7Ci0gICAgbV9wbGF5QWN0aW9uQWN0aXZh
dGVTaWduYWxJZCA9IGdfc2lnbmFsX2Nvbm5lY3QobV9wbGF5UGF1c2VBY3Rpb24sICJhY3RpdmF0
ZSIsIEdfQ0FMTEJBQ0sodG9nZ2xlUGxheVBhdXNlQWN0aXZhdGVkKSwgdGhpcyk7Ci0KLSAgICBH
dGtXaWRnZXQqIGl0ZW0gPSBndGtfYWN0aW9uX2NyZWF0ZV90b29sX2l0ZW0obV9wbGF5UGF1c2VB
Y3Rpb24pOwotICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKGhib3gpLCBpdGVtLCBGQUxT
RSwgVFJVRSwgMCk7Ci0KLSAgICBHdGtXaWRnZXQqIGxhYmVsID0gZ3RrX2xhYmVsX25ldyhfKCJU
aW1lOiIpKTsKLSAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChoYm94KSwgbGFiZWwsIEZB
TFNFLCBUUlVFLCAwKTsKLQotICAgIEd0a0FkanVzdG1lbnQqIGFkanVzdG1lbnQgPSBHVEtfQURK
VVNUTUVOVChndGtfYWRqdXN0bWVudF9uZXcoMC4wLCAwLjAsIDEwMC4wLCAwLjEsIDEuMCwgMS4w
KSk7Ci0jaWZkZWYgR1RLX0FQSV9WRVJTSU9OXzIKLSAgICBtX3RpbWVIU2NhbGUgPSBndGtfaHNj
YWxlX25ldyhhZGp1c3RtZW50KTsKLSNlbHNlCi0gICAgbV90aW1lSFNjYWxlID0gZ3RrX3NjYWxl
X25ldyhHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCwgYWRqdXN0bWVudCk7Ci0jZW5kaWYKLSAg
ICBndGtfc2NhbGVfc2V0X2RyYXdfdmFsdWUoR1RLX1NDQUxFKG1fdGltZUhTY2FsZSksIEZBTFNF
KTsKLSAgICBndGtfcmFuZ2Vfc2V0X3Nob3dfZmlsbF9sZXZlbChHVEtfUkFOR0UobV90aW1lSFNj
YWxlKSwgVFJVRSk7Ci0gICAgbV90aW1lU2NhbGVCdXR0b25QcmVzc2VkU2lnbmFsSWQgPSBnX3Np
Z25hbF9jb25uZWN0KG1fdGltZUhTY2FsZSwgImJ1dHRvbi1wcmVzcy1ldmVudCIsIEdfQ0FMTEJB
Q0sodGltZVNjYWxlQnV0dG9uUHJlc3NlZCksIHRoaXMpOwotICAgIG1fdGltZVNjYWxlQnV0dG9u
UmVsZWFzZWRTaWduYWxJZCA9IGdfc2lnbmFsX2Nvbm5lY3QobV90aW1lSFNjYWxlLCAiYnV0dG9u
LXJlbGVhc2UtZXZlbnQiLCBHX0NBTExCQUNLKHRpbWVTY2FsZUJ1dHRvblJlbGVhc2VkKSwgdGhp
cyk7Ci0gICAgbV9oc2NhbGVVcGRhdGVJZCA9IGdfc2lnbmFsX2Nvbm5lY3QobV90aW1lSFNjYWxl
LCAidmFsdWUtY2hhbmdlZCIsIEdfQ0FMTEJBQ0sodGltZVNjYWxlVmFsdWVDaGFuZ2VkKSwgdGhp
cyk7Ci0KLSAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChoYm94KSwgbV90aW1lSFNjYWxl
LCBUUlVFLCBUUlVFLCAwKTsKLQotICAgIG1fdGltZUxhYmVsID0gZ3RrX2xhYmVsX25ldygiIik7
Ci0gICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1goaGJveCksIG1fdGltZUxhYmVsLCBGQUxT
RSwgVFJVRSwgMCk7Ci0KLSAgICAvLyBWb2x1bWUgYnV0dG9uLgotICAgIG1fdm9sdW1lQnV0dG9u
ID0gZ3RrX3ZvbHVtZV9idXR0b25fbmV3KCk7Ci0gICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19C
T1goaGJveCksIG1fdm9sdW1lQnV0dG9uLCBGQUxTRSwgVFJVRSwgMCk7Ci0gICAgZ3RrX3NjYWxl
X2J1dHRvbl9zZXRfdmFsdWUoR1RLX1NDQUxFX0JVVFRPTihtX3ZvbHVtZUJ1dHRvbiksIG1fcGxh
eWVyLT52b2x1bWUoKSk7Ci0gICAgbV92b2x1bWVVcGRhdGVJZCA9IGdfc2lnbmFsX2Nvbm5lY3Qo
bV92b2x1bWVCdXR0b24sICJ2YWx1ZS1jaGFuZ2VkIiwgR19DQUxMQkFDSyh2b2x1bWVWYWx1ZUNo
YW5nZWQpLCB0aGlzKTsKLQotICAgIG1fZXhpdEZ1bGxzY3JlZW5BY3Rpb24gPSBndGtfYWN0aW9u
X25ldygiZXhpdCIsIF8oIkV4aXQgRnVsbHNjcmVlbiIpLCBfKCJFeGl0IGZyb20gZnVsbHNjcmVl
biBtb2RlIiksIEVYSVRfRlVMTFNDUkVFTl9JQ09OX05BTUUpOwotICAgIG1fZXhpdEZ1bGxjcmVl
bkFjdGlvbkFjdGl2YXRlU2lnbmFsSWQgPSBnX3NpZ25hbF9jb25uZWN0KG1fZXhpdEZ1bGxzY3Jl
ZW5BY3Rpb24sICJhY3RpdmF0ZSIsIEdfQ0FMTEJBQ0soZXhpdEZ1bGxzY3JlZW5BY3RpdmF0ZWQp
LCB0aGlzKTsKLSAgICBnX29iamVjdF9zZXQobV9leGl0RnVsbHNjcmVlbkFjdGlvbiwgImljb24t
bmFtZSIsIEVYSVRfRlVMTFNDUkVFTl9JQ09OX05BTUUsIE5VTEwpOwotICAgIGl0ZW0gPSBndGtf
YWN0aW9uX2NyZWF0ZV90b29sX2l0ZW0obV9leGl0RnVsbHNjcmVlbkFjdGlvbik7Ci0gICAgZ3Rr
X2JveF9wYWNrX3N0YXJ0KEdUS19CT1goaGJveCksIGl0ZW0sIEZBTFNFLCBUUlVFLCAwKTsKLQot
ICAgIG1fcHJvZ3Jlc3NCYXJVcGRhdGVJZCA9IGdfdGltZW91dF9hZGQoUFJPR1JFU1NfQkFSX1VQ
REFURV9JTlRFUlZBTCwgcmVpbnRlcnByZXRfY2FzdDxHU291cmNlRnVuYz4ocHJvZ3Jlc3NCYXJV
cGRhdGVDYWxsYmFjayksIHRoaXMpOwotICAgIGdfc291cmNlX3NldF9uYW1lX2J5X2lkKG1fcHJv
Z3Jlc3NCYXJVcGRhdGVJZCwgIltXZWJLaXRdIHByb2dyZXNzQmFyVXBkYXRlQ2FsbGJhY2siKTsK
LQotICAgIHBsYXlTdGF0ZUNoYW5nZWQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsv
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0ay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3RrL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZDU3NzBjNTk4ODY2NDc0YmE5NTQ4NWIzZjQxYjJjNDNiNjkxNDRi
Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0
ay5oCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMp
IDIwMTMgSWdhbGlhIFMuTAotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXJHdGtfaAotI2RlZmluZSBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrX2gKLQotI2lm
IEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgVVNFKE5BVElWRV9GVUxMU0NSRUVO
X1ZJREVPKQotCi0jaW5jbHVkZSAiRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lci5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXJHdGsgOiBwdWJsaWMgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lciB7Ci1wdWJs
aWM6Ci0gICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0ayhNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlKik7Ci0KLSAgICB2b2lkIGd0a0NvbmZpZ3VyZShHZGtFdmVudENvbmZpZ3Vy
ZSopOwotCi0gICAgdm9pZCBwbGF5U3RhdGVDaGFuZ2VkKCk7Ci0KLSAgICB2b2lkIGJlZ2luU2Vl
aygpOwotICAgIHZvaWQgZG9TZWVrKCk7Ci0gICAgdm9pZCBlbmRTZWVrKCk7Ci0KLSAgICB2b2lk
IGhpZGVIdWQoKTsKLSAgICB2b2lkIHNob3dIdWQoYm9vbCk7Ci0gICAgZ2Jvb2xlYW4gdXBkYXRl
SHVkUHJvZ3Jlc3NCYXIoKTsKLQotICAgIHZvaWQgdm9sdW1lQ2hhbmdlZCgpOwotICAgIHZvaWQg
bXV0ZUNoYW5nZWQoKTsKLQotcHJpdmF0ZToKLSAgICB2b2lkIGluaXRpYWxpemVXaW5kb3coKTsK
LSAgICB2b2lkIGRlc3Ryb3lXaW5kb3coKTsKLQotICAgIHZvaWQgY3JlYXRlSHVkKCk7Ci0gICAg
dm9pZCB1cGRhdGVIdWRQb3NpdGlvbigpOwotCi0gICAgZ3VpbnQgbV9odWRUaW1lb3V0SWQ7Ci0g
ICAgZ3VpbnQgbV9wcm9ncmVzc0JhclVwZGF0ZUlkOwotICAgIGd1aW50IG1fcHJvZ3Jlc3NCYXJG
aWxsVXBkYXRlSWQ7Ci0gICAgZ3VpbnQgbV9oc2NhbGVVcGRhdGVJZDsKLSAgICBndWludCBtX3Zv
bHVtZVVwZGF0ZUlkOwotICAgIGJvb2wgbV9zZWVrTG9jazsKLSAgICBHdGtXaWRnZXQqIG1fd2lu
ZG93OwotICAgIEd0a1dpZGdldCogbV9odWRXaW5kb3c7Ci0gICAgR3RrQWN0aW9uKiBtX3BsYXlQ
YXVzZUFjdGlvbjsKLSAgICBHdGtBY3Rpb24qIG1fZXhpdEZ1bGxzY3JlZW5BY3Rpb247Ci0gICAg
R3RrV2lkZ2V0KiBtX3RpbWVIU2NhbGU7Ci0gICAgR3RrV2lkZ2V0KiBtX3RpbWVMYWJlbDsKLSAg
ICBHdGtXaWRnZXQqIG1fdm9sdW1lQnV0dG9uOwotCi0gICAgdW5zaWduZWQgbG9uZyBtX2tleVBy
ZXNzU2lnbmFsSWQ7Ci0gICAgdW5zaWduZWQgbG9uZyBtX2Rlc3Ryb3lTaWduYWxJZDsKLSAgICB1
bnNpZ25lZCBsb25nIG1faXNBY3RpdmVTaWduYWxJZDsKLSAgICB1bnNpZ25lZCBsb25nIG1fbW90
aW9uTm90aWZ5U2lnbmFsSWQ7Ci0gICAgdW5zaWduZWQgbG9uZyBtX2NvbmZpZ3VyZUV2ZW50U2ln
bmFsSWQ7Ci0gICAgdW5zaWduZWQgbG9uZyBtX2h1ZE1vdGlvbk5vdGlmeVNpZ25hbElkOwotICAg
IHVuc2lnbmVkIGxvbmcgbV90aW1lU2NhbGVCdXR0b25QcmVzc2VkU2lnbmFsSWQ7Ci0gICAgdW5z
aWduZWQgbG9uZyBtX3RpbWVTY2FsZUJ1dHRvblJlbGVhc2VkU2lnbmFsSWQ7Ci0gICAgdW5zaWdu
ZWQgbG9uZyBtX3BsYXlBY3Rpb25BY3RpdmF0ZVNpZ25hbElkOwotICAgIHVuc2lnbmVkIGxvbmcg
bV9leGl0RnVsbGNyZWVuQWN0aW9uQWN0aXZhdGVTaWduYWxJZDsKLX07Ci0KLX0KLSNlbmRpZgot
Ci0jZW5kaWYgLy8gRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0a19oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vUE9URklMRVMuaW4gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvcG8vUE9URklMRVMuaW4KaW5kZXggNjkwY2FjM2EzMDFhOGU3ZTNlOGE2
YjQ3YzVmNTQ0ZDg0ZjBjOGFjZC4uZjM3MTI4N2Y4ZDAzMmFlYWY4Njk0NTY3MmNlOWMzOTAzMGEz
NjFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL3BvL1BPVEZJTEVT
LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9QT1RGSUxFUy5pbgpAQCAt
Miw3ICsyLDYgQEAKIEVycm9yc0d0ay5jcHAKIExvY2FsaXplZFN0cmluZ3NHdGsuY3BwCiBXZWJL
aXRBdXRoZW50aWNhdGlvbldpZGdldC5jcHAKLS4uL2dyYXBoaWNzL2d0ay9GdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyR3RrLmNwcAogLi4vLi4vLi4vV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRHdGsuY3BwCiAuLi8uLi8uLi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nv
bnRleHRNZW51Q2xpZW50R3RrLmNwcAogLi4vLi4vLi4vV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
ZG93bmxvYWQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8v
Z2wucG8gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vZ2wucG8KaW5kZXggY2U4ZDVk
NDE2MWZhNWM2OTk3NTFhNzM3MWJhYmFmYzdhM2U5NDE4ZS4uYTcyYzA0NTU4NmViYmUyYjdkOWM4
M2NmMTk5ZWVkMTRlOWU4M2M1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL3BvL2dsLnBvCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9nbC5wbwpA
QCAtNjMyLDM0ICs2MzIsNiBAQCBtc2dzdHIgIk5vbWUgZGUgdXN1YXJpbzoiCiBtc2dpZCAiUGFz
c3dvcmQ6IgogbXNnc3RyICJDb250cmFzaW5hbDoiCiAKLSM6IC4uLy4uL2dyYXBoaWNzL2d0ay9G
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrLmNwcDozMjgKLW1zZ2lkICJQbGF5IgotbXNnc3Ry
ICJSZXByb2R1Y2lyIgotCi0jOiAuLi8uLi9ncmFwaGljcy9ndGsvRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlckd0ay5jcHA6MzMwCi1tc2dpZCAiUGF1c2UiCi1tc2dzdHIgIlBhdXNhciIKLQotIzog
Li4vLi4vZ3JhcGhpY3MvZ3RrL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsuY3BwOjQxMAot
bXNnaWQgIlBsYXkgLyBQYXVzZSIKLW1zZ3N0ciAiUmVwcm9kdWNpciAvIFBhdXNhciIKLQotIzog
Li4vLi4vZ3JhcGhpY3MvZ3RrL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsuY3BwOjQxMAot
bXNnaWQgIlBsYXkgb3IgcGF1c2UgdGhlIG1lZGlhIgotbXNnc3RyICJSZXByb2R1Y2Ugb3UgcGF1
c2EgbyBtZWRpbyIKLQotIzogLi4vLi4vZ3JhcGhpY3MvZ3RrL0Z1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXJHdGsuY3BwOjQxNgotbXNnaWQgIlRpbWU6IgotbXNnc3RyICJUZW1wbzoiCi0KLSM6IC4u
Ly4uL2dyYXBoaWNzL2d0ay9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrLmNwcDo0NDIKLW1z
Z2lkICJFeGl0IEZ1bGxzY3JlZW4iCi1tc2dzdHIgIlNhw61yIGRhIHBhbnRhbGxhIGNvbXBsZXRh
IgotCi0jOiAuLi8uLi9ncmFwaGljcy9ndGsvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0ay5j
cHA6NDQyCi1tc2dpZCAiRXhpdCBmcm9tIGZ1bGxzY3JlZW4gbW9kZSIKLW1zZ3N0ciAiU2HDrXIg
ZG8gbW9kbyBhIHBhbnRhbGxhIGNvbXBsZXRhIgotCiAjOiAuLi8uLi8uLi8uLi9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXRkb3dubG9hZC5jcHA6Mjc2CiBtc2dpZCAiTmV0d29yayBSZXF1ZXN0Igog
bXNnc3RyICJTb2xpY2l0dWRlIGRlIHJlZGUiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyRWZsLmggYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyRWZsLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4YzUxMGVjYjY5Y2IzZGJkY2JmYTEwN2My
ODcyN2UwMmFkODcxMmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlckVmbC5oCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotLyoKLSAqICBDb3B5
cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAotICogIENvcHlyaWdodCAoQykgMjAxMCBTYW1zdW5n
IEVsZWN0cm9uaWNzCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
LSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ckVmbF9oCi0jZGVmaW5lIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJFZmxfaAotCi0jaWYgRU5B
QkxFKFZJREVPKSAmJiAhZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKLQotI2luY2x1ZGUgIkdT
dHJlYW1lckdXb3JsZC5oIgotI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKLSNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+Ci0KLWNsYXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIgewotICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIpOwotcHVibGlj
OgotICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIoKTsKLSAgICB2aXJ0dWFsIH5GdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyKCk7Ci0KLSAgICB2b2lkIHNldE1lZGlhRWxlbWVudChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50Kik7Ci0gICAgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCogbWVk
aWFFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUVsZW1lbnQuZ2V0KCk7IH0KLQotICAg
IHZvaWQgZW50ZXJGdWxsc2NyZWVuKCk7Ci0gICAgdm9pZCBleGl0RnVsbHNjcmVlbigpOwotCi0g
ICAgdm9pZCBleGl0T25Vc2VyUmVxdWVzdCgpOwotICAgIHZvaWQgdG9nZ2xlUGxheSgpOwotICAg
IHZvaWQgYmVnaW5TZWVrKCk7Ci0gICAgdm9pZCBkb1NlZWsoKTsKLSAgICB2b2lkIGVuZFNlZWso
KTsKLQotICAgIHZvaWQgaGlkZUh1ZCgpOwotICAgIHZvaWQgc2hvd0h1ZChib29sKTsKLSAgICBi
b29sIHVwZGF0ZUh1ZFByb2dyZXNzQmFyKCk7Ci0KLSAgICBmbG9hdCB2b2x1bWUoKSBjb25zdDsK
LSAgICB2b2lkIHNldFZvbHVtZShmbG9hdCk7Ci0gICAgdm9pZCB2b2x1bWVDaGFuZ2VkKCk7Ci0g
ICAgdm9pZCBtdXRlQ2hhbmdlZCgpOwotCi1wcml2YXRlOgotICAgIGJvb2wgY2FuUGxheSgpIGNv
bnN0OwotICAgIHZvaWQgcGxheSgpOwotICAgIHZvaWQgcGF1c2UoKTsKLSAgICB2b2lkIHBsYXlT
dGF0ZUNoYW5nZWQoKTsKLQotICAgIGJvb2wgbXV0ZWQoKSBjb25zdDsKLQotICAgIGZsb2F0IGN1
cnJlbnRUaW1lKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRDdXJyZW50VGltZShmbG9hdCk7Ci0KLSAg
ICBmbG9hdCBkdXJhdGlvbigpIGNvbnN0OwotICAgIGZsb2F0IHBlcmNlbnRMb2FkZWQoKSBjb25z
dDsKLQotICAgIHZvaWQgY3JlYXRlSHVkKCk7Ci0gICAgdm9pZCB1cGRhdGVIdWRQb3NpdGlvbigp
OwotCi0gICAgUmVmUHRyPFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ+IG1fbWVkaWFFbGVtZW50
OwotICAgIFJlZlB0cjxXZWJDb3JlOjpHU3RyZWFtZXJHV29ybGQ+IG1fZ3N0cmVhbWVyR1dvcmxk
OwotCi0gICAgdWludCBtX2h1ZFRpbWVvdXRJZDsKLSAgICB1aW50IG1fcHJvZ3Jlc3NCYXJVcGRh
dGVJZDsKLSAgICB1aW50IG1fcHJvZ3Jlc3NCYXJGaWxsVXBkYXRlSWQ7Ci0gICAgdWludCBtX2hz
Y2FsZVVwZGF0ZUlkOwotICAgIHVpbnQgbV92b2x1bWVVcGRhdGVJZDsKLSAgICBib29sIG1fc2Vl
a0xvY2s7Ci0gICAgUGxhdGZvcm1XaWRnZXQqIG1fd2luZG93OwotICAgIFBsYXRmb3JtV2lkZ2V0
KiBtX2h1ZFdpbmRvdzsKLSAgICBQbGF0Zm9ybVdpZGdldCogbV90aW1lSFNjYWxlOwotICAgIFBs
YXRmb3JtV2lkZ2V0KiBtX3RpbWVMYWJlbDsKLSAgICBQbGF0Zm9ybVdpZGdldCogbV92b2x1bWVC
dXR0b247Ci19OwotCi0jZW5kaWYKLQotI2VuZGlmIC8vIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXJFZmxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEd0ay5jcHAKaW5kZXggNjQ5ODYzYjA3MzRmYjY2OTgzOWZhY2NiNGIyMGEwM2M2MjI3
N2RhMS4uNDljYTg0ZGZkNGEyYmI4YmU4YTYzZTJkMDMxNmE4M2NkODcyY2QyZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3Bw
CkBAIC05MiwxMCArOTIsNiBAQAogI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2VuZGlm
CiAKLSNpZiBFTkFCTEUoVklERU8pICYmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKLSNp
bmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCi0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKFgxMSkg
JiYgZGVmaW5lZChHREtfV0lORE9XSU5HX1gxMSkKICNpbmNsdWRlICJXaWRnZXRCYWNraW5nU3Rv
cmVHdGtYMTEuaCIKICNlbmRpZgpAQCAtOTMwLDM5ICs5MjYsNiBAQCBQYXNzUmVmUHRyPFdlYkNv
cmU6OlNlYXJjaFBvcHVwTWVudT4gQ2hyb21lQ2xpZW50OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUo
V2ViQ29yZQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VhcmNoUG9wdXBNZW51R3RrKGNsaWVu
dCkpOwogfQogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklE
RU8pCi1ib29sIENocm9tZUNsaWVudDo6c3VwcG9ydHNGdWxsc2NyZWVuRm9yTm9kZShjb25zdCBO
b2RlKiBub2RlKQotewotICAgIHJldHVybiBpc0hUTUxWaWRlb0VsZW1lbnQobm9kZSk7Ci19Ci0K
LXZvaWQgQ2hyb21lQ2xpZW50OjplbnRlckZ1bGxzY3JlZW5Gb3JOb2RlKE5vZGUqIG5vZGUpCi17
Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBIVE1MRWxlbWVudCogZWxl
bWVudCA9IHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4obm9kZSk7Ci0gICAgaWYgKGVsZW1lbnQg
JiYgZWxlbWVudC0+aXNNZWRpYUVsZW1lbnQoKSkgewotICAgICAgICBIVE1MTWVkaWFFbGVtZW50
KiBtZWRpYUVsZW1lbnQgPSB0b0hUTUxNZWRpYUVsZW1lbnQoZWxlbWVudCk7Ci0gICAgICAgIGlm
IChtZWRpYUVsZW1lbnQtPnBsYXllcigpICYmIG1lZGlhRWxlbWVudC0+cGxheWVyKCktPmNhbkVu
dGVyRnVsbHNjcmVlbigpKQotICAgICAgICAgICAgbWVkaWFFbGVtZW50LT5wbGF5ZXIoKS0+ZW50
ZXJGdWxsc2NyZWVuKCk7Ci0gICAgfQotfQotCi12b2lkIENocm9tZUNsaWVudDo6ZXhpdEZ1bGxz
Y3JlZW5Gb3JOb2RlKE5vZGUqIG5vZGUpCi17Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxFbGVtZW50
Kj4obm9kZSk7Ci0gICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC0+aXNNZWRpYUVsZW1lbnQoKSkg
ewotICAgICAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSB0b0hUTUxNZWRpYUVs
ZW1lbnQoZWxlbWVudCk7Ci0gICAgICAgIGlmIChtZWRpYUVsZW1lbnQtPnBsYXllcigpKQotICAg
ICAgICAgICAgbWVkaWFFbGVtZW50LT5wbGF5ZXIoKS0+ZXhpdEZ1bGxzY3JlZW4oKTsKLSAgICB9
Ci19Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKIGJvb2wgQ2hyb21lQ2xp
ZW50OjpzdXBwb3J0c0Z1bGxTY3JlZW5Gb3JFbGVtZW50KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnQq
IGVsZW1lbnQsIGJvb2wgd2l0aEtleWJvYXJkKQogewpAQCAtOTk4LDE5ICs5NjEsNiBAQCB2b2lk
IENocm9tZUNsaWVudDo6ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50
KiBlbGVtZW50KQogICAgIGlmIChyZXR1cm5WYWx1ZSkKICAgICAgICAgcmV0dXJuOwogCi0jaWYg
RU5BQkxFKFZJREVPKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCi0gICAgaWYgKGVs
ZW1lbnQgJiYgZWxlbWVudC0+aXNNZWRpYUVsZW1lbnQoKSkgewotICAgICAgICBIVE1MTWVkaWFF
bGVtZW50KiBtZWRpYUVsZW1lbnQgPSB0b0hUTUxNZWRpYUVsZW1lbnQoZWxlbWVudCk7Ci0gICAg
ICAgIGlmIChtZWRpYUVsZW1lbnQtPnBsYXllcigpICYmIG1lZGlhRWxlbWVudC0+cGxheWVyKCkt
PmNhbkVudGVyRnVsbHNjcmVlbigpKSB7Ci0gICAgICAgICAgICBlbGVtZW50LT5kb2N1bWVudCgp
LndlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KGVsZW1lbnQpOwotICAgICAgICAg
ICAgbWVkaWFFbGVtZW50LT5wbGF5ZXIoKS0+ZW50ZXJGdWxsc2NyZWVuKCk7Ci0gICAgICAgICAg
ICBtX2Z1bGxTY3JlZW5FbGVtZW50ID0gZWxlbWVudDsKLSAgICAgICAgICAgIGVsZW1lbnQtPmRv
Y3VtZW50KCkud2Via2l0RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChlbGVtZW50KTsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KICAgICBHdGtXaWRnZXQq
IHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQobV93ZWJWaWV3KSk7
CiAgICAgaWYgKCF3aWRnZXRJc09uc2NyZWVuVG9wbGV2ZWxXaW5kb3cod2luZG93KSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTAzOCwxOSArOTg4LDYgQEAgdm9pZCBDaHJvbWVDbGllbnQ6OmV4aXRG
dWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50KikKICAgICBpZiAocmV0dXJuVmFs
dWUpCiAgICAgICAgIHJldHVybjsKIAotI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKE5BVElWRV9G
VUxMU0NSRUVOX1ZJREVPKQotICAgIGlmIChtX2Z1bGxTY3JlZW5FbGVtZW50ICYmIG1fZnVsbFNj
cmVlbkVsZW1lbnQtPmlzTWVkaWFFbGVtZW50KCkpIHsKLSAgICAgICAgbV9mdWxsU2NyZWVuRWxl
bWVudC0+ZG9jdW1lbnQoKS53ZWJraXRXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KG1fZnVs
bFNjcmVlbkVsZW1lbnQuZ2V0KCkpOwotICAgICAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVs
ZW1lbnQgPSB0b0hUTUxNZWRpYUVsZW1lbnQobV9mdWxsU2NyZWVuRWxlbWVudC5nZXQoKSk7Ci0g
ICAgICAgIGlmIChtZWRpYUVsZW1lbnQtPnBsYXllcigpKSB7Ci0gICAgICAgICAgICBtZWRpYUVs
ZW1lbnQtPnBsYXllcigpLT5leGl0RnVsbHNjcmVlbigpOwotICAgICAgICAgICAgbV9mdWxsU2Ny
ZWVuRWxlbWVudC0+ZG9jdW1lbnQoKS53ZWJraXREaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQo
bV9mdWxsU2NyZWVuRWxlbWVudC5nZXQoKSk7Ci0gICAgICAgICAgICBtX2Z1bGxTY3JlZW5FbGVt
ZW50LmNsZWFyKCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgot
CiAgICAgR3RrV2lkZ2V0KiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lE
R0VUKG1fd2ViVmlldykpOwogICAgIEFTU0VSVCh3aWRnZXRJc09uc2NyZWVuVG9wbGV2ZWxXaW5k
b3cod2luZG93KSk7CiAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHdp
bmRvdywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob25GdWxsc2NyZWVuR3RrS2V5UHJlc3NFdmVu
dCksIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50R3RrLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRHdGsuaAppbmRleCBhYWJjODQyODVlZmY0MGVhMjY2ZDAzMWU2NzJkMjM0ZTgyNDhk
MGViLi41MWQ0M2FhZDYyNDBkMjM4NmRkMTI4ZmRkZTQ0MGMyYWQwZTBhYjVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaApAQCAt
MTM0LDExICsxMzQsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCBib29s
IGhhc09wZW5lZFBvcHVwKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxQb3B1
cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQqKSBjb25zdDsKICAgICAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51
KFBvcHVwTWVudUNsaWVudCopIGNvbnN0OwotI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKE5BVElW
RV9GVUxMU0NSRUVOX1ZJREVPKQotICAgICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsc2Ny
ZWVuRm9yTm9kZShjb25zdCBOb2RlKik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxz
Y3JlZW5Gb3JOb2RlKE5vZGUqKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGV4aXRGdWxsc2NyZWVu
Rm9yTm9kZShOb2RlKik7Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAg
ICAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbFNjcmVlbkZvckVsZW1lbnQoY29uc3QgRWxl
bWVudCosIGJvb2wgd2l0aEtleWJvYXJkKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215935</attachid>
            <date>2013-11-04 11:26:17 -0800</date>
            <delta_ts>2013-11-05 01:06:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123437-20131104202615.patch</filename>
            <type>text/plain</type>
            <size>82985</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU4NTI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmM0ODQ1M2U1M2NhNDQy
YTc4OWJjOWZiYjQ5OWE4YTc5MWE5Yzg3ZS4uZWYyOWUzNzNiNGE3ZWU1OTc5OWRlN2E0YjYwYzBi
YzEzODk0MmI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEzLTExLTA0ICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dT
dHJlYW1lcl0gUmVtb3ZlIE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPIHN1cHBvcnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzQzNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgc29tZSBkZWFk
IGNvZGUgYXMgbm8gR1N0cmVhbWVyIHBvcnQgaXMgdXNpbmcgdGhlIG5hdGl2ZQorICAgICAgICBm
dWxsc2NyZWVuIHZpZGVvIHN1cHBvcnQuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFt
OgorICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNt
YWtlOiBSZW1vdmVkIGNvbXBpbGF0aW9uIG9mIGRlbGV0ZWQgZmlsZXMuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDogUmVtb3ZlZCBzdHJ1Y3R1cmVzIHJlbGF0ZWQg
dG8KKyAgICAgICAgR1N0cmVhbWVyIGFuZCBOQVRJVkVfRlVMTFNDUkVFTl9WSURFTy4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ckdTdHJlYW1lci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
R1dvcmxkLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0ltYWdlR1N0cmVhbWVyQ2Fpcm8uY3BwOiBSZW1vdmVkCisgICAgICAgIGdzdC92aWRlby92aWRl
by5oIGluY2x1ZGUuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6fk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6
cGxhdGZvcm1NZWRpYSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlOjpjcmVhdGVWaWRlb1NpbmspOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmg6CisgICAgICAgIFJl
bW92ZWQgY29kZSByZWxhdGVkIHRvIEdTdHJlYW1lciBhbmQgTkFUSVZFX0ZVTExTQ1JFRU5fVklE
RU8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9X
aW5kb3cuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
UGxhdGZvcm1WaWRlb1dpbmRvd0VmbC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dHdGsuY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93
TWFjLm1tOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9Q
bGF0Zm9ybVZpZGVvV2luZG93Tml4LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd1ByaXZhdGUuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVy
LmNwcDoKKyAgICAgICAgKHdlYmtpdFZpZGVvU2lua1JlbmRlcik6CisgICAgICAgICh3ZWJraXRW
aWRlb1NpbmtOZXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRl
b1NpbmtHU3RyZWFtZXIuaDogUmVtb3ZlZCBjb2RlCisgICAgICAgIHJlbGF0ZWQgdG8gR1N0cmVh
bWVyIGFuZCBOQVRJVkVfRlVMTFNDUkVFTl9WSURFTy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ndGsvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0ay5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsu
aDogUmVtb3ZlZC4KKwogMjAxMy0xMS0wMyAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5j
b20+CiAKICAgICAgICAgSW5saW5lIFJlbmRlclN0eWxlIGZ1bmN0aW9ucyBmb3IgZ2V0dGluZy9z
ZXR0aW5nIHBzZXVkbyBzdHlsZSBiaXRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL3BvL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9D
aGFuZ2VMb2cKaW5kZXggNzlhNjM0ZTg2YWU5YWRjMjk1Yzk1ZDEzMDUyMWYxZGUxOGMyNzVhYy4u
ZDI3NzllY2QwY2Y0OWUzZDkyMDc4N2M5MDRhODA1MmQzMDM4YmE3OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL3BvL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvcG8vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMTEtMDQg
IFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KKworICAgICAg
ICBbR1N0cmVhbWVyXSBSZW1vdmUgTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8gc3VwcG9ydAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzNDM3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQT1RGSUxFUy5p
bjogUmVtb3ZlZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrLmNwcC4KKyAgICAgICAgKiBn
bC5wbzogUmVtb3ZlZCBhcHBlYXJhbmNlcyBvZiBzdHJpbmdzIG9mCisgICAgICAgIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXJHdGsuY3BwLgorCiAyMDEzLTEwLTEwICBTaGFudGhhIGt1bWFyICA8
c2hrdW1hckByZWRoYXQuY29tPgogCiAgICAgICAgIFdlYmtpdCAtIFVwZGF0ZWQgVGFtaWwgdHJh
bnNsYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCA3MDZjOTMxMTllMmNhNGI1Yjk2ZmMxNTE5NWY5
YmY3MzYyZWE5ZmQ1Li44MjdhYzQ0NDJiZGQxZjMxM2IzZmE3ZWMxMzE4OTU4NmNkMmMyYzhmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMTEtMDQgIFhhYmllciBSb2Ry
aWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVy
XSBSZW1vdmUgTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8gc3VwcG9ydAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzNDM3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlZCBzb21lIGRlYWQgY29kZSBh
cyBubyBHU3RyZWFtZXIgcG9ydCBpcyB1c2luZyB0aGUgbmF0aXZlCisgICAgICAgIGZ1bGxzY3Jl
ZW4gdmlkZW8gc3VwcG9ydC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXJFZmwuaDogUmVtb3ZlZC4KKwogMjAxMy0xMS0wMSAgUnl1YW4gQ2hvaSAg
PHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF1bV0sxXSBSZW5kZXJpbmcg
aXMgYnJva2VuIHdoZW4gc2Nyb2xsZWQgZXdrX3ZpZXdfc2luZ2xlIHJlcGVhdGVkbHkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0No
YW5nZUxvZwppbmRleCBiY2Q5ZTM4M2E3YTcyZTA4OWY5NTM4MDVlNzMyZWY1YjE0NGFjMTgxLi44
ODgzMGE1YTQzMjlhYTA5ZWZlMGEyYmQ1MWFlNzYwOTdmNjVjMDE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMTMtMTEtMDQgIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8
Y2FsdmFyaXNAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBSZW1vdmUgTkFUSVZF
X0ZVTExTQ1JFRU5fVklERU8gc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIzNDM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmVtb3ZlZCBzb21lIGRlYWQgY29kZSBhcyBubyBHU3RyZWFtZXIg
cG9ydCBpcyB1c2luZyB0aGUgbmF0aXZlCisgICAgICAgIGZ1bGxzY3JlZW4gdmlkZW8gc3VwcG9y
dC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaDogUmVtb3ZlZCBjb2Rl
IHJlbGF0ZWQgdG8KKyAgICAgICAgR1N0cmVhbWVyIGFuZCBOQVRJVkVfRlVMTFNDUkVFTl9WSURF
Ty4KKwogMjAxMy0xMC0yOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gVXBkYXRlIE5FV1MgYW5kIFZlcnNpb25zLm00IGZv
ciAyLjMuMSByZWxlYXNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMTI1ZTE4
ODM5ZGNlZmQ1ZTk3YjRmNGNiZTg2Y2UwOGI2NjEwZDcyMS4uYTkzMzhiN2FmN2JiMjM4MThmNGE5
MGIyZjY0YzNmMDA1MzBkZTJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC02
MDg4LDE0ICs2MDg4LDEwIEBAIHdlYmNvcmVndGtfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNv
cmUvcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdl
L2d0ay9FdmVudEhhbmRsZXJHdGsuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jYWly
by9XaWRnZXRCYWNraW5nU3RvcmUuaCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIuY3BwIFwKLQlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlckdTdHJlYW1lci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgg
XAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9GdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyR3RrLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3Rr
L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3RrL0ljb25HdGsuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ndGsvSW1hZ2VCdWZmZXJHdGsuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvQ2xpcGJvYXJkVXRpbGl0aWVzR3RrLmNwcCBcCkBAIC02MTMxLDEyICs2MTI3LDggQEAg
cGxhdGZvcm1ndGtfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YS5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1E
YXRhRnJlZVR5cGUuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJDYWlyby5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lci5oIFwK
LQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRl
b1dpbmRvd0d0ay5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9QbGF0Zm9ybVZpZGVvV2luZG93LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmggXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Db2xvckd0ay5jcHAgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUVmbC5jbWFrZQppbmRleCA4MTU1NTdiNTZhNjQ0YWY1ZWUzODI3M2Q4MzFhOGU1NjA1
YzNmYWVmLi44NTI1ODFkMjI1MjYzZDNiOGI4ODAyZGQ3NzJkN2I1NDdhZDY2OTUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTI1LDE0ICsxMjUsMTIgQEAgbGlzdChBUFBFTkQgV2Vi
Q29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFj
a1ByaXZhdGVHU3RyZWFtZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dS
ZWZQdHJHU3RyZWFtZXIuY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lckdXb3JsZC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
VXRpbGl0aWVzLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJW
ZXJzaW9uaW5nLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJl
YW1lckNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCi0gICAgcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dFZmwuY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RleHRDb21iaW5lckdTdHJlYW1lci5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVGV4dFNpbmtHU3RyZWFtZXIuY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDhmZjgxZjhlMDUwMjYyNmE4ZmQxMzU4ODk2NDJh
MDBiOTM0YjgzZGEuLmJjY2Q3ZWYxNzRkYjRlMzZlMmY1MjVlNmU5YjY4MDFjYTllOTQwOWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC05NywxOCArOTcsMTUgQEAgbGlzdChBUFBFTkQg
V2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5j
cHAKIAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVmUHRyR1N0cmVhbWVyLmNw
cAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3BwCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVyc2lvbmluZy5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJDYWlyby5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlLmNwcAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9y
bVZpZGVvV2luZG93R3RrLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRl
b1NpbmtHU3RyZWFtZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktp
dFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKIAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9Db2xv
ckd0ay5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlckd0ay5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvR2RrQ2Fpcm9VdGlsaXRpZXMu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ljb25HdGsuY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvZ3RrL0ltYWdlQnVmZmVyR3RrLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggMDlhYjk5OWJmNmYxNDkyNDU3MWYwOTM3
ZWE5Mzc3MjllZTNmMzJjNS4uMmQ4MjNiZDRiZWEyYTk2ODQ3YmU5YmUzMTMzNjhjMzBhODg5YzBm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5o
CkBAIC02Niw3ICs2Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9Tb3Vy
Y2VQcm92aWRlcjsKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgR1N0cmVhbWVyR1dvcmxkOwogI2lm
IEVOQUJMRShNRURJQV9TT1VSQ0UpCiBjbGFzcyBIVE1MTWVkaWFTb3VyY2U7CiAjZW5kaWYKQEAg
LTgzLDcgKzgyLDYgQEAgc3RydWN0IFBsYXRmb3JtTWVkaWEgewogICAgICAgICBRVE1vdmllVHlw
ZSwKICAgICAgICAgUVRNb3ZpZUdXb3JsZFR5cGUsCiAgICAgICAgIFFUTW92aWVWaXN1YWxDb250
ZXh0VHlwZSwKLSAgICAgICAgR1N0cmVhbWVyR1dvcmxkVHlwZSwKICAgICAgICAgQ2hyb21pdW1N
ZWRpYVBsYXllclR5cGUsCiAgICAgICAgIFF0TWVkaWFQbGF5ZXJUeXBlLAogICAgICAgICBBVkZv
dW5kYXRpb25NZWRpYVBsYXllclR5cGUsCkBAIC05NCw3ICs5Miw2IEBAIHN0cnVjdCBQbGF0Zm9y
bU1lZGlhIHsKICAgICAgICAgUVRNb3ZpZSogcXRNb3ZpZTsKICAgICAgICAgUVRNb3ZpZUdXb3Js
ZCogcXRNb3ZpZUdXb3JsZDsKICAgICAgICAgUVRNb3ZpZVZpc3VhbENvbnRleHQqIHF0TW92aWVW
aXN1YWxDb250ZXh0OwotICAgICAgICBHU3RyZWFtZXJHV29ybGQqIGdzdHJlYW1lckdXb3JsZDsK
ICAgICAgICAgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlKiBjaHJvbWl1bU1lZGlhUGxheWVy
OwogICAgICAgICBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UqIHF0TWVkaWFQbGF5ZXI7CiAg
ICAgICAgIEFWUGxheWVyKiBhdmZNZWRpYVBsYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNDdhNmFmY2EwNjY5MGVhZjVhM2RjNjI3NjI4ZTczODI3OTkyOGM2NS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ckdTdHJlYW1lci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTYgKzAsMCBAQAotLyoKLSAqICBD
b3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTAotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
LSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAq
Ci0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
LSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0KLSNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIFVTRShOQVRJVkVf
RlVMTFNDUkVFTl9WSURFTykKLQotI2luY2x1ZGUgIkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJH
U3RyZWFtZXIuaCIKLQotI2lmIFBMQVRGT1JNKEdUSykKLSNpbmNsdWRlICJGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyR3RrLmgiCi0jZW5kaWYKLQotI2luY2x1ZGUgIkdTdHJlYW1lckdXb3JsZC5o
IgotI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCi0jaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyQmFzZS5oIgotI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+Ci0KLSNkZWZpbmUgVk9MVU1FX1VQX09GRlNFVCAwLjA1IC8vIDUlCi0jZGVm
aW5lIFZPTFVNRV9ET1dOX09GRlNFVCAwLjA1IC8vIDUlCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotdm9pZCBwbGF5ZXJWb2x1bWVDaGFuZ2VkQ2FsbGJhY2soR09iamVjdCAqZWxlbWVudCwgR1Bh
cmFtU3BlYyAqcHNwZWMsIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIqIGNvbnRy
b2xsZXIpCi17Ci0gICAgY29udHJvbGxlci0+dm9sdW1lQ2hhbmdlZCgpOwotfQotCi12b2lkIHBs
YXllck11dGVDaGFuZ2VkQ2FsbGJhY2soR09iamVjdCAqZWxlbWVudCwgR1BhcmFtU3BlYyAqcHNw
ZWMsIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIqIGNvbnRyb2xsZXIpCi17Ci0g
ICAgY29udHJvbGxlci0+bXV0ZUNoYW5nZWQoKTsKLX0KLQotUGFzc093blB0cjxGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyR1N0cmVhbWVyPiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVh
bWVyOjpjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSogcGxheWVyKQotewot
I2lmIFBMQVRGT1JNKEdUSykKLSAgIHJldHVybiBhZG9wdFB0cihuZXcgRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlckd0ayhwbGF5ZXIpKTsKLSNlbHNlCi0gICByZXR1cm4gbnVsbHB0cjsKLSNlbmRp
ZgotfQotCi1GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjpGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyR1N0cmVhbWVyKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UqIHBs
YXllcikKLSAgICA6IG1fcGxheWVyKHBsYXllcikKLSAgICAsIG1fY2xpZW50KHBsYXllci0+bWVk
aWFQbGF5ZXIoKS0+bWVkaWFQbGF5ZXJDbGllbnQoKSkKLSAgICAsIG1fZ3N0cmVhbWVyR1dvcmxk
KHBsYXllci0+cGxhdGZvcm1NZWRpYSgpLm1lZGlhLmdzdHJlYW1lckdXb3JsZCkKLSAgICAsIG1f
cGxheWVyVm9sdW1lU2lnbmFsSGFuZGxlcigwKQotICAgICwgbV9wbGF5ZXJNdXRlU2lnbmFsSGFu
ZGxlcigwKQotewotfQotCi1GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjp+RnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcigpCi17Ci0gICAgZXhpdEZ1bGxzY3JlZW4o
KTsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjplbnRlckZ1
bGxzY3JlZW4oKQotewotICAgIGlmICghbV9nc3RyZWFtZXJHV29ybGQpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGlmICghbV9nc3RyZWFtZXJHV29ybGQtPmVudGVyRnVsbHNjcmVlbigpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBpbml0aWFsaXplV2luZG93KCk7Ci0KLSAgICBHc3RFbGVtZW50
KiBwaXBlbGluZSA9IG1fZ3N0cmVhbWVyR1dvcmxkLT5waXBlbGluZSgpOwotICAgIG1fcGxheWVy
Vm9sdW1lU2lnbmFsSGFuZGxlciA9IGdfc2lnbmFsX2Nvbm5lY3QocGlwZWxpbmUsICJub3RpZnk6
OnZvbHVtZSIsIEdfQ0FMTEJBQ0socGxheWVyVm9sdW1lQ2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7
Ci0gICAgbV9wbGF5ZXJNdXRlU2lnbmFsSGFuZGxlciA9IGdfc2lnbmFsX2Nvbm5lY3QocGlwZWxp
bmUsICJub3RpZnk6Om11dGUiLCBHX0NBTExCQUNLKHBsYXllck11dGVDaGFuZ2VkQ2FsbGJhY2sp
LCB0aGlzKTsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjpl
eGl0RnVsbHNjcmVlbigpCi17Ci0gICAgZGVzdHJveVdpbmRvdygpOwotCi0gICAgR3N0RWxlbWVu
dCogcGlwZWxpbmUgPSBtX2dzdHJlYW1lckdXb3JsZC0+cGlwZWxpbmUoKTsKLSAgICBpZiAobV9w
bGF5ZXJWb2x1bWVTaWduYWxIYW5kbGVyKSB7Ci0gICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlz
Y29ubmVjdChwaXBlbGluZSwgbV9wbGF5ZXJWb2x1bWVTaWduYWxIYW5kbGVyKTsKLSAgICAgICAg
bV9wbGF5ZXJWb2x1bWVTaWduYWxIYW5kbGVyID0gMDsKLSAgICB9Ci0KLSAgICBpZiAobV9wbGF5
ZXJNdXRlU2lnbmFsSGFuZGxlcikgewotICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5l
Y3QocGlwZWxpbmUsIG1fcGxheWVyTXV0ZVNpZ25hbEhhbmRsZXIpOwotICAgICAgICBtX3BsYXll
ck11dGVTaWduYWxIYW5kbGVyID0gMDsKLSAgICB9Ci0KLSAgICBtX2dzdHJlYW1lckdXb3JsZC0+
ZXhpdEZ1bGxzY3JlZW4oKTsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0
cmVhbWVyOjpleGl0T25Vc2VyUmVxdWVzdCgpCi17Ci0gICAgbV9jbGllbnQtPm1lZGlhUGxheWVy
RXhpdEZ1bGxzY3JlZW4oKTsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0
cmVhbWVyOjp0b2dnbGVQbGF5KCkKLXsKLSAgICBpZiAobV9jbGllbnQtPm1lZGlhUGxheWVySXNQ
YXVzZWQoKSkKLSAgICAgICAgbV9jbGllbnQtPm1lZGlhUGxheWVyUGxheSgpOwotICAgIGVsc2UK
LSAgICAgICAgbV9jbGllbnQtPm1lZGlhUGxheWVyUGF1c2UoKTsKLSAgICBwbGF5U3RhdGVDaGFu
Z2VkKCk7Ci19Ci0KLXZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcjo6aW5j
cmVhc2VWb2x1bWUoKQotewotICAgIHNldFZvbHVtZShtX3BsYXllci0+dm9sdW1lKCkgKyBWT0xV
TUVfVVBfT0ZGU0VUKTsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVh
bWVyOjpkZWNyZWFzZVZvbHVtZSgpCi17Ci0gICAgc2V0Vm9sdW1lKG1fcGxheWVyLT52b2x1bWUo
KSAtIFZPTFVNRV9ET1dOX09GRlNFVCk7Ci19Ci0KLXZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlckdTdHJlYW1lcjo6c2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkKLXsKLSAgICB2b2x1bWUgPSBD
TEFNUCh2b2x1bWUsIDAuMCwgMS4wKTsKLSAgICBtX3BsYXllci0+c2V0Vm9sdW1lKHZvbHVtZSk7
Ci19Ci0KLVN0cmluZyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjp0aW1lVG9T
dHJpbmcoZmxvYXQgdGltZSkKLXsKLSAgICBpZiAoIXN0ZDo6aXNmaW5pdGUodGltZSkpCi0gICAg
ICAgIHRpbWUgPSAwOwotICAgIGludCBzZWNvbmRzID0gZmFic2YodGltZSk7Ci0gICAgaW50IGhv
dXJzID0gc2Vjb25kcyAvICg2MCAqIDYwKTsKLSAgICBpbnQgbWludXRlcyA9IChzZWNvbmRzIC8g
NjApICUgNjA7Ci0gICAgc2Vjb25kcyAlPSA2MDsKLQotICAgIGlmIChob3VycykgewotICAgICAg
ICBpZiAoaG91cnMgPiA5KQotICAgICAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlcyUw
MmQ6JTAyZDolMDJkIiwgKHRpbWUgPCAwID8gIi0iIDogIiIpLCBob3VycywgbWludXRlcywgc2Vj
b25kcyk7Ci0gICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJXMlMDFkOiUwMmQ6JTAyZCIs
ICh0aW1lIDwgMCA/ICItIiA6ICIiKSwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpOwotICAgIH0K
LQotICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJXMlMDJkOiUwMmQiLCAodGltZSA8IDAgPyAi
LSIgOiAiIiksIG1pbnV0ZXMsIHNlY29uZHMpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ckdTdHJlYW1lci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTE5Nzk5MGM4Nzdl
YmVmYTc0MmNiMWJjNzk5ZDUzNDA2NzFhNTZjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw3NCArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MCi0g
KgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
Ci0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgotICovCi0KLSNpZm5kZWYgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcl9oCi0j
ZGVmaW5lIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXJfaAotCi0jaWYgRU5BQkxF
KFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8p
Ci0KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgR1N0cmVhbWVyR1dvcmxkOwotY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZTsKLWNsYXNzIE1lZGlhUGxheWVyQ2xpZW50OwotCi1jbGFzcyBGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyR1N0cmVhbWVyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyR1N0cmVhbWVyKTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0
cjxGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyPiBjcmVhdGUoTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZSopOwotICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3Ry
ZWFtZXIoTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSopOwotICAgIHZpcnR1YWwgfkZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIoKTsKLQotICAgIHZvaWQgZW50ZXJGdWxs
c2NyZWVuKCk7Ci0gICAgdm9pZCBleGl0RnVsbHNjcmVlbigpOwotICAgIHZvaWQgZXhpdE9uVXNl
clJlcXVlc3QoKTsKLQotICAgIHZvaWQgdG9nZ2xlUGxheSgpOwotICAgIHZpcnR1YWwgdm9pZCBw
bGF5U3RhdGVDaGFuZ2VkKCkgeyB9Ci0KLSAgICB2b2lkIGluY3JlYXNlVm9sdW1lKCk7Ci0gICAg
dm9pZCBkZWNyZWFzZVZvbHVtZSgpOwotICAgIHZvaWQgc2V0Vm9sdW1lKGZsb2F0KTsKLQotICAg
IHZpcnR1YWwgdm9pZCB2b2x1bWVDaGFuZ2VkKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIG11dGVD
aGFuZ2VkKCkgeyB9Ci0KLXByb3RlY3RlZDoKLSAgICBTdHJpbmcgdGltZVRvU3RyaW5nKGZsb2F0
IHRpbWUpOwotCi0gICAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSogbV9wbGF5ZXI7
Ci0gICAgTWVkaWFQbGF5ZXJDbGllbnQqIG1fY2xpZW50OwotICAgIEdTdHJlYW1lckdXb3JsZCog
bV9nc3RyZWFtZXJHV29ybGQ7Ci0KLXByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGluaXRpYWxp
emVXaW5kb3coKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveVdpbmRvdygpIHsgfQotCi0g
ICAgdW5zaWduZWQgbG9uZyBtX3BsYXllclZvbHVtZVNpZ25hbEhhbmRsZXI7Ci0gICAgdW5zaWdu
ZWQgbG9uZyBtX3BsYXllck11dGVTaWduYWxIYW5kbGVyOwotfTsKLQotfQotI2VuZGlmCi0KLSNl
bmRpZiAvLyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29y
bGQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lckdXb3JsZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmZWMyZTI1ZDhl
YTQ1Y2NkMTY1YjBiYzY5OGU1N2M1YTVhOTJhZTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODAgKzAsMCBA
QAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAotICoKLSAqICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0g
KiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0g
KiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJHU3RyZWFtZXJHV29ybGQuaCIKLQotI2lmIEVO
QUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJ
REVPKQotCi0jaW5jbHVkZSAiR1JlZlB0ckdTdHJlYW1lci5oIgotI2luY2x1ZGUgIkdTdHJlYW1l
clZlcnNpb25pbmcuaCIKLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0jaW5jbHVkZSA8Z3N0L3BidXRp
bHMvcGJ1dGlscy5oPgotCi0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSNpbmNsdWRlIDxnc3Qv
dmlkZW8vdmlkZW9vdmVybGF5Lmg+Ci0jZWxzZQotI2luY2x1ZGUgPGdzdC9pbnRlcmZhY2VzL3hv
dmVybGF5Lmg+Ci0jZW5kaWYKLQotCi0jaWYgUExBVEZPUk0oR1RLKQotI2luY2x1ZGUgPGd0ay9n
dGsuaD4KLSNpZmRlZiBHREtfV0lORE9XSU5HX1gxMQotI2luY2x1ZGUgPGdkay9nZGt4Lmg+IC8v
IGZvciBHREtfV0lORE9XX1hJRAotI2VuZGlmCi0jZW5kaWYKLQotI2lmbmRlZiBHU1RfQVBJX1ZF
UlNJT05fMQotc3RhdGljIGNvbnN0IGNoYXIqIGdWaWRlb0NvbnZlcnROYW1lID0gImZmbXBlZ2Nv
bG9yc3BhY2UiOwotI2Vsc2UKLXN0YXRpYyBjb25zdCBjaGFyKiBnVmlkZW9Db252ZXJ0TmFtZSA9
ICJ2aWRlb2NvbnZlcnQiOwotI2VuZGlmCi0KLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotZ2Jvb2xlYW4gZ3N0R1dvcmxkU3luY01lc3NhZ2VDYWxsYmFjayhH
c3RCdXMqLCBHc3RNZXNzYWdlKiBtZXNzYWdlLCBncG9pbnRlciBkYXRhKQotewotICAgIEFTU0VS
VChHU1RfTUVTU0FHRV9UWVBFKG1lc3NhZ2UpID09IEdTVF9NRVNTQUdFX0VMRU1FTlQpOwotCi0g
ICAgR1N0cmVhbWVyR1dvcmxkKiBnc3RHV29ybGQgPSBzdGF0aWNfY2FzdDxHU3RyZWFtZXJHV29y
bGQqPihkYXRhKTsKLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICBjb25zdCBHc3RTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IGdzdF9tZXNzYWdlX2dldF9zdHJ1Y3R1cmUobWVzc2FnZSk7Ci0K
LSAgICBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJwcmVwYXJlLXh3aW5k
b3ctaWQiKQotICAgICAgICB8fCBnc3Rfc3RydWN0dXJlX2hhc19uYW1lKHN0cnVjdHVyZSwgImhh
dmUtbnMtdmlldyIpKQotICAgICAgICBnc3RHV29ybGQtPnNldFdpbmRvd092ZXJsYXkobWVzc2Fn
ZSk7Ci0jZWxzZQotICAgIGlmIChnc3RfaXNfdmlkZW9fb3ZlcmxheV9wcmVwYXJlX3dpbmRvd19o
YW5kbGVfbWVzc2FnZShtZXNzYWdlKSkKLSAgICAgICAgZ3N0R1dvcmxkLT5zZXRXaW5kb3dPdmVy
bGF5KG1lc3NhZ2UpOwotI2VuZGlmCi0gICAgcmV0dXJuIFRSVUU7Ci19Ci0KLVBhc3NSZWZQdHI8
R1N0cmVhbWVyR1dvcmxkPiBHU3RyZWFtZXJHV29ybGQ6OmNyZWF0ZUdXb3JsZChHc3RFbGVtZW50
KiBwaXBlbGluZSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdTdHJlYW1lckdXb3JsZChw
aXBlbGluZSkpOwotfQotCi1HU3RyZWFtZXJHV29ybGQ6OkdTdHJlYW1lckdXb3JsZChHc3RFbGVt
ZW50KiBwaXBlbGluZSkKLSAgICA6IG1fcGlwZWxpbmUocGlwZWxpbmUpCi17Ci0gICAgLy8gWE92
ZXJsYXkgbWVzc2FnZXMgbmVlZCB0byBiZSBoYW5kbGVkIHN5bmNocm9ub3VzbHkuCi0gICAgR1Jl
ZlB0cjxHc3RCdXM+IGJ1cyA9IHdlYmtpdEdzdFBpcGVsaW5lR2V0QnVzKEdTVF9QSVBFTElORSht
X3BpcGVsaW5lKSk7Ci0jaWZuZGVmIEdTVF9BUElfVkVSU0lPTl8xCi0gICAgZ3N0X2J1c19zZXRf
c3luY19oYW5kbGVyKGJ1cy5nZXQoKSwgZ3N0X2J1c19zeW5jX3NpZ25hbF9oYW5kbGVyLCB0aGlz
KTsKLSNlbHNlCi0gICAgZ3N0X2J1c19zZXRfc3luY19oYW5kbGVyKGJ1cy5nZXQoKSwgZ3N0X2J1
c19zeW5jX3NpZ25hbF9oYW5kbGVyLCB0aGlzLCAwKTsKLSNlbmRpZgotICAgIGdfc2lnbmFsX2Nv
bm5lY3QoYnVzLmdldCgpLCAic3luYy1tZXNzYWdlOjplbGVtZW50IiwgR19DQUxMQkFDSyhnc3RH
V29ybGRTeW5jTWVzc2FnZUNhbGxiYWNrKSwgdGhpcyk7Ci19Ci0KLUdTdHJlYW1lckdXb3JsZDo6
fkdTdHJlYW1lckdXb3JsZCgpCi17Ci0gICAgZXhpdEZ1bGxzY3JlZW4oKTsKLQotICAgIEdSZWZQ
dHI8R3N0QnVzPiBidXMgPSB3ZWJraXRHc3RQaXBlbGluZUdldEJ1cyhHU1RfUElQRUxJTkUobV9w
aXBlbGluZSkpOwotICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhidXMu
Z2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KGdzdEdXb3JsZFN5bmNNZXNzYWdlQ2Fs
bGJhY2spLCB0aGlzKTsKLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICBnc3RfYnVzX3Nl
dF9zeW5jX2hhbmRsZXIoYnVzLmdldCgpLCAwLCB0aGlzKTsKLSNlbHNlCi0gICAgZ3N0X2J1c19z
ZXRfc3luY19oYW5kbGVyKGJ1cy5nZXQoKSwgMCwgdGhpcywgMCk7Ci0jZW5kaWYKLQotICAgIG1f
cGlwZWxpbmUgPSAwOwotfQotCi1ib29sIEdTdHJlYW1lckdXb3JsZDo6ZW50ZXJGdWxsc2NyZWVu
KCkKLXsKLSAgICBpZiAobV9keW5hbWljUGFkTmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgaWYgKCFtX3ZpZGVvV2luZG93KQotICAgICAgICBtX3ZpZGVvV2luZG93ID0gUGxhdGZv
cm1WaWRlb1dpbmRvdzo6Y3JlYXRlV2luZG93KCk7Ci0KLSAgICBHc3RFbGVtZW50KiBwbGF0Zm9y
bVZpZGVvU2luayA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiYXV0b3ZpZGVvc2luayIsICJw
bGF0Zm9ybVZpZGVvU2luayIpOwotICAgIEdzdEVsZW1lbnQqIGNvbG9yc3BhY2UgPSBnc3RfZWxl
bWVudF9mYWN0b3J5X21ha2UoZ1ZpZGVvQ29udmVydE5hbWUsICJjb2xvcnNwYWNlIik7Ci0gICAg
R3N0RWxlbWVudCogcXVldWUgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoInF1ZXVlIiwgInF1
ZXVlIik7Ci0gICAgR3N0RWxlbWVudCogdmlkZW9TY2FsZSA9IGdzdF9lbGVtZW50X2ZhY3Rvcnlf
bWFrZSgidmlkZW9zY2FsZSIsICJ2aWRlb1NjYWxlIik7Ci0KLSAgICAvLyBHZXQgdmlkZW8gc2lu
ayBiaW4gYW5kIHRoZSB0ZWUgaW5zaWRlLgotICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gdmlkZW9T
aW5rOwotICAgIGdfb2JqZWN0X2dldChtX3BpcGVsaW5lLCAidmlkZW8tc2luayIsICZ2aWRlb1Np
bmsub3V0UHRyKCksIE5VTEwpOwotCi0gICAgR1JlZlB0cjxHc3RFbGVtZW50PiB0ZWUgPSBhZG9w
dEdSZWYoZ3N0X2Jpbl9nZXRfYnlfbmFtZShHU1RfQklOKHZpZGVvU2luay5nZXQoKSksICJ2aWRl
b1RlZSIpKTsKLQotICAgIGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJTih2aWRlb1NpbmsuZ2V0KCkp
LCBwbGF0Zm9ybVZpZGVvU2luaywgdmlkZW9TY2FsZSwgY29sb3JzcGFjZSwgcXVldWUsIE5VTEwp
OwotCi0gICAgLy8gRmFzdGVyIGVsZW1lbnRzIGxpbmtpbmcuCi0gICAgZ3N0X2VsZW1lbnRfbGlu
a19wYWRzX2Z1bGwocXVldWUsICJzcmMiLCBjb2xvcnNwYWNlLCAic2luayIsIEdTVF9QQURfTElO
S19DSEVDS19OT1RISU5HKTsKLSAgICBnc3RfZWxlbWVudF9saW5rX3BhZHNfZnVsbChjb2xvcnNw
YWNlLCAic3JjIiwgdmlkZW9TY2FsZSwgInNpbmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9USElO
Ryk7Ci0gICAgZ3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1bGwodmlkZW9TY2FsZSwgInNyYyIsIHBs
YXRmb3JtVmlkZW9TaW5rLCAic2luayIsIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKLQot
ICAgIC8vIExpbmsgYSBuZXcgc3JjIHBhZCBmcm9tIHRlZSB0byBxdWV1ZS4KLSNpZm5kZWYgR1NU
X0FQSV9WRVJTSU9OXzEKLSAgICBHUmVmUHRyPEdzdFBhZD4gc3JjUGFkID0gYWRvcHRHUmVmKGdz
dF9lbGVtZW50X2dldF9yZXF1ZXN0X3BhZCh0ZWUuZ2V0KCksICJzcmMlZCIpKTsKLSNlbHNlCi0g
ICAgR1JlZlB0cjxHc3RQYWQ+IHNyY1BhZCA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9nZXRfcmVx
dWVzdF9wYWQodGVlLmdldCgpLCAic3JjXyV1IikpOwotI2VuZGlmCi0gICAgR1JlZlB0cjxHc3RQ
YWQ+IHNpbmtQYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQocXVldWUs
ICJzaW5rIikpOwotICAgIGdzdF9wYWRfbGluayhzcmNQYWQuZ2V0KCksIHNpbmtQYWQuZ2V0KCkp
OwotCi0gICAgbV9keW5hbWljUGFkTmFtZS5zZXQoZ3N0X3BhZF9nZXRfbmFtZShzcmNQYWQuZ2V0
KCkpKTsKLQotICAgIC8vIFN5bmNocm9uaXplIHRoZSBuZXcgZWxlbWVudHMgd2l0aCBwaXBlbGlu
ZSBzdGF0ZS4gSWYgaXQncwotICAgIC8vIHBhdXNlZCBsaW1pdCB0aGUgc3RhdGUgY2hhbmdlIHRv
IHByZS1yb2xsaW5nLgotICAgIEdzdFN0YXRlIHN0YXRlOwotICAgIGdzdF9lbGVtZW50X2dldF9z
dGF0ZShtX3BpcGVsaW5lLCAmc3RhdGUsIDAsIDApOwotICAgIGlmIChzdGF0ZSA8IEdTVF9TVEFU
RV9QTEFZSU5HKQotICAgICAgICBzdGF0ZSA9IEdTVF9TVEFURV9SRUFEWTsKLQotICAgIGdzdF9l
bGVtZW50X3NldF9zdGF0ZShwbGF0Zm9ybVZpZGVvU2luaywgc3RhdGUpOwotICAgIGdzdF9lbGVt
ZW50X3NldF9zdGF0ZSh2aWRlb1NjYWxlLCBzdGF0ZSk7Ci0gICAgZ3N0X2VsZW1lbnRfc2V0X3N0
YXRlKGNvbG9yc3BhY2UsIHN0YXRlKTsKLSAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUocXVldWUs
IHN0YXRlKTsKLQotI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQotICAgIC8vIFF1ZXJ5IHRoZSBj
dXJyZW50IG1lZGlhIHNlZ21lbnQgaW5mb3JtYXRpb25zIGFuZCBzZW5kIHRoZW0gdG93YXJkcwot
ICAgIC8vIHRoZSBuZXcgdGVlIGJyYW5jaCBkb3duc3RyZWFtLgotICAgIEdzdFF1ZXJ5KiBxdWVy
eSA9IGdzdF9xdWVyeV9uZXdfc2VnbWVudChHU1RfRk9STUFUX1RJTUUpOwotICAgIGdib29sZWFu
IHF1ZXJ5UmVzdWx0ID0gZ3N0X2VsZW1lbnRfcXVlcnkobV9waXBlbGluZSwgcXVlcnkpOwotCi0g
ICAgaWYgKCFxdWVyeVJlc3VsdCkgewotICAgICAgICBnc3RfcXVlcnlfdW5yZWYocXVlcnkpOwot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBnaW50NjQgcG9zaXRpb247Ci0gICAg
R3N0Rm9ybWF0IGZvcm1hdDsKLSAgICBpZiAoIWdzdF9lbGVtZW50X3F1ZXJ5X3Bvc2l0aW9uKG1f
cGlwZWxpbmUsICZmb3JtYXQsICZwb3NpdGlvbikpCi0gICAgICAgIHBvc2l0aW9uID0gMDsKLQot
ICAgIGdkb3VibGUgcmF0ZTsKLSAgICBnaW50NjQgc3RhcnRWYWx1ZSwgc3RvcFZhbHVlOwotICAg
IGdzdF9xdWVyeV9wYXJzZV9zZWdtZW50KHF1ZXJ5LCAmcmF0ZSwgJmZvcm1hdCwgJnN0YXJ0VmFs
dWUsICZzdG9wVmFsdWUpOwotCi0gICAgR3N0RXZlbnQqIGV2ZW50ID0gZ3N0X2V2ZW50X25ld19u
ZXdfc2VnbWVudChGQUxTRSwgcmF0ZSwgZm9ybWF0LCBzdGFydFZhbHVlLCBzdG9wVmFsdWUsIHBv
c2l0aW9uKTsKLSAgICBnc3RfcGFkX3B1c2hfZXZlbnQoc3JjUGFkLmdldCgpLCBldmVudCk7Ci0K
LSAgICBnc3RfcXVlcnlfdW5yZWYocXVlcnkpOwotI2VuZGlmCi0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQotc3RhdGljIEdzdFBhZFByb2JlUmV0dXJuIGdz
dEdXb3JsZFBhZFByb2JlQ2FsbGJhY2soR3N0UGFkKiBwYWQsIEdzdFBhZFByb2JlSW5mbyogaW5m
bywgR1N0cmVhbWVyR1dvcmxkKiBnc3RHV29ybGQpCi17Ci0gICAgZ3N0R1dvcmxkLT5yZW1vdmVQ
bGF0Zm9ybVZpZGVvU2luaygpOwotICAgIHJldHVybiBHU1RfUEFEX1BST0JFX1JFTU9WRTsKLX0K
LSNlbmRpZgotCi12b2lkIEdTdHJlYW1lckdXb3JsZDo6ZXhpdEZ1bGxzY3JlZW4oKQotewotICAg
IGlmICghbV9keW5hbWljUGFkTmFtZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR1JlZlB0cjxH
c3RFbGVtZW50PiB2aWRlb1Npbms7Ci0gICAgZ19vYmplY3RfZ2V0KG1fcGlwZWxpbmUsICJ2aWRl
by1zaW5rIiwgJnZpZGVvU2luay5vdXRQdHIoKSwgTlVMTCk7Ci0KLSAgICBHUmVmUHRyPEdzdEVs
ZW1lbnQ+IHRlZSA9IGFkb3B0R1JlZihnc3RfYmluX2dldF9ieV9uYW1lKEdTVF9CSU4odmlkZW9T
aW5rLmdldCgpKSwgInZpZGVvVGVlIikpOwotICAgIEdSZWZQdHI8R3N0UGFkPiBzcmNQYWQgPSBh
ZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQodGVlLmdldCgpLCBtX2R5bmFtaWNQ
YWROYW1lLmdldCgpKSk7Ci0KLSAgICAvLyBCbG9jayBkYXRhIGZsb3cgdG93YXJkcyB0aGUgcGlw
ZWxpbmUgYnJhbmNoIHRvIHJlbW92ZS4gTm8gbmVlZAotICAgIC8vIGZvciBwYWQgYmxvY2tpbmcg
aWYgdGhlIHBpcGVsaW5lIGlzIHBhdXNlZC4KLSAgICBHc3RTdGF0ZSBzdGF0ZTsKLSAgICBnc3Rf
ZWxlbWVudF9nZXRfc3RhdGUobV9waXBlbGluZSwgJnN0YXRlLCAwLCAwKTsKLSNpZmRlZiBHU1Rf
QVBJX1ZFUlNJT05fMQotICAgIGlmIChzdGF0ZSA+PSBHU1RfU1RBVEVfUExBWUlORykKLSAgICAg
ICAgZ3N0X3BhZF9hZGRfcHJvYmUoc3JjUGFkLmdldCgpLCBHU1RfUEFEX1BST0JFX1RZUEVfSURM
RSwgcmVpbnRlcnByZXRfY2FzdDxHc3RQYWRQcm9iZUNhbGxiYWNrPihnc3RHV29ybGRQYWRQcm9i
ZUNhbGxiYWNrKSwgdGhpcywgMCk7Ci0gICAgZWxzZQotI2Vsc2UKLSAgICBpZiAoc3RhdGUgPCBH
U1RfU1RBVEVfUExBWUlORyB8fCBnc3RfcGFkX3NldF9ibG9ja2VkKHNyY1BhZC5nZXQoKSwgdHJ1
ZSkpCi0jZW5kaWYKLSAgICAgICAgcmVtb3ZlUGxhdGZvcm1WaWRlb1NpbmsoKTsKLQotICAgIG1f
dmlkZW9XaW5kb3cgPSAwOwotfQotCi12b2lkIEdTdHJlYW1lckdXb3JsZDo6cmVtb3ZlUGxhdGZv
cm1WaWRlb1NpbmsoKQotewotICAgIGlmICghbV9keW5hbWljUGFkTmFtZSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgLy8gR2V0IHZpZGVvIHNpbmsgYmluIGFuZCB0aGUgZWxlbWVudHMgdG8gcmVt
b3ZlLgotICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gdmlkZW9TaW5rOwotICAgIGdfb2JqZWN0X2dl
dChtX3BpcGVsaW5lLCAidmlkZW8tc2luayIsICZ2aWRlb1Npbmsub3V0UHRyKCksIE5VTEwpOwot
Ci0gICAgR1JlZlB0cjxHc3RFbGVtZW50PiB0ZWUgPSBhZG9wdEdSZWYoZ3N0X2Jpbl9nZXRfYnlf
bmFtZShHU1RfQklOKHZpZGVvU2luay5nZXQoKSksICJ2aWRlb1RlZSIpKTsKLSAgICBHUmVmUHRy
PEdzdEVsZW1lbnQ+IHBsYXRmb3JtVmlkZW9TaW5rID0gYWRvcHRHUmVmKGdzdF9iaW5fZ2V0X2J5
X25hbWUoR1NUX0JJTih2aWRlb1NpbmsuZ2V0KCkpLCAicGxhdGZvcm1WaWRlb1NpbmsiKSk7Ci0g
ICAgR1JlZlB0cjxHc3RFbGVtZW50PiBxdWV1ZSA9IGFkb3B0R1JlZihnc3RfYmluX2dldF9ieV9u
YW1lKEdTVF9CSU4odmlkZW9TaW5rLmdldCgpKSwgInF1ZXVlIikpOwotICAgIEdSZWZQdHI8R3N0
RWxlbWVudD4gY29sb3JzcGFjZSA9IGFkb3B0R1JlZihnc3RfYmluX2dldF9ieV9uYW1lKEdTVF9C
SU4odmlkZW9TaW5rLmdldCgpKSwgImNvbG9yc3BhY2UiKSk7Ci0gICAgR1JlZlB0cjxHc3RFbGVt
ZW50PiB2aWRlb1NjYWxlID0gYWRvcHRHUmVmKGdzdF9iaW5fZ2V0X2J5X25hbWUoR1NUX0JJTih2
aWRlb1NpbmsuZ2V0KCkpLCAidmlkZW9TY2FsZSIpKTsKLQotICAgIEdSZWZQdHI8R3N0UGFkPiBz
cmNQYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQodGVlLmdldCgpLCBt
X2R5bmFtaWNQYWROYW1lLmdldCgpKSk7Ci0gICAgR1JlZlB0cjxHc3RQYWQ+IHNpbmtQYWQgPSBh
ZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQocXVldWUuZ2V0KCksICJzaW5rIikp
OwotICAgIGdzdF9wYWRfdW5saW5rKHNyY1BhZC5nZXQoKSwgc2lua1BhZC5nZXQoKSk7Ci0gICAg
Z3N0X2VsZW1lbnRfcmVsZWFzZV9yZXF1ZXN0X3BhZCh0ZWUuZ2V0KCksIHNyY1BhZC5nZXQoKSk7
Ci0KLSAgICBnc3RfZWxlbWVudF91bmxpbmtfbWFueShxdWV1ZS5nZXQoKSwgY29sb3JzcGFjZS5n
ZXQoKSwgdmlkZW9TY2FsZS5nZXQoKSwgcGxhdGZvcm1WaWRlb1NpbmsuZ2V0KCksIE5VTEwpOwot
ICAgIGdzdF9iaW5fcmVtb3ZlX21hbnkoR1NUX0JJTih2aWRlb1NpbmsuZ2V0KCkpLCBxdWV1ZS5n
ZXQoKSwgY29sb3JzcGFjZS5nZXQoKSwgdmlkZW9TY2FsZS5nZXQoKSwgcGxhdGZvcm1WaWRlb1Np
bmsuZ2V0KCksIE5VTEwpOwotICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShwbGF0Zm9ybVZpZGVv
U2luay5nZXQoKSwgR1NUX1NUQVRFX05VTEwpOwotICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZSh2
aWRlb1NjYWxlLmdldCgpLCBHU1RfU1RBVEVfTlVMTCk7Ci0gICAgZ3N0X2VsZW1lbnRfc2V0X3N0
YXRlKGNvbG9yc3BhY2UuZ2V0KCksIEdTVF9TVEFURV9OVUxMKTsKLSAgICBnc3RfZWxlbWVudF9z
ZXRfc3RhdGUocXVldWUuZ2V0KCksIEdTVF9TVEFURV9OVUxMKTsKLQotICAgIG1fZHluYW1pY1Bh
ZE5hbWUuY2xlYXIoKTsKLX0KLQotdm9pZCBHU3RyZWFtZXJHV29ybGQ6OnNldFdpbmRvd092ZXJs
YXkoR3N0TWVzc2FnZSogbWVzc2FnZSkKLXsKLSAgICBHc3RPYmplY3QqIHNpbmsgPSBHU1RfTUVT
U0FHRV9TUkMobWVzc2FnZSk7Ci0KLSNpZm5kZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICBpZiAo
IUdTVF9JU19YX09WRVJMQVkoc2luaykpCi0jZWxzZQotICAgIGlmICghR1NUX0lTX1ZJREVPX09W
RVJMQVkoc2luaykpCi0jZW5kaWYKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGdfb2JqZWN0
X2NsYXNzX2ZpbmRfcHJvcGVydHkoR19PQkpFQ1RfR0VUX0NMQVNTKHNpbmspLCAiZm9yY2UtYXNw
ZWN0LXJhdGlvIikpCi0gICAgICAgIGdfb2JqZWN0X3NldChzaW5rLCAiZm9yY2UtYXNwZWN0LXJh
dGlvIiwgVFJVRSwgTlVMTCk7Ci0KLSAgICBpZiAobV92aWRlb1dpbmRvdykgewotICAgICAgICBt
X3ZpZGVvV2luZG93LT5wcmVwYXJlRm9yT3ZlcmxheShtZXNzYWdlKTsKLQotI2lmbmRlZiBHU1Rf
QVBJX1ZFUlNJT05fMQotLy8gZ3N0X3hfb3ZlcmxheV9zZXRfd2luZG93X2hhbmRsZSB3YXMgaW50
cm9kdWNlZCBpbiAtcGx1Z2lucy1iYXNlCi0vLyAwLjEwLjMxLCBqdXN0IGxpa2UgdGhlIG1hY3Jv
IGZvciBjaGVja2luZyB0aGUgdmVyc2lvbi4KLSNpZmRlZiBHU1RfQ0hFQ0tfUExVR0lOU19CQVNF
X1ZFUlNJT04KLSAgICAgICAgZ3N0X3hfb3ZlcmxheV9zZXRfd2luZG93X2hhbmRsZShHU1RfWF9P
VkVSTEFZKHNpbmspLCBtX3ZpZGVvV2luZG93LT52aWRlb1dpbmRvd0lkKCkpOwotI2Vsc2UKLSAg
ICAgICAgZ3N0X3hfb3ZlcmxheV9zZXRfeHdpbmRvd19pZChHU1RfWF9PVkVSTEFZKHNpbmspLCBt
X3ZpZGVvV2luZG93LT52aWRlb1dpbmRvd0lkKCkpOwotI2VuZGlmCi0jZWxzZQotICAgICAgICBn
c3RfdmlkZW9fb3ZlcmxheV9zZXRfd2luZG93X2hhbmRsZShHU1RfVklERU9fT1ZFUkxBWShzaW5r
KSwgbV92aWRlb1dpbmRvdy0+dmlkZW9XaW5kb3dJZCgpKTsKLSNlbmRpZgotICAgIH0KLX0KLQot
fQotI2VuZGlmIC8vIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgVVNFKE5BVElW
RV9GVUxMU0NSRUVOX1ZJREVPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAyMjgwNmI0MDhmODBhNjU2ODFkNjZhZTc2YTNiOGY3MTNiMzc5NGZm
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuaAorKysg
L2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDEwIEln
YWxpYSBTLkwKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoK
LSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCi0gKi8KLQotCi0jaWZuZGVmIEdTdHJlYW1lckdXb3JsZF9oCi0jZGVmaW5l
IEdTdHJlYW1lckdXb3JsZF9oCi0jaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAm
JiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCi0KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3du
UHRyLmg+Ci0KLSNpbmNsdWRlICJQbGF0Zm9ybVZpZGVvV2luZG93LmgiCi0KLSNpbmNsdWRlIDxn
bGliLmg+Ci0KLXR5cGVkZWYgc3RydWN0IF9Hc3RFbGVtZW50IEdzdEVsZW1lbnQ7Ci10eXBlZGVm
IHN0cnVjdCBfR3N0TWVzc2FnZSBHc3RNZXNzYWdlOwotdHlwZWRlZiBzdHJ1Y3QgX0dzdEJ1cyBH
c3RCdXM7Ci10eXBlZGVmIHN0cnVjdCBfR3N0QmluIEdzdEJpbjsKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI7Ci0KLWdib29sZWFuIGdz
dEdXb3JsZFN5bmNNZXNzYWdlQ2FsbGJhY2soR3N0QnVzKiBidXMsIEdzdE1lc3NhZ2UqIG1lc3Nh
Z2UsIGdwb2ludGVyIGRhdGEpOwotCi1jbGFzcyBHU3RyZWFtZXJHV29ybGQgOiBwdWJsaWMgUmVm
Q291bnRlZDxHU3RyZWFtZXJHV29ybGQ+IHsKLSAgICBmcmllbmQgZ2Jvb2xlYW4gZ3N0R1dvcmxk
U3luY01lc3NhZ2VDYWxsYmFjayhHc3RCdXMqIGJ1cywgR3N0TWVzc2FnZSogbWVzc2FnZSwgZ3Bv
aW50ZXIgZGF0YSk7Ci0KLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxHU3RyZWFtZXJH
V29ybGQ+IGNyZWF0ZUdXb3JsZChHc3RFbGVtZW50Kik7Ci0gICAgfkdTdHJlYW1lckdXb3JsZCgp
OwotCi0gICAgR3N0RWxlbWVudCogcGlwZWxpbmUoKSBjb25zdCB7IHJldHVybiBtX3BpcGVsaW5l
OyB9Ci0gICAgdm9pZCByZW1vdmVQbGF0Zm9ybVZpZGVvU2luaygpOwotCi0gICAgLy8gUmV0dXJu
cyB0aGUgZnVsbC1zY3JlZW4gd2luZG93IGNyZWF0ZWQKLSAgICBib29sIGVudGVyRnVsbHNjcmVl
bigpOwotICAgIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKTsKLQotICAgIGJvb2wgaXNGdWxsc2NyZWVu
KCkgY29uc3QgeyByZXR1cm4gbV9keW5hbWljUGFkTmFtZTsgfQotCi0gICAgdm9pZCBzZXRXaW5k
b3dPdmVybGF5KEdzdE1lc3NhZ2UqIG1lc3NhZ2UpOwotICAgIFBsYXRmb3JtVmlkZW9XaW5kb3cq
IHBsYXRmb3JtVmlkZW9XaW5kb3coKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvV2luZG93LmdldCgp
OyB9Ci0KLXByaXZhdGU6Ci0gICAgR1N0cmVhbWVyR1dvcmxkKEdzdEVsZW1lbnQqKTsKLSAgICBH
c3RFbGVtZW50KiBtX3BpcGVsaW5lOwotICAgIFJlZlB0cjxQbGF0Zm9ybVZpZGVvV2luZG93PiBt
X3ZpZGVvV2luZG93OwotICAgIEdPd25QdHI8Z2NoYXI+IG1fZHluYW1pY1BhZE5hbWU7Ci19Owot
Ci19Ci0jZW5kaWYgLy8gRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFU
SVZFX0ZVTExTQ1JFRU5fVklERU8pCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lckNhaXJvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZUdTdHJlYW1lckNh
aXJvLmNwcAppbmRleCAzMjhjNTNlNGVmMWNhM2Y5M2M0NDJmMDA3NzEzOTYwOWU4MjZlZmU5Li43
NWUxMjZmMWI0ODk2ZjUyNWE2OWQ1Y2M5NzQyM2UzNDYyYzYwMTMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VHU3RyZWFtZXJDYWly
by5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0lt
YWdlR1N0cmVhbWVyQ2Fpcm8uY3BwCkBAIC0yNCw3ICsyNCw2IEBACiAKICNpbmNsdWRlIDxjYWly
by5oPgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4K
ICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAKICNpZmRlZiBHU1RfQVBJX1ZFUlNJ
T05fMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2UuY3BwCmluZGV4IDM2YjI3MDZjODRmY2MxYjg0NmY3NWFiOTg4MDRkNjliMTBhYzgzYmYuLjk5
NWRkOGRhNGQ3YjczZGI4NTdhYTYzOThkZDcwOTlkNDhkNGMyNTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKQEAgLTI3LDggKzI3
LDYgQEAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCiAKICNpbmNsdWRlICJD
b2xvclNwYWNlLmgiCi0jaW5jbHVkZSAiRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1l
ci5oIgotI2luY2x1ZGUgIkdTdHJlYW1lckdXb3JsZC5oIgogI2luY2x1ZGUgIkdTdHJlYW1lclV0
aWxpdGllcy5oIgogI2luY2x1ZGUgIkdTdHJlYW1lclZlcnNpb25pbmcuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKQEAgLTQxLDcgKzM5LDYgQEAKICNpbmNsdWRlICJWaWRlb1NpbmtH
U3RyZWFtZXIuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuaCIKICNpbmNs
dWRlIDxnc3QvZ3N0Lmg+Ci0jaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKQEAgLTE1Niwx
MSArMTUzLDYgQEAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6fk1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2UoKQogICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5l
Y3QobV92b2x1bWVFbGVtZW50LmdldCgpLCBtX211dGVTaWduYWxIYW5kbGVyKTsKICAgICAgICAg
bV9tdXRlU2lnbmFsSGFuZGxlciA9IDA7CiAgICAgfQotCi0jaWYgVVNFKE5BVElWRV9GVUxMU0NS
RUVOX1ZJREVPKQotICAgIGlmIChtX2Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIpCi0gICAgICAg
IGV4aXRGdWxsc2NyZWVuKCk7Ci0jZW5kaWYKIH0KIAogLy8gUmV0dXJucyB0aGUgc2l6ZSBvZiB0
aGUgdmlkZW8KQEAgLTQ2NCwyNCArNDU2LDYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXIKIH0K
ICNlbmRpZgogCi0jaWYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQotdm9pZCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjplbnRlckZ1bGxzY3JlZW4oKQotewotICAgIEFTU0VS
VCghbV9mdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKTsKLSAgICBtX2Z1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXIgPSBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyOjpjcmVhdGUodGhp
cyk7Ci0gICAgaWYgKG1fZnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcikKLSAgICAgICAgbV9mdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyLT5lbnRlckZ1bGxzY3JlZW4oKTsKLX0KLQotdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpleGl0RnVsbHNjcmVlbigpCi17Ci0gICAgaWYg
KCFtX2Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2Z1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXItPmV4aXRGdWxsc2NyZWVuKCk7Ci0gICAgbV9mdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyLnJlbGVhc2UoKTsKLX0KLSNlbmRpZgotCiBib29sIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIHRydWU7CkBAIC00ODksMTQgKzQ2Myw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZTo6c3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3QKIAogUGxhdGZvcm1N
ZWRpYSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwbGF0Zm9ybU1lZGlhKCkgY29u
c3QKIHsKLSNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCi0gICAgUGxhdGZvcm1NZWRp
YSBwOwotICAgIHAudHlwZSA9IFBsYXRmb3JtTWVkaWE6OkdTdHJlYW1lckdXb3JsZFR5cGU7Ci0g
ICAgcC5tZWRpYS5nc3RyZWFtZXJHV29ybGQgPSBtX2dzdEdXb3JsZC5nZXQoKTsKLSAgICByZXR1
cm4gcDsKLSNlbHNlCiAgICAgcmV0dXJuIE5vUGxhdGZvcm1NZWRpYTsKLSNlbmRpZgogfQogCiBN
ZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
Ojptb3ZpZUxvYWRUeXBlKCkgY29uc3QKQEAgLTUyNSwzOCArNDkyLDEzIEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y3JlYXRlVmlkZW9TaW5rKEdzdEVsZW1lbnQqIHBp
cGVsaW5lKQogICAgIGlmICghaW5pdGlhbGl6ZUdTdHJlYW1lcigpKQogICAgICAgICByZXR1cm47
CiAKLSNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCi0gICAgbV9nc3RHV29ybGQgPSBH
U3RyZWFtZXJHV29ybGQ6OmNyZWF0ZUdXb3JsZChwaXBlbGluZSk7Ci0gICAgbV93ZWJraXRWaWRl
b1NpbmsgPSB3ZWJraXRWaWRlb1NpbmtOZXcobV9nc3RHV29ybGQuZ2V0KCkpOwotI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0ocGlwZWxpbmUpOwogICAgIG1fd2Via2l0VmlkZW9TaW5rID0gd2Via2l0
VmlkZW9TaW5rTmV3KCk7Ci0jZW5kaWYKIAogICAgIG1fcmVwYWludEhhbmRsZXIgPSBnX3NpZ25h
bF9jb25uZWN0KG1fd2Via2l0VmlkZW9TaW5rLmdldCgpLCAicmVwYWludC1yZXF1ZXN0ZWQiLCBH
X0NBTExCQUNLKG1lZGlhUGxheWVyUHJpdmF0ZVJlcGFpbnRDYWxsYmFjayksIHRoaXMpOwogCiAg
ICAgbV92aWRlb1NpbmtCaW4gPSBnc3RfYmluX25ldyhudWxscHRyKTsKIAotI2lmIFVTRShOQVRJ
VkVfRlVMTFNDUkVFTl9WSURFTykKLSAgICAvLyBCdWlsZCBhIG5ldyB2aWRlbyBzaW5rIGNvbnNp
c3Rpbmcgb2YgYSBiaW4gY29udGFpbmluZyBhIHRlZQotICAgIC8vIChtZWFudCB0byBkaXN0cmli
dXRlIGRhdGEgdG8gbXVsdGlwbGUgdmlkZW8gc2lua3MpIGFuZCBvdXIKLSAgICAvLyBpbnRlcm5h
bCB2aWRlbyBzaW5rLiBGb3IgZnVsbHNjcmVlbiB3ZSBjcmVhdGUgYW4gYXV0b3ZpZGVvc2luawot
ICAgIC8vIGFuZCBpbml0aWFsbHkgYmxvY2sgdGhlIGRhdGEgZmxvdyB0b3dhcmRzIGl0IGFuZCBj
b25maWd1cmUgaXQKLQotICAgIEdzdEVsZW1lbnQqIHZpZGVvVGVlID0gZ3N0X2VsZW1lbnRfZmFj
dG9yeV9tYWtlKCJ0ZWUiLCAidmlkZW9UZWUiKTsKLSAgICBHc3RFbGVtZW50KiBxdWV1ZSA9IGdz
dF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgicXVldWUiLCBudWxscHRyKTsKLQotI2lmZGVmIEdTVF9B
UElfVkVSU0lPTl8xCi0gICAgR1JlZlB0cjxHc3RQYWQ+IHNpbmtQYWQgPSBhZG9wdEdSZWYoZ3N0
X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQodmlkZW9UZWUsICJzaW5rIikpOwotICAgIEdTVF9PQkpF
Q1RfRkxBR19TRVQoR1NUX09CSkVDVChzaW5rUGFkLmdldCgpKSwgR1NUX1BBRF9GTEFHX1BST1hZ
X0FMTE9DQVRJT04pOwotI2VuZGlmCi0KLSAgICBnc3RfYmluX2FkZF9tYW55KEdTVF9CSU4obV92
aWRlb1NpbmtCaW4uZ2V0KCkpLCB2aWRlb1RlZSwgcXVldWUsIG51bGxwdHIpOwotCi0gICAgLy8g
TGluayBhIG5ldyBzcmMgcGFkIGZyb20gdGVlIHRvIHF1ZXVlMS4KLSAgICBnc3RfZWxlbWVudF9s
aW5rX3BhZHNfZnVsbCh2aWRlb1RlZSwgbnVsbHB0ciwgcXVldWUsICJzaW5rIiwgR1NUX1BBRF9M
SU5LX0NIRUNLX05PVEhJTkcpOwotI2VuZGlmCi0KICAgICBHc3RFbGVtZW50KiB2aWRlb1Npbmsg
PSBudWxscHRyOwogICAgIG1fZnBzU2luayA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiZnBz
ZGlzcGxheXNpbmsiLCAic2luayIpOwogICAgIGlmIChtX2Zwc1NpbmspIHsKQEAgLTU5NCwxMiAr
NTM2LDYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpjcmVhdGVWaWRl
b1NpbmsoR3N0RWxlbWVudCogcGlwZWxpbmUpCiAgICAgQVNTRVJUKHZpZGVvU2luayk7CiAKICAg
ICBHc3RFbGVtZW50KiBmaXJzdENoaWxkID0gdmlkZW9TaW5rOwotI2lmIFVTRShOQVRJVkVfRlVM
TFNDUkVFTl9WSURFTykKLSAgICAvLyBGYXN0ZXIgZWxlbWVudHMgbGlua2luZy4KLSAgICBnc3Rf
ZWxlbWVudF9saW5rX3BhZHNfZnVsbChxdWV1ZSwgInNyYyIsIHZpZGVvU2luaywgInNpbmsiLCBH
U1RfUEFEX0xJTktfQ0hFQ0tfTk9USElORyk7Ci0KLSAgICBmaXJzdENoaWxkID0gdmlkZW9UZWU7
Ci0jZW5kaWYKICAgICBHUmVmUHRyPEdzdFBhZD4gcGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50
X2dldF9zdGF0aWNfcGFkKGZpcnN0Q2hpbGQsICJzaW5rIikpOwogICAgIGdzdF9lbGVtZW50X2Fk
ZF9wYWQobV92aWRlb1NpbmtCaW4uZ2V0KCksIGdzdF9naG9zdF9wYWRfbmV3KCJzaW5rIiwgcGFk
LmdldCgpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2UuaAppbmRleCBkOGQ3YjRhZGIxZWJhNWM3ZGYyM2FmMDZmY2NmMDlmZWM2NjViYTQz
Li42ZjAwODIxMWJmNWYxZDFiZjkxMTRmNzM5YjA3ZmM5MTBiM2E5MDhlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKQEAgLTQzLDExICs0
Myw5IEBAIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRWaWRlb1NpbmsgV2ViS2l0VmlkZW9TaW5rOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJH
U3RyZWFtZXI7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbnRTaXplOwogY2xhc3Mg
SW50UmVjdDsKLWNsYXNzIEdTdHJlYW1lckdXb3JsZDsKIAogY2xhc3MgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZSA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UKICNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFVTRShURVhUVVJFX01BUFBFUl9HTCkg
JiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKQEAgLTg0LDEyICs4Miw2IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CiAgICAgdmlydHVhbCBmbG9hdCBtYXhUaW1lTG9hZGVkKCkgY29uc3QgeyByZXR1
cm4gMC4wOyB9CiAKLSNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCi0gICAgdm9pZCBl
bnRlckZ1bGxzY3JlZW4oKTsKLSAgICB2b2lkIGV4aXRGdWxsc2NyZWVuKCk7Ci0gICAgYm9vbCBj
YW5FbnRlckZ1bGxzY3JlZW4oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0jZW5kaWYKLQogICAg
IGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3Q7CiAgICAgUGxhdGZvcm1NZWRpYSBwbGF0
Zm9ybU1lZGlhKCkgY29uc3Q7CiAKQEAgLTEyNiwxMCArMTE4LDYgQEAgcHJvdGVjdGVkOgogICAg
IEludFNpemUgbV9zaXplOwogICAgIEdNdXRleCogbV9idWZmZXJNdXRleDsKICAgICBHc3RCdWZm
ZXIqIG1fYnVmZmVyOwotI2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKLSAgICBSZWZQ
dHI8R1N0cmVhbWVyR1dvcmxkPiBtX2dzdEdXb3JsZDsKLSAgICBPd25QdHI8RnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlckdTdHJlYW1lcj4gbV9mdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOwotI2Vu
ZGlmCiAgICAgdW5zaWduZWQgbG9uZyBtX3ZvbHVtZVRpbWVySGFuZGxlcjsKICAgICB1bnNpZ25l
ZCBsb25nIG1fbXV0ZVRpbWVySGFuZGxlcjsKICAgICB1bnNpZ25lZCBsb25nIG1fcmVwYWludEhh
bmRsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3cuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNGExYmM5ZjBmZDRjZDJkZjM3Y2VkN2MxNTgzODEzZjg2OWZiYzBmNy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvdy5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBJZ2Fs
aWEgUy5MCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgot
ICovCi0KLSNpZm5kZWYgUGxhdGZvcm1WaWRlb1dpbmRvd19oCi0jZGVmaW5lIFBsYXRmb3JtVmlk
ZW9XaW5kb3dfaAotI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYgVVNFKE5B
VElWRV9GVUxMU0NSRUVOX1ZJREVPKQotCi0jaW5jbHVkZSAiV2lkZ2V0LmgiCi0jaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi0jaWYgUExB
VEZPUk0oTUFDKQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNlbmRpZgotCi10eXBlZGVm
IHN0cnVjdCBfR3N0TWVzc2FnZSBHc3RNZXNzYWdlOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWNsYXNzIFBsYXRmb3JtVmlkZW9XaW5kb3cgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF0Zm9ybVZp
ZGVvV2luZG93PiB7Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0
Zm9ybVZpZGVvV2luZG93PiBjcmVhdGVXaW5kb3coKSB7IHJldHVybiBhZG9wdFJlZihuZXcgUGxh
dGZvcm1WaWRlb1dpbmRvdygpKTsgfQotCi0gICAgICAgIFBsYXRmb3JtVmlkZW9XaW5kb3coKTsK
LSAgICAgICAgflBsYXRmb3JtVmlkZW9XaW5kb3coKTsKLQotCi0gICAgICAgIHZvaWQgcHJlcGFy
ZUZvck92ZXJsYXkoR3N0TWVzc2FnZSopOwotI2lmICFQTEFURk9STShNQUMpCi0gICAgICAgIFBs
YXRmb3JtV2lkZ2V0IHdpbmRvdygpIGNvbnN0IHsgcmV0dXJuIG1fd2luZG93OyB9Ci0jZWxzZQot
ICAgICAgICBQbGF0Zm9ybVdpZGdldCB3aW5kb3coKSBjb25zdCB7IHJldHVybiBtX3dpbmRvdy5n
ZXQoKTsgfQotI2VuZGlmCi0gICAgICAgIHVuc2lnbmVkIGxvbmcgdmlkZW9XaW5kb3dJZCgpIGNv
bnN0IHsgcmV0dXJuIG1fdmlkZW9XaW5kb3dJZDsgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAg
dW5zaWduZWQgbG9uZyBtX3ZpZGVvV2luZG93SWQ7Ci0gICAgICAgIFBsYXRmb3JtV2lkZ2V0IG1f
dmlkZW9XaW5kb3c7Ci0jaWYgIVBMQVRGT1JNKE1BQykKLSAgICAgICAgUGxhdGZvcm1XaWRnZXQg
bV93aW5kb3c7Ci0jZWxzZQotICAgICAgICBSZXRhaW5QdHI8TlNWaWV3PiBtX3dpbmRvdzsKLSNl
bmRpZgotCi0gICAgfTsKLX0KLQotI2VuZGlmIC8vIFVTRShHU1RSRUFNRVIpICYmIFVTRShOQVRJ
VkVfRlVMTFNDUkVFTl9WSURFTykKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dFZmwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9X
aW5kb3dFZmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTNkMTBkOGFjZjIx
ZmIwMzIyOGVkNDU0NDJiM2U4OGI3NTJiZTIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9QbGF0Zm9ybVZpZGVvV2luZG93RWZsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQyICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcwotICoK
LSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1WaWRlb1dpbmRvdy5oIgotI2lmIFVT
RShHU1RSRUFNRVIpICYmICFkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQotCi0jaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLVBsYXRmb3Jt
VmlkZW9XaW5kb3c6OlBsYXRmb3JtVmlkZW9XaW5kb3coKQotewotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci19Ci0KLVBsYXRmb3JtVmlkZW9XaW5kb3c6On5QbGF0Zm9ybVZpZGVvV2luZG93KCkKLXsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFBsYXRmb3JtVmlkZW9XaW5kb3c6OnBy
ZXBhcmVGb3JPdmVybGF5KEdzdE1lc3NhZ2UqKQotewotfQotCi0jZW5kaWYgLy8gVVNFKEdTVFJF
QU1FUikgJiYgIWRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd0d0
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZv
cm1WaWRlb1dpbmRvd0d0ay5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjMzU3
MmIyNzYwNjE4ZmY4ZDk5YzRmYWJkODVlODBmNzUxMmQzNzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dHdGsuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsNjggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MCi0gKgot
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVZpZGVvV2luZG93LmgiCi0jaWYgRU5B
QkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklE
RU8pCi0KLSNpbmNsdWRlIDxndGsvZ3RrLmg+Ci0KLSNpZmRlZiBHREtfV0lORE9XSU5HX1gxMQot
I2luY2x1ZGUgPGdkay9nZGt4Lmg+IC8vIGZvciBHREtfV0lORE9XX1hJRAotI2VuZGlmCi0KLXVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1QbGF0Zm9ybVZpZGVvV2luZG93OjpQbGF0Zm9ybVZp
ZGVvV2luZG93KCkKLXsKLSAgICBtX3dpbmRvdyA9IGd0a193aW5kb3dfbmV3KEdUS19XSU5ET1df
VE9QTEVWRUwpOwotICAgIGd0a193aWRnZXRfc2V0X2V2ZW50cyhtX3dpbmRvdywgR0RLX1BPSU5U
RVJfTU9USU9OX01BU0sgfCBHREtfS0VZX1BSRVNTX01BU0sgfCBHREtfRk9DVVNfQ0hBTkdFX01B
U0spOwotCi0gICAgbV92aWRlb1dpbmRvdyA9IGd0a19kcmF3aW5nX2FyZWFfbmV3KCk7Ci0gICAg
Z3RrX3dpZGdldF9zZXRfZG91YmxlX2J1ZmZlcmVkKG1fdmlkZW9XaW5kb3csIEZBTFNFKTsKLSAg
ICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKG1fd2luZG93KSwgbV92aWRlb1dpbmRv
dyk7Ci0KLSAgICBndGtfd2lkZ2V0X3JlYWxpemUobV93aW5kb3cpOwotCi0jaWZkZWYgR0RLX1dJ
TkRPV0lOR19YMTEKLSAgICBtX3ZpZGVvV2luZG93SWQgPSBHREtfV0lORE9XX1hJRChndGtfd2lk
Z2V0X2dldF93aW5kb3cobV93aW5kb3cpKTsKLSNlbmRpZgotCi19Ci0KLVBsYXRmb3JtVmlkZW9X
aW5kb3c6On5QbGF0Zm9ybVZpZGVvV2luZG93KCkKLXsKLSAgICBpZiAobV92aWRlb1dpbmRvdykg
ewotICAgICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3kobV92aWRlb1dpbmRvdyk7Ci0gICAgICAgIG1f
dmlkZW9XaW5kb3cgPSAwOwotICAgIH0KLQotICAgIGlmIChtX3dpbmRvdykgewotICAgICAgICBn
dGtfd2lkZ2V0X2Rlc3Ryb3kobV93aW5kb3cpOwotICAgICAgICBtX3dpbmRvdyA9IDA7Ci0gICAg
fQotCi0gICAgbV92aWRlb1dpbmRvd0lkID0gMDsKLX0KLQotdm9pZCBQbGF0Zm9ybVZpZGVvV2lu
ZG93OjpwcmVwYXJlRm9yT3ZlcmxheShHc3RNZXNzYWdlKikKLXsKLX0KLSNlbmRpZiAvLyBFTkFC
TEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURF
TykKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd01hYy5tbQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYTM0YWI3OGU0MDZkZmY2M2QxZjhhYTI5OTJjYTJmZTg5YjFiODQ2
MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd01h
Yy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEgSWdhbGlhIFMuTAotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
LSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1W
aWRlb1dpbmRvdy5oIgotCi0jaWYgVVNFKEdTVFJFQU1FUikgJiYgIWRlZmluZWQoR1NUX0FQSV9W
RVJTSU9OXzEpCi0KLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwotCi1QbGF0Zm9ybVZpZGVvV2luZG93OjpQbGF0Zm9ybVZpZGVvV2luZG93KCkKLXsKLSAg
ICBtX3dpbmRvdyA9IGFkb3B0TlMoW1tOU1ZpZXcgYWxsb2NdIGluaXRdKTsKLSAgICBtX3ZpZGVv
V2luZG93SWQgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGxvbmc+KG1fd2luZG93LmdldCgp
KTsKLX0KLQotUGxhdGZvcm1WaWRlb1dpbmRvdzo6flBsYXRmb3JtVmlkZW9XaW5kb3coKQotewot
ICAgIG1fdmlkZW9XaW5kb3dJZCA9IDA7Ci19Ci0KLXZvaWQgUGxhdGZvcm1WaWRlb1dpbmRvdzo6
cHJlcGFyZUZvck92ZXJsYXkoR3N0TWVzc2FnZSogbWVzc2FnZSkKLXsKLSAgICBpZiAoZ3N0X3N0
cnVjdHVyZV9oYXNfbmFtZShtZXNzYWdlLT5zdHJ1Y3R1cmUsICJoYXZlLW5zLXZpZXciKSkgewot
ICAgICAgICBtX3ZpZGVvV2luZG93ID0gc3RhdGljX2Nhc3Q8UGxhdGZvcm1XaWRnZXQ+KGdfdmFs
dWVfZ2V0X3BvaW50ZXIoZ3N0X3N0cnVjdHVyZV9nZXRfdmFsdWUobWVzc2FnZS0+c3RydWN0dXJl
LCAibnN2aWV3IikpKTsKLSAgICAgICAgQVNTRVJUKG1fdmlkZW9XaW5kb3cpOwotICAgICAgICBb
bV93aW5kb3cuZ2V0KCkgYWRkU3VidmlldzptX3ZpZGVvV2luZG93XTsKLSAgICB9Ci19Ci0KLSNl
bmRpZiAvLyBVU0UoR1NUUkVBTUVSKSAmJiAhZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0
Zm9ybVZpZGVvV2luZG93Tml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVvV2luZG93Tml4LmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMmQ5ZGEyZjkwZDZiNjAzNzE0MzMwZjM5NmY0MTViMDg2NzNkMDY0MC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd05peC5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEw
IFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAqIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3Jh
dGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0g
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJQbGF0Zm9ybVZpZGVvV2luZG93LmgiCi0KLSNpZiBVU0UoR1NUUkVBTUVSKSAmJiAh
ZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKLQotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1QbGF0Zm9ybVZpZGVvV2luZG93OjpQbGF0
Zm9ybVZpZGVvV2luZG93KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1QbGF0Zm9y
bVZpZGVvV2luZG93Ojp+UGxhdGZvcm1WaWRlb1dpbmRvdygpCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQotdm9pZCBQbGF0Zm9ybVZpZGVvV2luZG93OjpwcmVwYXJlRm9yT3ZlcmxheShH
c3RNZXNzYWdlKikKLXsKLX0KLQotI2VuZGlmIC8vIFVTRShHU1RSRUFNRVIpICYmICFkZWZpbmVk
KEdTVF9BUElfVkVSU0lPTl8xKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dQcml2YXRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvUGxhdGZvcm1WaWRlb1dpbmRvd1By
aXZhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTcyYjUyMmJlNTQ5MmEyYjE5
NmZlOTc1MGVmZjIwMjExMDM3Yzc1ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
UGxhdGZvcm1WaWRlb1dpbmRvd1ByaXZhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAg
QEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKQotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpZm5kZWYgUGxhdGZvcm1WaWRlb1dpbmRvd1ByaXZh
dGVfaAotI2RlZmluZSBQbGF0Zm9ybVZpZGVvV2luZG93UHJpdmF0ZV9oCi0jaWYgRU5BQkxFKFZJ
REVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCi0K
LSNpbmNsdWRlIDxRRXZlbnQ+Ci0jaW5jbHVkZSA8UVRpbWVyPgotCi0jaW5jbHVkZSA8UVdpbmRv
dz4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBIVE1MVmlkZW9FbGVtZW50OwotCi1j
bGFzcyBGdWxsU2NyZWVuVmlkZW9XaW5kb3c6IHB1YmxpYyBRV2luZG93IHsKLVFfT0JKRUNUCi1w
dWJsaWM6Ci0gICAgRnVsbFNjcmVlblZpZGVvV2luZG93KCk7Ci0gICAgdm9pZCBzZXRWaWRlb0Vs
ZW1lbnQoSFRNTFZpZGVvRWxlbWVudCopOwotUV9TSUdOQUxTOgotICAgIHZvaWQgY2xvc2VkKCk7
Ci1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBrZXlQcmVzc0V2ZW50KFFLZXlFdmVudCopOwotICAgIGJv
b2wgZXZlbnQoUUV2ZW50Kik7Ci0KLXB1YmxpYyBRX1NMT1RTOgotICAgIHZvaWQgc2hvd0Z1bGxT
Y3JlZW4oKTsKLQotcHJpdmF0ZSBRX1NMT1RTOgotICAgIHZvaWQgaGlkZUN1cnNvcigpOwotCi1w
cml2YXRlOgotICAgIHZvaWQgc2hvd0N1cnNvcigpOwotICAgIFFUaW1lciBtX2N1cnNvclRpbWVy
OwotICAgIEhUTUxWaWRlb0VsZW1lbnQqIG1fbWVkaWFFbGVtZW50OwotfTsKLQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFN
RVIpICYmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKLSNlbmRpZiAvLyBQbGF0Zm9ybVZp
ZGVvV2luZG93UHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwCmluZGV4
IGNmZmYzZDE2NWJhNGZjNjU5NTVhNjQ0NGJkMDAxOWRkOTdjMmRiNTcuLmYyNDMyM2Q3NzY0YzVh
MWE3ZThiNTk4NGNjYzA4YmI2NjA4N2QzYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFt
ZXIuY3BwCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2lmZGVmIEdT
VF9BUElfVkVSU0lPTl8xCiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL2dzdHZpZGVvbWV0YS5oPgotI2lu
Y2x1ZGUgPGdzdC92aWRlby9nc3R2aWRlb3Bvb2wuaD4KICNlbmRpZgogI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KIApAQCAtOTIsMTAgKzkxLDYgQEAgc3RydWN0IF9XZWJLaXRWaWRlb1NpbmtQcml2
YXRlIHsKICAgICBHc3RWaWRlb0luZm8gaW5mbzsKICNlbmRpZgogCi0jaWYgVVNFKE5BVElWRV9G
VUxMU0NSRUVOX1ZJREVPKQotICAgIFdlYkNvcmU6OkdTdHJlYW1lckdXb3JsZCogZ3N0R1dvcmxk
OwotI2VuZGlmCi0KICAgICBHc3RDYXBzKiBjdXJyZW50Q2FwczsKIAogICAgIC8vIElmIHRoaXMg
aXMgVFJVRSBhbGwgcHJvY2Vzc2luZyBzaG91bGQgZmluaXNoIEFTQVAKQEAgLTE2NywxNSArMTYy
LDYgQEAgc3RhdGljIEdzdEZsb3dSZXR1cm4gd2Via2l0VmlkZW9TaW5rUmVuZGVyKEdzdEJhc2VT
aW5rKiBiYXNlU2luaywgR3N0QnVmZmVyKiBidWYKICAgICAgICAgcmV0dXJuIEdTVF9GTE9XX09L
OwogICAgIH0KIAotI2lmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKLSAgICAvLyBJZ25v
cmUgYnVmZmVycyBpZiB0aGUgdmlkZW8gaXMgYWxyZWFkeSBpbiBmdWxsc2NyZWVuIHVzaW5nCi0g
ICAgLy8gYW5vdGhlciBzaW5rLgotICAgIGlmIChwcml2LT5nc3RHV29ybGQtPmlzRnVsbHNjcmVl
bigpKSB7Ci0gICAgICAgIGdfbXV0ZXhfdW5sb2NrKHByaXYtPmJ1ZmZlck11dGV4KTsKLSAgICAg
ICAgcmV0dXJuIEdTVF9GTE9XX09LOwotICAgIH0KLSNlbmRpZgotCiAgICAgcHJpdi0+YnVmZmVy
ID0gZ3N0X2J1ZmZlcl9yZWYoYnVmZmVyKTsKIAogI2lmbmRlZiBHU1RfQVBJX1ZFUlNJT05fMQpA
QCAtNDkwLDE4ICs0NzYsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfdmlkZW9fc2lua19jbGFzc19p
bml0KFdlYktpdFZpZGVvU2lua0NsYXNzKiBrbGFzcykKIH0KIAogCi0jaWYgVVNFKE5BVElWRV9G
VUxMU0NSRUVOX1ZJREVPKQotR3N0RWxlbWVudCogd2Via2l0VmlkZW9TaW5rTmV3KFdlYkNvcmU6
OkdTdHJlYW1lckdXb3JsZCogZ3N0R1dvcmxkKQotewotICAgIEdzdEVsZW1lbnQqIGVsZW1lbnQg
PSBHU1RfRUxFTUVOVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfVklERU9fU0lOSywgMCkpOwot
ICAgIFdFQktJVF9WSURFT19TSU5LKGVsZW1lbnQpLT5wcml2LT5nc3RHV29ybGQgPSBnc3RHV29y
bGQ7Ci0gICAgcmV0dXJuIGVsZW1lbnQ7Ci19Ci0jZWxzZQogR3N0RWxlbWVudCogd2Via2l0Vmlk
ZW9TaW5rTmV3KCkKIHsKICAgICByZXR1cm4gR1NUX0VMRU1FTlQoZ19vYmplY3RfbmV3KFdFQktJ
VF9UWVBFX1ZJREVPX1NJTkssIDApKTsKIH0KLSNlbmRpZgogCiAjZW5kaWYgLy8gRU5BQkxFKFZJ
REVPKSAmJiBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5oCmluZGV4
IDhjZmQyYWVkYTJlZDBhYzcxNWNkY2ZlZWVkZGU1NmYzMWZiN2IwNzYuLjFmZjkxNmNiZGZiOWVm
YzljZjRjODFmOGQyMzc3NGQxZjUzYmQ0Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1NpbmtHU3RyZWFtZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVy
LmgKQEAgLTIyLDEzICsyMiw4IEBACiAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFN
RVIpCiAKLSNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCi0jaW5jbHVkZSAiR1N0cmVh
bWVyR1dvcmxkLmgiCi0jZW5kaWYKLQogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVk
ZSA8Z3N0L3ZpZGVvL2dzdHZpZGVvc2luay5oPgotI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby5o
PgogCiAjZGVmaW5lIFdFQktJVF9UWVBFX1ZJREVPX1NJTksgd2Via2l0X3ZpZGVvX3NpbmtfZ2V0
X3R5cGUoKQogCkBAIC02MSwxMSArNTYsNyBAQCBzdHJ1Y3QgX1dlYktpdFZpZGVvU2lua0NsYXNz
IHsKIAogR1R5cGUgd2Via2l0X3ZpZGVvX3NpbmtfZ2V0X3R5cGUoKSBHX0dOVUNfQ09OU1Q7CiAK
LSNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCi1Hc3RFbGVtZW50KiB3ZWJraXRWaWRl
b1NpbmtOZXcoV2ViQ29yZTo6R1N0cmVhbWVyR1dvcmxkKik7Ci0jZWxzZQogR3N0RWxlbWVudCog
d2Via2l0VmlkZW9TaW5rTmV3KCk7Ci0jZW5kaWYKIAogI2VuZGlmIC8vIFVTRShHU1RSRUFNRVIp
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0
ay9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2d0ay9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmM0NjAyOTk0MTY3MGI1YTM0NGMzYTBhY2QwYjJiNDk2
NzYzNzA4MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlckd0ay5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NTkgKzAsMCBAQAotLyoKLSAqICBDb3B5
cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTAotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
LSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAq
ICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0g
KiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAq
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0KLSNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYmIFVTRShOQVRJVkVfRlVM
TFNDUkVFTl9WSURFTykKLQotI2luY2x1ZGUgIkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsu
aCIKLQotI2luY2x1ZGUgIkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIuaCIKLSNp
bmNsdWRlICJHUmVmUHRyR3RrLmgiCi0jaW5jbHVkZSAiR1N0cmVhbWVyR1dvcmxkLmgiCi0jaW5j
bHVkZSAiR3RrVmVyc2lvbmluZy5oIgotI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCi0jaW5jbHVk
ZSAiTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oIgotCi0jaW5jbHVkZSA8Z2RrL2dk
ay5oPgotI2luY2x1ZGUgPGdkay9nZGtrZXlzeW1zLmg+Ci0jaW5jbHVkZSA8Z2xpYi9naTE4bi1s
aWIuaD4KLSNpbmNsdWRlIDxndGsvZ3RrLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgotCi0jZGVmaW5lIEhVRF9BVVRPX0hJREVfSU5URVJWQUwgMzAwMCAvLyAzIHNlY29uZHMKLSNk
ZWZpbmUgUFJPR1JFU1NfQkFSX1VQREFURV9JTlRFUlZBTCAxNTAgLy8gMTUwbXMKLQotLy8gVXNl
IHN5bWJvbGljIGljb25zIG9ubHkgaWYgd2UgYnVpbGQgd2l0aCBHVEsrLTMgc3VwcG9ydC4gVGhl
eSBjb3VsZAotLy8gYmUgZW5hYmxlZCBmb3IgdGhlIEdUSysyIGJ1aWxkIGJ1dCB3ZSdkIG5lZWQg
dG8gYnVtcCB0aGUgcmVxdWlyZWQKLS8vIHZlcnNpb24gdG8gYXQgbGVhc3QgMi4yMi4KLSNpZiBH
VEtfTUFKT1JfVkVSU0lPTiA+IDIKLSNkZWZpbmUgSUNPTl9OQU1FX1NVRkZJWCAiLXN5bWJvbGlj
IgotI2Vsc2UKLSNkZWZpbmUgSUNPTl9OQU1FX1NVRkZJWAotI2VuZGlmCi0KLSNkZWZpbmUgUExB
WV9JQ09OX05BTUUgIm1lZGlhLXBsYXliYWNrLXN0YXJ0IiBJQ09OX05BTUVfU1VGRklYCi0jZGVm
aW5lIFBBVVNFX0lDT05fTkFNRSAibWVkaWEtcGxheWJhY2stcGF1c2UiIElDT05fTkFNRV9TVUZG
SVgKLSNkZWZpbmUgRVhJVF9GVUxMU0NSRUVOX0lDT05fTkFNRSAidmlldy1yZXN0b3JlIiBJQ09O
X05BTUVfU1VGRklYCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIGdib29sZWFuIGhp
ZGVIdWRDYWxsYmFjayhGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrKiBjb250cm9sbGVyKQot
ewotICAgIGNvbnRyb2xsZXItPmhpZGVIdWQoKTsKLSAgICByZXR1cm4gRkFMU0U7Ci19Ci0KLXN0
YXRpYyBnYm9vbGVhbiBvbkZ1bGxzY3JlZW5HdGtNb3Rpb25Ob3RpZnlFdmVudChHdGtXaWRnZXQq
IHdpZGdldCwgR2RrRXZlbnRNb3Rpb24qIGV2ZW50LCAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ckd0ayogY29udHJvbGxlcikKLXsKLSAgICBjb250cm9sbGVyLT5zaG93SHVkKHRydWUpOwotICAg
IHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgdm9pZCBvbkZ1bGxzY3JlZW5HdGtBY3RpdmVOb3Rp
ZmljYXRpb24oR3RrV2lkZ2V0KiB3aWRnZXQsIEdQYXJhbVNwZWMqIHByb3BlcnR5LCBGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyR3RrKiBjb250cm9sbGVyKQotewotICAgIGlmICghZ3RrX3dpbmRv
d19pc19hY3RpdmUoR1RLX1dJTkRPVyh3aWRnZXQpKSkKLSAgICAgICAgY29udHJvbGxlci0+aGlk
ZUh1ZCgpOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4gb25GdWxsc2NyZWVuR3RrQ29uZmlndXJlRXZl
bnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50Q29uZmlndXJlKiBldmVudCwgRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlckd0ayogY29udHJvbGxlcikKLXsKLSAgICBjb250cm9sbGVyLT5ndGtD
b25maWd1cmUoZXZlbnQpOwotICAgIHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgdm9pZCBvbkZ1
bGxzY3JlZW5HdGtEZXN0cm95KEd0a1dpZGdldCogd2lkZ2V0LCBGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyR3RrKiBjb250cm9sbGVyKQotewotICAgIGNvbnRyb2xsZXItPmV4aXRGdWxsc2NyZWVu
KCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRvZ2dsZVBsYXlQYXVzZUFjdGl2YXRlZChHdGtBY3Rpb24q
IGFjdGlvbiwgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0ayogY29udHJvbGxlcikKLXsKLSAg
ICBjb250cm9sbGVyLT50b2dnbGVQbGF5KCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGV4aXRGdWxsc2Ny
ZWVuQWN0aXZhdGVkKEd0a0FjdGlvbiogYWN0aW9uLCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
R3RrKiBjb250cm9sbGVyKQotewotICAgIGNvbnRyb2xsZXItPmV4aXRPblVzZXJSZXF1ZXN0KCk7
Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbiBwcm9ncmVzc0JhclVwZGF0ZUNhbGxiYWNrKEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXJHdGsqIGNvbnRyb2xsZXIpCi17Ci0gICAgcmV0dXJuIGNvbnRyb2xs
ZXItPnVwZGF0ZUh1ZFByb2dyZXNzQmFyKCk7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbiB0aW1lU2Nh
bGVCdXR0b25QcmVzc2VkKEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEJ1dHRvbiogZXZlbnQs
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsqIGNvbnRyb2xsZXIpCi17Ci0gICAgaWYgKGV2
ZW50LT50eXBlICE9IEdES19CVVRUT05fUFJFU1MpCi0gICAgICAgIHJldHVybiBGQUxTRTsKLQot
ICAgIGNvbnRyb2xsZXItPmJlZ2luU2VlaygpOwotICAgIHJldHVybiBGQUxTRTsKLX0KLQotc3Rh
dGljIGdib29sZWFuIHRpbWVTY2FsZUJ1dHRvblJlbGVhc2VkKEd0a1dpZGdldCogd2lkZ2V0LCBH
ZGtFdmVudEJ1dHRvbiogZXZlbnQsIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsqIGNvbnRy
b2xsZXIpCi17Ci0gICAgY29udHJvbGxlci0+ZW5kU2VlaygpOwotICAgIHJldHVybiBGQUxTRTsK
LX0KLQotc3RhdGljIHZvaWQgdGltZVNjYWxlVmFsdWVDaGFuZ2VkKEd0a1dpZGdldCogd2lkZ2V0
LCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrKiBjb250cm9sbGVyKQotewotICAgIGNvbnRy
b2xsZXItPmRvU2VlaygpOwotfQotCi1zdGF0aWMgdm9pZCB2b2x1bWVWYWx1ZUNoYW5nZWQoR3Rr
U2NhbGVCdXR0b24gKmJ1dHRvbiwgZ2RvdWJsZSB2YWx1ZSwgRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlckd0ayogY29udHJvbGxlcikKLXsKLSAgICBjb250cm9sbGVyLT5zZXRWb2x1bWUoc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KHZhbHVlKSk7Ci19Ci0KLQotRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0
azo6RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0ayhNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlKiBwbGF5ZXIpCi0gICAgOiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVy
KHBsYXllcikKLSAgICAsIG1faHVkVGltZW91dElkKDApCi0gICAgLCBtX3Byb2dyZXNzQmFyVXBk
YXRlSWQoMCkKLSAgICAsIG1fc2Vla0xvY2soZmFsc2UpCi0gICAgLCBtX3dpbmRvdygwKQotICAg
ICwgbV9odWRXaW5kb3coMCkKLSAgICAsIG1fdm9sdW1lQnV0dG9uKDApCi0gICAgLCBtX2tleVBy
ZXNzU2lnbmFsSWQoMCkKLSAgICAsIG1fZGVzdHJveVNpZ25hbElkKDApCi0gICAgLCBtX2lzQWN0
aXZlU2lnbmFsSWQoMCkKLSAgICAsIG1fbW90aW9uTm90aWZ5U2lnbmFsSWQoMCkKLSAgICAsIG1f
Y29uZmlndXJlRXZlbnRTaWduYWxJZCgwKQotICAgICwgbV9odWRNb3Rpb25Ob3RpZnlTaWduYWxJ
ZCgwKQotICAgICwgbV90aW1lU2NhbGVCdXR0b25QcmVzc2VkU2lnbmFsSWQoMCkKLSAgICAsIG1f
dGltZVNjYWxlQnV0dG9uUmVsZWFzZWRTaWduYWxJZCgwKQotICAgICwgbV9wbGF5QWN0aW9uQWN0
aXZhdGVTaWduYWxJZCgwKQotICAgICwgbV9leGl0RnVsbGNyZWVuQWN0aW9uQWN0aXZhdGVTaWdu
YWxJZCgwKQotewotfQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGs6Omd0a0Nv
bmZpZ3VyZShHZGtFdmVudENvbmZpZ3VyZSogZXZlbnQpCi17Ci0gICAgdXBkYXRlSHVkUG9zaXRp
b24oKTsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrOjpzaG93SHVkKGJv
b2wgYXV0b0hpZGUpCi17Ci0gICAgaWYgKCFtX2h1ZFdpbmRvdykKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgaWYgKG1faHVkVGltZW91dElkKSB7Ci0gICAgICAgIGdfc291cmNlX3JlbW92ZShtX2h1
ZFRpbWVvdXRJZCk7Ci0gICAgICAgIG1faHVkVGltZW91dElkID0gMDsKLSAgICB9Ci0KLSAgICAv
LyBTaG93IHRoZSBjdXJzb3IuCi0gICAgR2RrV2luZG93KiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dl
dF93aW5kb3cobV93aW5kb3cpOwotICAgIGdka193aW5kb3dfc2V0X2N1cnNvcih3aW5kb3csIDAp
OwotCi0gICAgLy8gVXBkYXRlIHRoZSBwcm9ncmVzcyBiYXIgaW1tZWRpYXRlbHkgYmVmb3JlIHNo
b3dpbmcgdGhlIHdpbmRvdy4KLSAgICB1cGRhdGVIdWRQcm9ncmVzc0JhcigpOwotICAgIGd0a193
aWRnZXRfc2hvd19hbGwobV9odWRXaW5kb3cpOwotICAgIHVwZGF0ZUh1ZFBvc2l0aW9uKCk7Ci0K
LSAgICAvLyBTdGFydCBwZXJpb2RpYyB1cGRhdGVzIG9mIHRoZSBwcm9ncmVzcyBiYXIuCi0gICAg
aWYgKCFtX3Byb2dyZXNzQmFyVXBkYXRlSWQpIHsKLSAgICAgICAgbV9wcm9ncmVzc0JhclVwZGF0
ZUlkID0gZ190aW1lb3V0X2FkZChQUk9HUkVTU19CQVJfVVBEQVRFX0lOVEVSVkFMLCByZWludGVy
cHJldF9jYXN0PEdTb3VyY2VGdW5jPihwcm9ncmVzc0JhclVwZGF0ZUNhbGxiYWNrKSwgdGhpcyk7
Ci0gICAgICAgIGdfc291cmNlX3NldF9uYW1lX2J5X2lkKG1fcHJvZ3Jlc3NCYXJVcGRhdGVJZCwg
IltXZWJLaXRdIHByb2dyZXNzQmFyVXBkYXRlQ2FsbGJhY2siKTsKLSAgICB9Ci0KLSAgICAvLyBI
aWRlIHRoZSBodWQgaW4gZmV3IHNlY29uZHMsIGlmIHJlcXVlc3RlZC4KLSAgICBpZiAoYXV0b0hp
ZGUpIHsKLSAgICAgICAgbV9odWRUaW1lb3V0SWQgPSBnX3RpbWVvdXRfYWRkKEhVRF9BVVRPX0hJ
REVfSU5URVJWQUwsIHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KGhpZGVIdWRDYWxsYmFj
ayksIHRoaXMpOwotICAgICAgICBnX3NvdXJjZV9zZXRfbmFtZV9ieV9pZChtX2h1ZFRpbWVvdXRJ
ZCwgIltXZWJLaXRdIGhpZGVIdWRDYWxsYmFjayIpOwotICAgIH0KLX0KLQotdm9pZCBGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyR3RrOjpoaWRlSHVkKCkKLXsKLSAgICBpZiAobV9odWRUaW1lb3V0
SWQpIHsKLSAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKG1faHVkVGltZW91dElkKTsKLSAgICAgICAg
bV9odWRUaW1lb3V0SWQgPSAwOwotICAgIH0KLQotICAgIGlmICghbV9odWRXaW5kb3cpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIC8vIEtlZXAgdGhlIGh1ZCB2aXNpYmxlIGlmIGEgc2VlayBpcyBp
biBwcm9ncmVzcyBvciBpZiB0aGUgdm9sdW1lCi0gICAgLy8gcG9wdXAgaXMgdmlzaWJsZS4KLSAg
ICBHdGtXaWRnZXQqIHZvbHVtZVBvcHVwID0gZ3RrX3NjYWxlX2J1dHRvbl9nZXRfcG9wdXAoR1RL
X1NDQUxFX0JVVFRPTihtX3ZvbHVtZUJ1dHRvbikpOwotICAgIGlmIChtX3NlZWtMb2NrIHx8IGd0
a193aWRnZXRfZ2V0X3Zpc2libGUodm9sdW1lUG9wdXApKSB7Ci0gICAgICAgIHNob3dIdWQodHJ1
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHZGtXaW5kb3cqIHdpbmRvdyA9IGd0
a193aWRnZXRfZ2V0X3dpbmRvdyhtX3dpbmRvdyk7Ci0gICAgR1JlZlB0cjxHZGtDdXJzb3I+IGN1
cnNvciA9IGFkb3B0R1JlZihnZGtfY3Vyc29yX25ldyhHREtfQkxBTktfQ1VSU09SKSk7Ci0gICAg
Z2RrX3dpbmRvd19zZXRfY3Vyc29yKHdpbmRvdywgY3Vyc29yLmdldCgpKTsKLQotICAgIGd0a193
aWRnZXRfaGlkZShtX2h1ZFdpbmRvdyk7Ci0KLSAgICBpZiAobV9wcm9ncmVzc0JhclVwZGF0ZUlk
KSB7Ci0gICAgICAgIGdfc291cmNlX3JlbW92ZShtX3Byb2dyZXNzQmFyVXBkYXRlSWQpOwotICAg
ICAgICBtX3Byb2dyZXNzQmFyVXBkYXRlSWQgPSAwOwotICAgIH0KLX0KLQotc3RhdGljIGdib29s
ZWFuIG9uRnVsbHNjcmVlbkd0a0tleVByZXNzRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2
ZW50S2V5KiBldmVudCwgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0ayogY29udHJvbGxlcikK
LXsKLSAgICBzd2l0Y2ggKGV2ZW50LT5rZXl2YWwpIHsKLSAgICBjYXNlIEdES19Fc2NhcGU6Ci0g
ICAgICAgIGNvbnRyb2xsZXItPmV4aXRPblVzZXJSZXF1ZXN0KCk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgR0RLX3NwYWNlOgotICAgIGNhc2UgR0RLX1JldHVybjoKLSAgICAgICAgY29udHJv
bGxlci0+dG9nZ2xlUGxheSgpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEdES19VcDoKLSAg
ICAgICAgY29udHJvbGxlci0+aW5jcmVhc2VWb2x1bWUoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBHREtfRG93bjoKLSAgICAgICAgY29udHJvbGxlci0+ZGVjcmVhc2VWb2x1bWUoKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAg
cmV0dXJuIFRSVUU7Ci19Ci0KLXZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0azo6aW5p
dGlhbGl6ZVdpbmRvdygpCi17Ci0gICAgbV93aW5kb3cgPSByZWludGVycHJldF9jYXN0PEd0a1dp
ZGdldCo+KG1fZ3N0cmVhbWVyR1dvcmxkLT5wbGF0Zm9ybVZpZGVvV2luZG93KCktPndpbmRvdygp
KTsKLQotICAgIGlmICghbV9odWRXaW5kb3cpCi0gICAgICAgIGNyZWF0ZUh1ZCgpOwotCi0gICAg
Ly8gRW5zdXJlIGJsYWNrIGJhY2tncm91bmQuCi0jaWZkZWYgR1RLX0FQSV9WRVJTSU9OXzIKLSAg
ICBHZGtDb2xvciBjb2xvciA9IHsgMSwgMCwgMCwgMCB9OwotICAgIGd0a193aWRnZXRfbW9kaWZ5
X2JnKG1fd2luZG93LCBHVEtfU1RBVEVfTk9STUFMLCAmY29sb3IpOwotI2Vsc2UKLSAgICBHZGtS
R0JBIGNvbG9yID0geyAwLCAwLCAwLCAxfTsKLSAgICBndGtfd2lkZ2V0X292ZXJyaWRlX2JhY2tn
cm91bmRfY29sb3IobV93aW5kb3csIEdUS19TVEFURV9GTEFHX05PUk1BTCwgJmNvbG9yKTsKLSNl
bmRpZgotICAgIGd0a193aWRnZXRfc2V0X2RvdWJsZV9idWZmZXJlZChtX3dpbmRvdywgRkFMU0Up
OwotCi0gICAgbV9rZXlQcmVzc1NpZ25hbElkID0gZ19zaWduYWxfY29ubmVjdChtX3dpbmRvdywg
ImtleS1wcmVzcy1ldmVudCIsIEdfQ0FMTEJBQ0sob25GdWxsc2NyZWVuR3RrS2V5UHJlc3NFdmVu
dCksIHRoaXMpOwotICAgIG1fZGVzdHJveVNpZ25hbElkID0gZ19zaWduYWxfY29ubmVjdChtX3dp
bmRvdywgImRlc3Ryb3kiLCBHX0NBTExCQUNLKG9uRnVsbHNjcmVlbkd0a0Rlc3Ryb3kpLCB0aGlz
KTsKLSAgICBtX2lzQWN0aXZlU2lnbmFsSWQgPSBnX3NpZ25hbF9jb25uZWN0KG1fd2luZG93LCAi
bm90aWZ5Ojppcy1hY3RpdmUiLCBHX0NBTExCQUNLKG9uRnVsbHNjcmVlbkd0a0FjdGl2ZU5vdGlm
aWNhdGlvbiksIHRoaXMpOwotCi0gICAgZ3RrX3dpZGdldF9zaG93X2FsbChtX3dpbmRvdyk7Ci0K
LSAgICBHZGtXaW5kb3cqIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyhtX3dpbmRvdyk7
Ci0gICAgR1JlZlB0cjxHZGtDdXJzb3I+IGN1cnNvciA9IGFkb3B0R1JlZihnZGtfY3Vyc29yX25l
dyhHREtfQkxBTktfQ1VSU09SKSk7Ci0gICAgZ2RrX3dpbmRvd19zZXRfY3Vyc29yKHdpbmRvdywg
Y3Vyc29yLmdldCgpKTsKLQotICAgIG1fbW90aW9uTm90aWZ5U2lnbmFsSWQgPSBnX3NpZ25hbF9j
b25uZWN0KG1fd2luZG93LCAibW90aW9uLW5vdGlmeS1ldmVudCIsIEdfQ0FMTEJBQ0sob25GdWxs
c2NyZWVuR3RrTW90aW9uTm90aWZ5RXZlbnQpLCB0aGlzKTsKLSAgICBtX2NvbmZpZ3VyZUV2ZW50
U2lnbmFsSWQgPSBnX3NpZ25hbF9jb25uZWN0KG1fd2luZG93LCAiY29uZmlndXJlLWV2ZW50Iiwg
R19DQUxMQkFDSyhvbkZ1bGxzY3JlZW5HdGtDb25maWd1cmVFdmVudCksIHRoaXMpOwotCi0gICAg
Z3RrX3dpbmRvd19mdWxsc2NyZWVuKEdUS19XSU5ET1cobV93aW5kb3cpKTsKLSAgICBzaG93SHVk
KHRydWUpOwotfQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGs6OnVwZGF0ZUh1
ZFBvc2l0aW9uKCkKLXsKLSAgICBpZiAoIW1faHVkV2luZG93KQotICAgICAgICByZXR1cm47Ci0K
LSAgICAvLyBHZXQgdGhlIHNjcmVlbiByZWN0YW5nbGUuCi0gICAgR2RrU2NyZWVuKiBzY3JlZW4g
PSBndGtfd2luZG93X2dldF9zY3JlZW4oR1RLX1dJTkRPVyhtX3dpbmRvdykpOwotICAgIEdka1dp
bmRvdyogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93KG1fd2luZG93KTsKLSAgICBHZGtS
ZWN0YW5nbGUgZnVsbHNjcmVlblJlY3RhbmdsZTsKLSAgICBnZGtfc2NyZWVuX2dldF9tb25pdG9y
X2dlb21ldHJ5KHNjcmVlbiwgZ2RrX3NjcmVlbl9nZXRfbW9uaXRvcl9hdF93aW5kb3coc2NyZWVu
LCB3aW5kb3cpLCAmZnVsbHNjcmVlblJlY3RhbmdsZSk7Ci0KLSAgICAvLyBHZXQgdGhlIHBvcHVw
IHdpbmRvdyBzaXplLgotICAgIGludCBodWRXaWR0aCwgaHVkSGVpZ2h0OwotICAgIGd0a193aW5k
b3dfZ2V0X3NpemUoR1RLX1dJTkRPVyhtX2h1ZFdpbmRvdyksICZodWRXaWR0aCwgJmh1ZEhlaWdo
dCk7Ci0KLSAgICAvLyBSZXNpemUgdGhlIGh1ZCB0byB0aGUgZnVsbCB3aWR0aCBvZiB0aGUgc2Ny
ZWVuLgotICAgIGd0a193aW5kb3dfcmVzaXplKEdUS19XSU5ET1cobV9odWRXaW5kb3cpLCBmdWxs
c2NyZWVuUmVjdGFuZ2xlLndpZHRoLCBodWRIZWlnaHQpOwotCi0gICAgLy8gTW92ZSB0aGUgaHVk
IHRvIHRoZSBib3R0b20gb2YgdGhlIHNjcmVlbi4KLSAgICBndGtfd2luZG93X21vdmUoR1RLX1dJ
TkRPVyhtX2h1ZFdpbmRvdyksIGZ1bGxzY3JlZW5SZWN0YW5nbGUueCwgZnVsbHNjcmVlblJlY3Rh
bmdsZS5oZWlnaHQgKyBmdWxsc2NyZWVuUmVjdGFuZ2xlLnkgLSBodWRIZWlnaHQpOwotfQotCi12
b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGs6OmRlc3Ryb3lXaW5kb3coKQotewotICAg
IGlmICghbV9odWRXaW5kb3cpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdfc2lnbmFsX2hhbmRs
ZXJfZGlzY29ubmVjdChtX3dpbmRvdywgbV9rZXlQcmVzc1NpZ25hbElkKTsKLSAgICBnX3NpZ25h
bF9oYW5kbGVyX2Rpc2Nvbm5lY3QobV93aW5kb3csIG1fZGVzdHJveVNpZ25hbElkKTsKLSAgICBn
X3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QobV93aW5kb3csIG1faXNBY3RpdmVTaWduYWxJZCk7
Ci0gICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1fd2luZG93LCBtX21vdGlvbk5vdGlm
eVNpZ25hbElkKTsKLSAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QobV93aW5kb3csIG1f
Y29uZmlndXJlRXZlbnRTaWduYWxJZCk7Ci0gICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0
KG1faHVkV2luZG93LCBtX2h1ZE1vdGlvbk5vdGlmeVNpZ25hbElkKTsKLSAgICBnX3NpZ25hbF9o
YW5kbGVyX2Rpc2Nvbm5lY3QobV90aW1lSFNjYWxlLCBtX3RpbWVTY2FsZUJ1dHRvblByZXNzZWRT
aWduYWxJZCk7Ci0gICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1fdGltZUhTY2FsZSwg
bV90aW1lU2NhbGVCdXR0b25SZWxlYXNlZFNpZ25hbElkKTsKLSAgICBnX3NpZ25hbF9oYW5kbGVy
X2Rpc2Nvbm5lY3QobV90aW1lSFNjYWxlLCBtX2hzY2FsZVVwZGF0ZUlkKTsKLSAgICBnX3NpZ25h
bF9oYW5kbGVyX2Rpc2Nvbm5lY3QobV92b2x1bWVCdXR0b24sIG1fdm9sdW1lVXBkYXRlSWQpOwot
ICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChtX3BsYXlQYXVzZUFjdGlvbiwgbV9wbGF5
QWN0aW9uQWN0aXZhdGVTaWduYWxJZCk7Ci0gICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0
KG1fZXhpdEZ1bGxzY3JlZW5BY3Rpb24sIG1fZXhpdEZ1bGxjcmVlbkFjdGlvbkFjdGl2YXRlU2ln
bmFsSWQpOwotCi0gICAgaWYgKG1faHVkVGltZW91dElkKSB7Ci0gICAgICAgIGdfc291cmNlX3Jl
bW92ZShtX2h1ZFRpbWVvdXRJZCk7Ci0gICAgICAgIG1faHVkVGltZW91dElkID0gMDsKLSAgICB9
Ci0KLSAgICBpZiAobV9wcm9ncmVzc0JhclVwZGF0ZUlkKSB7Ci0gICAgICAgIGdfc291cmNlX3Jl
bW92ZShtX3Byb2dyZXNzQmFyVXBkYXRlSWQpOwotICAgICAgICBtX3Byb2dyZXNzQmFyVXBkYXRl
SWQgPSAwOwotICAgIH0KLQotICAgIGd0a193aWRnZXRfaGlkZShtX3dpbmRvdyk7Ci0KLSAgICBp
ZiAobV9odWRXaW5kb3cpCi0gICAgICAgIGd0a193aWRnZXRfZGVzdHJveShtX2h1ZFdpbmRvdyk7
Ci0gICAgbV9odWRXaW5kb3cgPSAwOwotfQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXJHdGs6OnBsYXlTdGF0ZUNoYW5nZWQoKQotewotICAgIGlmIChtX2NsaWVudC0+bWVkaWFQbGF5
ZXJJc1BhdXNlZCgpKQotICAgICAgICBnX29iamVjdF9zZXQobV9wbGF5UGF1c2VBY3Rpb24sICJ0
b29sdGlwIiwgXygiUGxheSIpLCAiaWNvbi1uYW1lIiwgUExBWV9JQ09OX05BTUUsIE5VTEwpOwot
ICAgIGVsc2UKLSAgICAgICAgZ19vYmplY3Rfc2V0KG1fcGxheVBhdXNlQWN0aW9uLCAidG9vbHRp
cCIsIF8oIlBhdXNlIiksICJpY29uLW5hbWUiLCBQQVVTRV9JQ09OX05BTUUsIE5VTEwpOwotICAg
IHNob3dIdWQoIW1fY2xpZW50LT5tZWRpYVBsYXllcklzUGF1c2VkKCkpOwotfQotCi12b2lkIEZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGs6OnZvbHVtZUNoYW5nZWQoKQotewotICAgIGlmICgh
bV92b2x1bWVCdXR0b24pCi0gICAgICAgIHJldHVybjsKLQotICAgIGdfc2lnbmFsX2hhbmRsZXJf
YmxvY2sobV92b2x1bWVCdXR0b24sIG1fdm9sdW1lVXBkYXRlSWQpOwotICAgIGd0a19zY2FsZV9i
dXR0b25fc2V0X3ZhbHVlKEdUS19TQ0FMRV9CVVRUT04obV92b2x1bWVCdXR0b24pLCBtX3BsYXll
ci0+dm9sdW1lKCkpOwotICAgIGdfc2lnbmFsX2hhbmRsZXJfdW5ibG9jayhtX3ZvbHVtZUJ1dHRv
biwgbV92b2x1bWVVcGRhdGVJZCk7Ci19Ci0KLXZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ckd0azo6bXV0ZUNoYW5nZWQoKQotewotICAgIGlmICghbV92b2x1bWVCdXR0b24pCi0gICAgICAg
IHJldHVybjsKLQotICAgIGdfc2lnbmFsX2hhbmRsZXJfYmxvY2sobV92b2x1bWVCdXR0b24sIG1f
dm9sdW1lVXBkYXRlSWQpOwotICAgIGd0a19zY2FsZV9idXR0b25fc2V0X3ZhbHVlKEdUS19TQ0FM
RV9CVVRUT04obV92b2x1bWVCdXR0b24pLCBtX3BsYXllci0+bXV0ZWQoKSA/IDAgOiBtX3BsYXll
ci0+dm9sdW1lKCkpOwotICAgIGdfc2lnbmFsX2hhbmRsZXJfdW5ibG9jayhtX3ZvbHVtZUJ1dHRv
biwgbV92b2x1bWVVcGRhdGVJZCk7Ci19Ci0KLXZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ckd0azo6YmVnaW5TZWVrKCkKLXsKLSAgICBtX3NlZWtMb2NrID0gdHJ1ZTsKLX0KLQotdm9pZCBG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrOjpkb1NlZWsoKQotewotICAgIGlmICghbV9zZWVr
TG9jaykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9wbGF5ZXItPnNlZWsoZ3RrX3JhbmdlX2dl
dF92YWx1ZShHVEtfUkFOR0UobV90aW1lSFNjYWxlKSkqbV9wbGF5ZXItPmR1cmF0aW9uKCkgLyAx
MDApOwotfQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGs6OmVuZFNlZWsoKQot
ewotICAgIG1fc2Vla0xvY2sgPSBmYWxzZTsKLX0KLQotZ2Jvb2xlYW4gRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlckd0azo6dXBkYXRlSHVkUHJvZ3Jlc3NCYXIoKQotewotICAgIGZsb2F0IG1lZGlh
RHVyYXRpb24obV9wbGF5ZXItPmR1cmF0aW9uKCkpOwotICAgIGZsb2F0IG1lZGlhUG9zaXRpb24o
bV9wbGF5ZXItPmN1cnJlbnRUaW1lKCkpOwotCi0gICAgaWYgKCFtX3NlZWtMb2NrKSB7Ci0gICAg
ICAgIGdkb3VibGUgdmFsdWUgPSAwLjA7Ci0KLSAgICAgICAgaWYgKG1lZGlhUG9zaXRpb24gJiYg
bWVkaWFEdXJhdGlvbikKLSAgICAgICAgICAgIHZhbHVlID0gKG1lZGlhUG9zaXRpb24gKiAxMDAu
MCkgLyBtZWRpYUR1cmF0aW9uOwotCi0gICAgICAgIEd0a0FkanVzdG1lbnQqIGFkanVzdG1lbnQg
PSBndGtfcmFuZ2VfZ2V0X2FkanVzdG1lbnQoR1RLX1JBTkdFKG1fdGltZUhTY2FsZSkpOwotICAg
ICAgICBndGtfYWRqdXN0bWVudF9zZXRfdmFsdWUoYWRqdXN0bWVudCwgdmFsdWUpOwotICAgIH0K
LQotICAgIGd0a19yYW5nZV9zZXRfZmlsbF9sZXZlbChHVEtfUkFOR0UobV90aW1lSFNjYWxlKSwg
KG1fcGxheWVyLT5tYXhUaW1lTG9hZGVkKCkgLyBtZWRpYUR1cmF0aW9uKSogMTAwKTsKLQotICAg
IGdjaGFyKiBsYWJlbCA9IGdfc3RyZHVwX3ByaW50ZigiJXMgLyAlcyIsIHRpbWVUb1N0cmluZyht
ZWRpYVBvc2l0aW9uKS51dGY4KCkuZGF0YSgpLCB0aW1lVG9TdHJpbmcobWVkaWFEdXJhdGlvbiku
dXRmOCgpLmRhdGEoKSk7Ci0gICAgZ3RrX2xhYmVsX3NldF90ZXh0KEdUS19MQUJFTChtX3RpbWVM
YWJlbCksIGxhYmVsKTsKLSAgICBnX2ZyZWUobGFiZWwpOwotICAgIHJldHVybiBUUlVFOwotfQot
Ci12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGs6OmNyZWF0ZUh1ZCgpCi17Ci0gICAg
bV9odWRXaW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1BPUFVQKTsKLSAgICBndGtf
d2luZG93X3NldF9ncmF2aXR5KEdUS19XSU5ET1cobV9odWRXaW5kb3cpLCBHREtfR1JBVklUWV9T
T1VUSF9XRVNUKTsKLSAgICBndGtfd2luZG93X3NldF90eXBlX2hpbnQoR1RLX1dJTkRPVyhtX2h1
ZFdpbmRvdyksIEdES19XSU5ET1dfVFlQRV9ISU5UX05PUk1BTCk7Ci0KLSAgICBtX2h1ZE1vdGlv
bk5vdGlmeVNpZ25hbElkID0gZ19zaWduYWxfY29ubmVjdChtX2h1ZFdpbmRvdywgIm1vdGlvbi1u
b3RpZnktZXZlbnQiLCBHX0NBTExCQUNLKG9uRnVsbHNjcmVlbkd0a01vdGlvbk5vdGlmeUV2ZW50
KSwgdGhpcyk7Ci0KLSNpZmRlZiBHVEtfQVBJX1ZFUlNJT05fMgotICAgIEd0a1dpZGdldCogaGJv
eCA9IGd0a19oYm94X25ldyhGQUxTRSwgNCk7Ci0jZWxzZQotICAgIEd0a1dpZGdldCogaGJveCA9
IGd0a19ib3hfbmV3KEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMLCA0KTsKLSNlbmRpZgotICAg
IGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIobV9odWRXaW5kb3cpLCBoYm94KTsKLQot
ICAgIG1fcGxheVBhdXNlQWN0aW9uID0gZ3RrX2FjdGlvbl9uZXcoInBsYXkiLCBfKCJQbGF5IC8g
UGF1c2UiKSwgXygiUGxheSBvciBwYXVzZSB0aGUgbWVkaWEiKSwgUEFVU0VfSUNPTl9OQU1FKTsK
LSAgICBtX3BsYXlBY3Rpb25BY3RpdmF0ZVNpZ25hbElkID0gZ19zaWduYWxfY29ubmVjdChtX3Bs
YXlQYXVzZUFjdGlvbiwgImFjdGl2YXRlIiwgR19DQUxMQkFDSyh0b2dnbGVQbGF5UGF1c2VBY3Rp
dmF0ZWQpLCB0aGlzKTsKLQotICAgIEd0a1dpZGdldCogaXRlbSA9IGd0a19hY3Rpb25fY3JlYXRl
X3Rvb2xfaXRlbShtX3BsYXlQYXVzZUFjdGlvbik7Ci0gICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdU
S19CT1goaGJveCksIGl0ZW0sIEZBTFNFLCBUUlVFLCAwKTsKLQotICAgIEd0a1dpZGdldCogbGFi
ZWwgPSBndGtfbGFiZWxfbmV3KF8oIlRpbWU6IikpOwotICAgIGd0a19ib3hfcGFja19zdGFydChH
VEtfQk9YKGhib3gpLCBsYWJlbCwgRkFMU0UsIFRSVUUsIDApOwotCi0gICAgR3RrQWRqdXN0bWVu
dCogYWRqdXN0bWVudCA9IEdUS19BREpVU1RNRU5UKGd0a19hZGp1c3RtZW50X25ldygwLjAsIDAu
MCwgMTAwLjAsIDAuMSwgMS4wLCAxLjApKTsKLSNpZmRlZiBHVEtfQVBJX1ZFUlNJT05fMgotICAg
IG1fdGltZUhTY2FsZSA9IGd0a19oc2NhbGVfbmV3KGFkanVzdG1lbnQpOwotI2Vsc2UKLSAgICBt
X3RpbWVIU2NhbGUgPSBndGtfc2NhbGVfbmV3KEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMLCBh
ZGp1c3RtZW50KTsKLSNlbmRpZgotICAgIGd0a19zY2FsZV9zZXRfZHJhd192YWx1ZShHVEtfU0NB
TEUobV90aW1lSFNjYWxlKSwgRkFMU0UpOwotICAgIGd0a19yYW5nZV9zZXRfc2hvd19maWxsX2xl
dmVsKEdUS19SQU5HRShtX3RpbWVIU2NhbGUpLCBUUlVFKTsKLSAgICBtX3RpbWVTY2FsZUJ1dHRv
blByZXNzZWRTaWduYWxJZCA9IGdfc2lnbmFsX2Nvbm5lY3QobV90aW1lSFNjYWxlLCAiYnV0dG9u
LXByZXNzLWV2ZW50IiwgR19DQUxMQkFDSyh0aW1lU2NhbGVCdXR0b25QcmVzc2VkKSwgdGhpcyk7
Ci0gICAgbV90aW1lU2NhbGVCdXR0b25SZWxlYXNlZFNpZ25hbElkID0gZ19zaWduYWxfY29ubmVj
dChtX3RpbWVIU2NhbGUsICJidXR0b24tcmVsZWFzZS1ldmVudCIsIEdfQ0FMTEJBQ0sodGltZVNj
YWxlQnV0dG9uUmVsZWFzZWQpLCB0aGlzKTsKLSAgICBtX2hzY2FsZVVwZGF0ZUlkID0gZ19zaWdu
YWxfY29ubmVjdChtX3RpbWVIU2NhbGUsICJ2YWx1ZS1jaGFuZ2VkIiwgR19DQUxMQkFDSyh0aW1l
U2NhbGVWYWx1ZUNoYW5nZWQpLCB0aGlzKTsKLQotICAgIGd0a19ib3hfcGFja19zdGFydChHVEtf
Qk9YKGhib3gpLCBtX3RpbWVIU2NhbGUsIFRSVUUsIFRSVUUsIDApOwotCi0gICAgbV90aW1lTGFi
ZWwgPSBndGtfbGFiZWxfbmV3KCIiKTsKLSAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCho
Ym94KSwgbV90aW1lTGFiZWwsIEZBTFNFLCBUUlVFLCAwKTsKLQotICAgIC8vIFZvbHVtZSBidXR0
b24uCi0gICAgbV92b2x1bWVCdXR0b24gPSBndGtfdm9sdW1lX2J1dHRvbl9uZXcoKTsKLSAgICBn
dGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChoYm94KSwgbV92b2x1bWVCdXR0b24sIEZBTFNFLCBU
UlVFLCAwKTsKLSAgICBndGtfc2NhbGVfYnV0dG9uX3NldF92YWx1ZShHVEtfU0NBTEVfQlVUVE9O
KG1fdm9sdW1lQnV0dG9uKSwgbV9wbGF5ZXItPnZvbHVtZSgpKTsKLSAgICBtX3ZvbHVtZVVwZGF0
ZUlkID0gZ19zaWduYWxfY29ubmVjdChtX3ZvbHVtZUJ1dHRvbiwgInZhbHVlLWNoYW5nZWQiLCBH
X0NBTExCQUNLKHZvbHVtZVZhbHVlQ2hhbmdlZCksIHRoaXMpOwotCi0gICAgbV9leGl0RnVsbHNj
cmVlbkFjdGlvbiA9IGd0a19hY3Rpb25fbmV3KCJleGl0IiwgXygiRXhpdCBGdWxsc2NyZWVuIiks
IF8oIkV4aXQgZnJvbSBmdWxsc2NyZWVuIG1vZGUiKSwgRVhJVF9GVUxMU0NSRUVOX0lDT05fTkFN
RSk7Ci0gICAgbV9leGl0RnVsbGNyZWVuQWN0aW9uQWN0aXZhdGVTaWduYWxJZCA9IGdfc2lnbmFs
X2Nvbm5lY3QobV9leGl0RnVsbHNjcmVlbkFjdGlvbiwgImFjdGl2YXRlIiwgR19DQUxMQkFDSyhl
eGl0RnVsbHNjcmVlbkFjdGl2YXRlZCksIHRoaXMpOwotICAgIGdfb2JqZWN0X3NldChtX2V4aXRG
dWxsc2NyZWVuQWN0aW9uLCAiaWNvbi1uYW1lIiwgRVhJVF9GVUxMU0NSRUVOX0lDT05fTkFNRSwg
TlVMTCk7Ci0gICAgaXRlbSA9IGd0a19hY3Rpb25fY3JlYXRlX3Rvb2xfaXRlbShtX2V4aXRGdWxs
c2NyZWVuQWN0aW9uKTsKLSAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChoYm94KSwgaXRl
bSwgRkFMU0UsIFRSVUUsIDApOwotCi0gICAgbV9wcm9ncmVzc0JhclVwZGF0ZUlkID0gZ190aW1l
b3V0X2FkZChQUk9HUkVTU19CQVJfVVBEQVRFX0lOVEVSVkFMLCByZWludGVycHJldF9jYXN0PEdT
b3VyY2VGdW5jPihwcm9ncmVzc0JhclVwZGF0ZUNhbGxiYWNrKSwgdGhpcyk7Ci0gICAgZ19zb3Vy
Y2Vfc2V0X25hbWVfYnlfaWQobV9wcm9ncmVzc0JhclVwZGF0ZUlkLCAiW1dlYktpdF0gcHJvZ3Jl
c3NCYXJVcGRhdGVDYWxsYmFjayIpOwotCi0gICAgcGxheVN0YXRlQ2hhbmdlZCgpOwotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlckd0ay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTc3MGM1OTg4NjY0NzRi
YTk1NDg1YjNmNDFiMmM0M2I2OTE0NGJjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9GdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyR3RrLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBA
Ci0vKgotICogIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MCi0gKgotICogIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAq
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAq
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5k
ZWYgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0a19oCi0jZGVmaW5lIEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXJHdGtfaAotCi0jaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAm
JiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCi0KLSNpbmNsdWRlICJGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyR1N0cmVhbWVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0ayA6IHB1YmxpYyBGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyR1N0cmVhbWVyIHsKLXB1YmxpYzoKLSAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
R3RrKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UqKTsKLQotICAgIHZvaWQgZ3RrQ29u
ZmlndXJlKEdka0V2ZW50Q29uZmlndXJlKik7Ci0KLSAgICB2b2lkIHBsYXlTdGF0ZUNoYW5nZWQo
KTsKLQotICAgIHZvaWQgYmVnaW5TZWVrKCk7Ci0gICAgdm9pZCBkb1NlZWsoKTsKLSAgICB2b2lk
IGVuZFNlZWsoKTsKLQotICAgIHZvaWQgaGlkZUh1ZCgpOwotICAgIHZvaWQgc2hvd0h1ZChib29s
KTsKLSAgICBnYm9vbGVhbiB1cGRhdGVIdWRQcm9ncmVzc0JhcigpOwotCi0gICAgdm9pZCB2b2x1
bWVDaGFuZ2VkKCk7Ci0gICAgdm9pZCBtdXRlQ2hhbmdlZCgpOwotCi1wcml2YXRlOgotICAgIHZv
aWQgaW5pdGlhbGl6ZVdpbmRvdygpOwotICAgIHZvaWQgZGVzdHJveVdpbmRvdygpOwotCi0gICAg
dm9pZCBjcmVhdGVIdWQoKTsKLSAgICB2b2lkIHVwZGF0ZUh1ZFBvc2l0aW9uKCk7Ci0KLSAgICBn
dWludCBtX2h1ZFRpbWVvdXRJZDsKLSAgICBndWludCBtX3Byb2dyZXNzQmFyVXBkYXRlSWQ7Ci0g
ICAgZ3VpbnQgbV9wcm9ncmVzc0JhckZpbGxVcGRhdGVJZDsKLSAgICBndWludCBtX2hzY2FsZVVw
ZGF0ZUlkOwotICAgIGd1aW50IG1fdm9sdW1lVXBkYXRlSWQ7Ci0gICAgYm9vbCBtX3NlZWtMb2Nr
OwotICAgIEd0a1dpZGdldCogbV93aW5kb3c7Ci0gICAgR3RrV2lkZ2V0KiBtX2h1ZFdpbmRvdzsK
LSAgICBHdGtBY3Rpb24qIG1fcGxheVBhdXNlQWN0aW9uOwotICAgIEd0a0FjdGlvbiogbV9leGl0
RnVsbHNjcmVlbkFjdGlvbjsKLSAgICBHdGtXaWRnZXQqIG1fdGltZUhTY2FsZTsKLSAgICBHdGtX
aWRnZXQqIG1fdGltZUxhYmVsOwotICAgIEd0a1dpZGdldCogbV92b2x1bWVCdXR0b247Ci0KLSAg
ICB1bnNpZ25lZCBsb25nIG1fa2V5UHJlc3NTaWduYWxJZDsKLSAgICB1bnNpZ25lZCBsb25nIG1f
ZGVzdHJveVNpZ25hbElkOwotICAgIHVuc2lnbmVkIGxvbmcgbV9pc0FjdGl2ZVNpZ25hbElkOwot
ICAgIHVuc2lnbmVkIGxvbmcgbV9tb3Rpb25Ob3RpZnlTaWduYWxJZDsKLSAgICB1bnNpZ25lZCBs
b25nIG1fY29uZmlndXJlRXZlbnRTaWduYWxJZDsKLSAgICB1bnNpZ25lZCBsb25nIG1faHVkTW90
aW9uTm90aWZ5U2lnbmFsSWQ7Ci0gICAgdW5zaWduZWQgbG9uZyBtX3RpbWVTY2FsZUJ1dHRvblBy
ZXNzZWRTaWduYWxJZDsKLSAgICB1bnNpZ25lZCBsb25nIG1fdGltZVNjYWxlQnV0dG9uUmVsZWFz
ZWRTaWduYWxJZDsKLSAgICB1bnNpZ25lZCBsb25nIG1fcGxheUFjdGlvbkFjdGl2YXRlU2lnbmFs
SWQ7Ci0gICAgdW5zaWduZWQgbG9uZyBtX2V4aXRGdWxsY3JlZW5BY3Rpb25BY3RpdmF0ZVNpZ25h
bElkOwotfTsKLQotfQotI2VuZGlmCi0KLSNlbmRpZiAvLyBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyR3RrX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9QT1RG
SUxFUy5pbiBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9QT1RGSUxFUy5pbgppbmRl
eCA2OTBjYWMzYTMwMWE4ZTdlM2U4YTZiNDdjNWY1NDRkODRmMGM4YWNkLi5mMzcxMjg3ZjhkMDMy
YWVhZjg2OTQ1NjcyY2U5YzM5MDMwYTM2MWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvcG8vUE9URklMRVMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL3BvL1BPVEZJTEVTLmluCkBAIC0yLDcgKzIsNiBAQAogRXJyb3JzR3RrLmNwcAogTG9jYWxp
emVkU3RyaW5nc0d0ay5jcHAKIFdlYktpdEF1dGhlbnRpY2F0aW9uV2lkZ2V0LmNwcAotLi4vZ3Jh
cGhpY3MvZ3RrL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsuY3BwCiAuLi8uLi8uLi9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKIC4uLy4uLy4uL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRHdGsuY3BwCiAuLi8uLi8uLi9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkb3dubG9hZC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9nbC5wbyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9wby9nbC5wbwppbmRleCBjZThkNWQ0MTYxZmE1YzY5OTc1MWE3MzcxYmFiYWZjN2EzZTk0MThl
Li5hNzJjMDQ1NTg2ZWJiZTJiN2Q5YzgzY2YxOTllZWQxNGU5ZTgzYzVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vZ2wucG8KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL3BvL2dsLnBvCkBAIC02MzIsMzQgKzYzMiw2IEBAIG1zZ3N0ciAiTm9tZSBk
ZSB1c3VhcmlvOiIKIG1zZ2lkICJQYXNzd29yZDoiCiBtc2dzdHIgIkNvbnRyYXNpbmFsOiIKIAot
IzogLi4vLi4vZ3JhcGhpY3MvZ3RrL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsuY3BwOjMy
OAotbXNnaWQgIlBsYXkiCi1tc2dzdHIgIlJlcHJvZHVjaXIiCi0KLSM6IC4uLy4uL2dyYXBoaWNz
L2d0ay9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrLmNwcDozMzAKLW1zZ2lkICJQYXVzZSIK
LW1zZ3N0ciAiUGF1c2FyIgotCi0jOiAuLi8uLi9ncmFwaGljcy9ndGsvRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlckd0ay5jcHA6NDEwCi1tc2dpZCAiUGxheSAvIFBhdXNlIgotbXNnc3RyICJSZXBy
b2R1Y2lyIC8gUGF1c2FyIgotCi0jOiAuLi8uLi9ncmFwaGljcy9ndGsvRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlckd0ay5jcHA6NDEwCi1tc2dpZCAiUGxheSBvciBwYXVzZSB0aGUgbWVkaWEiCi1t
c2dzdHIgIlJlcHJvZHVjZSBvdSBwYXVzYSBvIG1lZGlvIgotCi0jOiAuLi8uLi9ncmFwaGljcy9n
dGsvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0ay5jcHA6NDE2Ci1tc2dpZCAiVGltZToiCi1t
c2dzdHIgIlRlbXBvOiIKLQotIzogLi4vLi4vZ3JhcGhpY3MvZ3RrL0Z1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXJHdGsuY3BwOjQ0MgotbXNnaWQgIkV4aXQgRnVsbHNjcmVlbiIKLW1zZ3N0ciAiU2HD
rXIgZGEgcGFudGFsbGEgY29tcGxldGEiCi0KLSM6IC4uLy4uL2dyYXBoaWNzL2d0ay9GdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyR3RrLmNwcDo0NDIKLW1zZ2lkICJFeGl0IGZyb20gZnVsbHNjcmVl
biBtb2RlIgotbXNnc3RyICJTYcOtciBkbyBtb2RvIGEgcGFudGFsbGEgY29tcGxldGEiCi0KICM6
IC4uLy4uLy4uLy4uL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRvd25sb2FkLmNwcDoyNzYKIG1z
Z2lkICJOZXR3b3JrIFJlcXVlc3QiCiBtc2dzdHIgIlNvbGljaXR1ZGUgZGUgcmVkZSIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXJFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Z1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXJFZmwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjhj
NTEwZWNiNjljYjNkYmRjYmZhMTA3YzI4NzI3ZTAyYWQ4NzEyYy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyRWZsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5
MiArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MCi0gKiAgQ29w
eXJpZ2h0IChDKSAyMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
Ci0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyRWZsX2gKLSNkZWZpbmUgRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlckVmbF9oCi0KLSNpZiBFTkFCTEUoVklERU8pICYmICFkZWZpbmVkKEdTVF9BUElfVkVS
U0lPTl8xKQotCi0jaW5jbHVkZSAiR1N0cmVhbWVyR1dvcmxkLmgiCi0jaW5jbHVkZSAiSFRNTE1l
ZGlhRWxlbWVudC5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotY2xhc3MgRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlcik7Ci1wdWJsaWM6Ci0gICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcigp
OwotICAgIHZpcnR1YWwgfkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIoKTsKLQotICAgIHZvaWQg
c2V0TWVkaWFFbGVtZW50KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQqKTsKLSAgICBXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX21lZGlh
RWxlbWVudC5nZXQoKTsgfQotCi0gICAgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKTsKLSAgICB2b2lk
IGV4aXRGdWxsc2NyZWVuKCk7Ci0KLSAgICB2b2lkIGV4aXRPblVzZXJSZXF1ZXN0KCk7Ci0gICAg
dm9pZCB0b2dnbGVQbGF5KCk7Ci0gICAgdm9pZCBiZWdpblNlZWsoKTsKLSAgICB2b2lkIGRvU2Vl
aygpOwotICAgIHZvaWQgZW5kU2VlaygpOwotCi0gICAgdm9pZCBoaWRlSHVkKCk7Ci0gICAgdm9p
ZCBzaG93SHVkKGJvb2wpOwotICAgIGJvb2wgdXBkYXRlSHVkUHJvZ3Jlc3NCYXIoKTsKLQotICAg
IGZsb2F0IHZvbHVtZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0Vm9sdW1lKGZsb2F0KTsKLSAgICB2
b2lkIHZvbHVtZUNoYW5nZWQoKTsKLSAgICB2b2lkIG11dGVDaGFuZ2VkKCk7Ci0KLXByaXZhdGU6
Ci0gICAgYm9vbCBjYW5QbGF5KCkgY29uc3Q7Ci0gICAgdm9pZCBwbGF5KCk7Ci0gICAgdm9pZCBw
YXVzZSgpOwotICAgIHZvaWQgcGxheVN0YXRlQ2hhbmdlZCgpOwotCi0gICAgYm9vbCBtdXRlZCgp
IGNvbnN0OwotCi0gICAgZmxvYXQgY3VycmVudFRpbWUoKSBjb25zdDsKLSAgICB2b2lkIHNldEN1
cnJlbnRUaW1lKGZsb2F0KTsKLQotICAgIGZsb2F0IGR1cmF0aW9uKCkgY29uc3Q7Ci0gICAgZmxv
YXQgcGVyY2VudExvYWRlZCgpIGNvbnN0OwotCi0gICAgdm9pZCBjcmVhdGVIdWQoKTsKLSAgICB2
b2lkIHVwZGF0ZUh1ZFBvc2l0aW9uKCk7Ci0KLSAgICBSZWZQdHI8V2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudD4gbV9tZWRpYUVsZW1lbnQ7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkdTdHJlYW1lckdX
b3JsZD4gbV9nc3RyZWFtZXJHV29ybGQ7Ci0KLSAgICB1aW50IG1faHVkVGltZW91dElkOwotICAg
IHVpbnQgbV9wcm9ncmVzc0JhclVwZGF0ZUlkOwotICAgIHVpbnQgbV9wcm9ncmVzc0JhckZpbGxV
cGRhdGVJZDsKLSAgICB1aW50IG1faHNjYWxlVXBkYXRlSWQ7Ci0gICAgdWludCBtX3ZvbHVtZVVw
ZGF0ZUlkOwotICAgIGJvb2wgbV9zZWVrTG9jazsKLSAgICBQbGF0Zm9ybVdpZGdldCogbV93aW5k
b3c7Ci0gICAgUGxhdGZvcm1XaWRnZXQqIG1faHVkV2luZG93OwotICAgIFBsYXRmb3JtV2lkZ2V0
KiBtX3RpbWVIU2NhbGU7Ci0gICAgUGxhdGZvcm1XaWRnZXQqIG1fdGltZUxhYmVsOwotICAgIFBs
YXRmb3JtV2lkZ2V0KiBtX3ZvbHVtZUJ1dHRvbjsKLX07Ci0KLSNlbmRpZgotCi0jZW5kaWYgLy8g
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAppbmRleCA2NDk4NjNiMDczNGZi
NjY5ODM5ZmFjY2I0YjIwYTAzYzYyMjc3ZGExLi40OWNhODRkZmQ0YTJiYjhiZThhNjNlMmQwMzE2
YTgzY2Q4NzJjZDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKQEAgLTkyLDEwICs5Miw2IEBACiAjaW5jbHVkZSAiRGF0
YWJhc2VNYW5hZ2VyLmgiCiAjZW5kaWYKIAotI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKE5BVElW
RV9GVUxMU0NSRUVOX1ZJREVPKQotI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKLSNlbmRp
ZgotCiAjaWYgUExBVEZPUk0oWDExKSAmJiBkZWZpbmVkKEdES19XSU5ET1dJTkdfWDExKQogI2lu
Y2x1ZGUgIldpZGdldEJhY2tpbmdTdG9yZUd0a1gxMS5oIgogI2VuZGlmCkBAIC05MzAsMzkgKzky
Niw2IEBAIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBDaHJvbWVDbGllbnQ6
OmNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBT
ZWFyY2hQb3B1cE1lbnVHdGsoY2xpZW50KSk7CiB9CiAKLSNpZiBFTkFCTEUoVklERU8pICYmIFVT
RShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKLWJvb2wgQ2hyb21lQ2xpZW50OjpzdXBwb3J0c0Z1
bGxzY3JlZW5Gb3JOb2RlKGNvbnN0IE5vZGUqIG5vZGUpCi17Ci0gICAgcmV0dXJuIGlzSFRNTFZp
ZGVvRWxlbWVudChub2RlKTsKLX0KLQotdm9pZCBDaHJvbWVDbGllbnQ6OmVudGVyRnVsbHNjcmVl
bkZvck5vZGUoTm9kZSogbm9kZSkKLXsKLSAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybjsK
LQotICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihu
b2RlKTsKLSAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LT5pc01lZGlhRWxlbWVudCgpKSB7Ci0g
ICAgICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHRvSFRNTE1lZGlhRWxlbWVu
dChlbGVtZW50KTsKLSAgICAgICAgaWYgKG1lZGlhRWxlbWVudC0+cGxheWVyKCkgJiYgbWVkaWFF
bGVtZW50LT5wbGF5ZXIoKS0+Y2FuRW50ZXJGdWxsc2NyZWVuKCkpCi0gICAgICAgICAgICBtZWRp
YUVsZW1lbnQtPnBsYXllcigpLT5lbnRlckZ1bGxzY3JlZW4oKTsKLSAgICB9Ci19Ci0KLXZvaWQg
Q2hyb21lQ2xpZW50OjpleGl0RnVsbHNjcmVlbkZvck5vZGUoTm9kZSogbm9kZSkKLXsKLSAgICBp
ZiAoIW5vZGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0g
c3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihub2RlKTsKLSAgICBpZiAoZWxlbWVudCAmJiBlbGVt
ZW50LT5pc01lZGlhRWxlbWVudCgpKSB7Ci0gICAgICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlh
RWxlbWVudCA9IHRvSFRNTE1lZGlhRWxlbWVudChlbGVtZW50KTsKLSAgICAgICAgaWYgKG1lZGlh
RWxlbWVudC0+cGxheWVyKCkpCi0gICAgICAgICAgICBtZWRpYUVsZW1lbnQtPnBsYXllcigpLT5l
eGl0RnVsbHNjcmVlbigpOwotICAgIH0KLX0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQogYm9vbCBDaHJvbWVDbGllbnQ6OnN1cHBvcnRzRnVsbFNjcmVlbkZvckVsZW1lbnQo
Y29uc3QgV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCwgYm9vbCB3aXRoS2V5Ym9hcmQpCiB7CkBA
IC05OTgsMTkgKzk2MSw2IEBAIHZvaWQgQ2hyb21lQ2xpZW50OjplbnRlckZ1bGxTY3JlZW5Gb3JF
bGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQpCiAgICAgaWYgKHJldHVyblZhbHVlKQog
ICAgICAgICByZXR1cm47CiAKLSNpZiBFTkFCTEUoVklERU8pICYmIFVTRShOQVRJVkVfRlVMTFND
UkVFTl9WSURFTykKLSAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LT5pc01lZGlhRWxlbWVudCgp
KSB7Ci0gICAgICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHRvSFRNTE1lZGlh
RWxlbWVudChlbGVtZW50KTsKLSAgICAgICAgaWYgKG1lZGlhRWxlbWVudC0+cGxheWVyKCkgJiYg
bWVkaWFFbGVtZW50LT5wbGF5ZXIoKS0+Y2FuRW50ZXJGdWxsc2NyZWVuKCkpIHsKLSAgICAgICAg
ICAgIGVsZW1lbnQtPmRvY3VtZW50KCkud2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbkZvckVsZW1l
bnQoZWxlbWVudCk7Ci0gICAgICAgICAgICBtZWRpYUVsZW1lbnQtPnBsYXllcigpLT5lbnRlckZ1
bGxzY3JlZW4oKTsKLSAgICAgICAgICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQgPSBlbGVtZW50Owot
ICAgICAgICAgICAgZWxlbWVudC0+ZG9jdW1lbnQoKS53ZWJraXREaWRFbnRlckZ1bGxTY3JlZW5G
b3JFbGVtZW50KGVsZW1lbnQpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0j
ZW5kaWYKLQogICAgIEd0a1dpZGdldCogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwo
R1RLX1dJREdFVChtX3dlYlZpZXcpKTsKICAgICBpZiAoIXdpZGdldElzT25zY3JlZW5Ub3BsZXZl
bFdpbmRvdyh3aW5kb3cpKQogICAgICAgICByZXR1cm47CkBAIC0xMDM4LDE5ICs5ODgsNiBAQCB2
b2lkIENocm9tZUNsaWVudDo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1l
bnQqKQogICAgIGlmIChyZXR1cm5WYWx1ZSkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgRU5BQkxF
KFZJREVPKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCi0gICAgaWYgKG1fZnVsbFNj
cmVlbkVsZW1lbnQgJiYgbV9mdWxsU2NyZWVuRWxlbWVudC0+aXNNZWRpYUVsZW1lbnQoKSkgewot
ICAgICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50LT5kb2N1bWVudCgpLndlYmtpdFdpbGxFeGl0RnVs
bFNjcmVlbkZvckVsZW1lbnQobV9mdWxsU2NyZWVuRWxlbWVudC5nZXQoKSk7Ci0gICAgICAgIEhU
TUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHRvSFRNTE1lZGlhRWxlbWVudChtX2Z1bGxT
Y3JlZW5FbGVtZW50LmdldCgpKTsKLSAgICAgICAgaWYgKG1lZGlhRWxlbWVudC0+cGxheWVyKCkp
IHsKLSAgICAgICAgICAgIG1lZGlhRWxlbWVudC0+cGxheWVyKCktPmV4aXRGdWxsc2NyZWVuKCk7
Ci0gICAgICAgICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50LT5kb2N1bWVudCgpLndlYmtpdERpZEV4
aXRGdWxsU2NyZWVuRm9yRWxlbWVudChtX2Z1bGxTY3JlZW5FbGVtZW50LmdldCgpKTsKLSAgICAg
ICAgICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQuY2xlYXIoKTsKLSAgICAgICAgfQotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KICAgICBHdGtXaWRnZXQqIHdpbmRvdyA9IGd0a193aWRn
ZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQobV93ZWJWaWV3KSk7CiAgICAgQVNTRVJUKHdpZGdl
dElzT25zY3JlZW5Ub3BsZXZlbFdpbmRvdyh3aW5kb3cpKTsKICAgICBnX3NpZ25hbF9oYW5kbGVy
c19kaXNjb25uZWN0X2J5X2Z1bmMod2luZG93LCByZWludGVycHJldF9jYXN0PHZvaWQqPihvbkZ1
bGxzY3JlZW5HdGtLZXlQcmVzc0V2ZW50KSwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCmluZGV4IGFhYmM4NDI4NWVmZjQw
ZWEyNjZkMDMxZTY3MmQyMzRlODI0OGQwZWIuLjUxZDQzYWFkNjI0MGQyMzg2ZGQxMjhmZGRlNDQw
YzJhZDBlMGFiNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudEd0ay5oCkBAIC0xMzQsMTEgKzEzNCw2IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzT3BlbmVkUG9wdXAoKSBjb25zdDsKICAgICAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNs
aWVudCopIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51
PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Q7Ci0jaWYgRU5B
QkxFKFZJREVPKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCi0gICAgICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKGNvbnN0IE5vZGUqKTsKLSAgICAgICAg
dmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbkZvck5vZGUoTm9kZSopOwotICAgICAgICB2aXJ0
dWFsIHZvaWQgZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKE5vZGUqKTsKLSNlbmRpZgogCiAjaWYgRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKQogICAgICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsU2Ny
ZWVuRm9yRWxlbWVudChjb25zdCBFbGVtZW50KiwgYm9vbCB3aXRoS2V5Ym9hcmQpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>