<?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>117435</bug_id>
          
          <creation_ts>2013-06-10 16:06:06 -0700</creation_ts>
          <short_desc>Add support for WaveShaperNode.oversample</short_desc>
          <delta_ts>2013-07-15 21:54:50 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Rogers">crogers</reporter>
          <assigned_to name="Chris Rogers">crogers</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kbr</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>898813</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2013-06-10 16:06:06 -0700</bug_when>
    <thetext>Add support for WaveShaperNode.oversample</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>898815</commentid>
    <comment_count>1</comment_count>
      <attachid>204222</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2013-06-10 16:11:48 -0700</bug_when>
    <thetext>Created attachment 204222
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>898854</commentid>
    <comment_count>2</comment_count>
      <attachid>204233</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2013-06-10 17:35:58 -0700</bug_when>
    <thetext>Created attachment 204233
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>898928</commentid>
    <comment_count>3</comment_count>
      <attachid>204233</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-06-10 17:51:53 -0700</bug_when>
    <thetext>Comment on attachment 204233
Patch

Attachment 204233 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/793217</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>898981</commentid>
    <comment_count>4</comment_count>
      <attachid>204233</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-06-10 20:26:47 -0700</bug_when>
    <thetext>Comment on attachment 204233
Patch

Attachment 204233 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/659606</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908497</commentid>
    <comment_count>5</comment_count>
      <attachid>206681</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2013-07-15 13:35:32 -0700</bug_when>
    <thetext>Created attachment 206681
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908526</commentid>
    <comment_count>6</comment_count>
      <attachid>206681</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2013-07-15 15:02:08 -0700</bug_when>
    <thetext>Comment on attachment 206681
Patch

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

r=me based on previous review and comparing to the earlier CL.

&gt; Source/WebCore/platform/audio/DownSampler.cpp:44
&gt; +    , m_inputBuffer(inputBlockSize * 2)

I noticed the initialization order differs from Blink&apos;s (and Blink&apos;s is likely wrong, not having the same warnings enabled as errors as WebKit). Do you plan to fix Blink&apos;s code?

&gt; Source/WebCore/platform/audio/UpSampler.cpp:44
&gt; +    , m_inputBuffer(inputBlockSize * 2)

Same comment about initialization order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908667</commentid>
    <comment_count>7</comment_count>
      <attachid>206681</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-15 21:54:46 -0700</bug_when>
    <thetext>Comment on attachment 206681
Patch

Clearing flags on attachment: 206681

Committed r152702: &lt;http://trac.webkit.org/changeset/152702&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908668</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-15 21:54:50 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204222</attachid>
            <date>2013-06-10 16:11:48 -0700</date>
            <delta_ts>2013-06-10 17:35:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-117435-20130610161010.patch</filename>
            <type>text/plain</type>
            <size>53512</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUxMzk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDYwYjdlZGY0ZDcwNGI1
YWY0OTU1YWJkMGFiMWQwZDExNWUwOTg2NS4uMTUxYmI2ODk0M2RkMTYwZmMwOGQ5Njk0NGU4YmVm
MmE3NzMzMjljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDEzLTA2LTEwICBDaHJp
cyBSb2dlcnMgIDxjcm9nZXJzQGdvb2dsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IFdhdmVTaGFwZXJOb2RlLm92ZXJzYW1wbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExNzQzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkYXB0ZWQgZnJvbSBCbGluazoKKyAgICAgICAgaHR0cHM6Ly9j
b2RlcmV2aWV3LmNocm9taXVtLm9yZy8xNTYxOTAwMy8KKworICAgICAgICBQbGVhc2Ugc2VlIHNw
ZWNpZmljYXRpb24gZm9yIGRldGFpbHM6CisgICAgICAgIGh0dHBzOi8vZHZjcy53My5vcmcvaGcv
YXVkaW8vcmF3LWZpbGUvdGlwL3dlYmF1ZGlvL3NwZWNpZmljYXRpb24uaHRtbCNXYXZlU2hhcGVy
Tm9kZQorCisgICAgICAgIC5vdmVyc2FtcGxlIHNwZWNpZmllcyB3aGF0IHR5cGUgb2Ygb3ZlcnNh
bXBsaW5nIChpZiBhbnkpIHNob3VsZCBiZSB1c2VkIHdoZW4gYXBwbHlpbmcgdGhlIHNoYXBpbmcg
Y3VydmUuCisgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzICJub25lIiwgbWVhbmluZyB0aGUg
Y3VydmUgd2lsbCBiZSBhcHBsaWVkIGRpcmVjdGx5IHRvIHRoZSBpbnB1dCBzYW1wbGVzLgorICAg
ICAgICBBIHZhbHVlIG9mICIyeCIgb3IgIjR4IiBjYW4gaW1wcm92ZSB0aGUgcXVhbGl0eSBvZiB0
aGUgcHJvY2Vzc2luZyBieSBhdm9pZGluZyBzb21lIGFsaWFzaW5nLAorICAgICAgICB3aXRoIHRo
ZSAiNHgiIHZhbHVlIHlpZWxkaW5nIHRoZSBoaWdoZXN0IHF1YWxpdHkuCisKKyAgICAgICAgVGVz
dHM6IHdlYmF1ZGlvL3dhdmVzaGFwZXItb3ZlcnNhbXBsZS0yeC5odG1sCisgICAgICAgICAgICAg
ICB3ZWJhdWRpby93YXZlc2hhcGVyLW92ZXJzYW1wbGUtNHguaHRtbAorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2F2ZVNoYXBlckRTUEtlcm5lbDo6V2F2ZVNoYXBlckRTUEtlcm5lbCk6CisgICAgICAgIChX
ZWJDb3JlOjpXYXZlU2hhcGVyRFNQS2VybmVsOjpsYXp5SW5pdGlhbGl6ZU92ZXJzYW1wbGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpXYXZlU2hhcGVyRFNQS2VybmVsOjpwcm9jZXNzKToKKyAgICAg
ICAgKFdlYkNvcmU6OldhdmVTaGFwZXJEU1BLZXJuZWw6OnByb2Nlc3NDdXJ2ZSk6CisgICAgICAg
IChXZWJDb3JlOjpXYXZlU2hhcGVyRFNQS2VybmVsOjpwcm9jZXNzQ3VydmUyeCk6CisgICAgICAg
IChXZWJDb3JlOjpXYXZlU2hhcGVyRFNQS2VybmVsOjpwcm9jZXNzQ3VydmU0eCk6CisgICAgICAg
IChXZWJDb3JlOjpXYXZlU2hhcGVyRFNQS2VybmVsOjpyZXNldCk6CisgICAgICAgIChXZWJDb3Jl
OjpXYXZlU2hhcGVyRFNQS2VybmVsOjpsYXRlbmN5VGltZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9XYXZlU2hhcGVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXYXZlU2hhcGVyTm9kZTo6
V2F2ZVNoYXBlck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6V2F2ZVNoYXBlck5vZGU6OnNldE92
ZXJzYW1wbGUpOgorICAgICAgICAoV2ViQ29yZTo6V2F2ZVNoYXBlck5vZGU6Om92ZXJzYW1wbGUp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OldhdmVTaGFwZXJOb2RlOjpsYXRlbmN5KToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dh
dmVTaGFwZXJQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2F2ZVNoYXBlclByb2Nl
c3Nvcjo6V2F2ZVNoYXBlclByb2Nlc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpXYXZlU2hhcGVy
UHJvY2Vzc29yOjpzZXRPdmVyc2FtcGxlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dh
dmVTaGFwZXJQcm9jZXNzb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OldhdmVTaGFwZXJQcm9jZXNz
b3I6Om92ZXJzYW1wbGUpOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Eb3duU2FtcGxlci5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RG93blNhbXBsZXI6OkRvd25TYW1wbGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvd25TYW1wbGVyOjppbml0aWFsaXplS2VybmVsKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvd25TYW1wbGVyOjpwcm9jZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvd25TYW1wbGVyOjpy
ZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpEb3duU2FtcGxlcjo6bGF0ZW5jeUZyYW1lcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vRG93blNhbXBsZXIuaDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vVXBTYW1wbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpV
cFNhbXBsZXI6OlVwU2FtcGxlcik6CisgICAgICAgIChXZWJDb3JlOjpVcFNhbXBsZXI6OmluaXRp
YWxpemVLZXJuZWwpOgorICAgICAgICAoV2ViQ29yZTo6VXBTYW1wbGVyOjpwcm9jZXNzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlVwU2FtcGxlcjo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6VXBT
YW1wbGVyOjpsYXRlbmN5RnJhbWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9VcFNhbXBs
ZXIuaDogQWRkZWQuCisKIDIwMTMtMDYtMTAgIElhZ28gVG9yYWwgUXVpcm9nYSAgPGl0b3JhbEBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFVzZSBDYWlybyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgV2lk
Z2V0QmFja2luZ1N0b3JlIGluc3RlYWQgb2YgWDExIHdoZW4gcnVubmluZyBvbiBXYXlsYW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CmluZGV4IDhlODM3MzU5YzkzNTY2ZGM1NTZhNGUzZjI4NzljYzZiNzk3
MjFlZmQuLjEyZjk3M2I5YzJjM2IzYWE4YzQ0MmQ3ODlkY2VlOGVjOWMyZjY5YTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC0xODU2LDYgKzE4NTYsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAg
ICAgcGxhdGZvcm0vYXVkaW8vQ29uZS5jcHAKICAgICBwbGF0Zm9ybS9hdWRpby9EaXJlY3RDb252
b2x2ZXIuY3BwCiAgICAgcGxhdGZvcm0vYXVkaW8vRGlzdGFuY2UuY3BwCisgICAgcGxhdGZvcm0v
YXVkaW8vRG93blNhbXBsZXIuY3BwCiAgICAgcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVz
c29yLmNwcAogICAgIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAK
ICAgICBwbGF0Zm9ybS9hdWRpby9FcXVhbFBvd2VyUGFubmVyLmNwcApAQCAtMTg3NCw2ICsxODc1
LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZv
bHZlclN0YWdlLmNwcAogICAgIHBsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmNwcAog
ICAgIHBsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwCisgICAgcGxhdGZvcm0vYXVkaW8v
VXBTYW1wbGVyLmNwcAogICAgIHBsYXRmb3JtL2F1ZGlvL1ZlY3Rvck1hdGguY3BwCiAgICAgcGxh
dGZvcm0vYXVkaW8vWmVyb1BvbGUuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmlu
ZGV4IDQ2N2Q1NDVhNzAxMWY3MjEzMGU0MzM4NjFmZTJlN2ZiNTkxZDlhZjQuLjI4ZGE5NjhmNjM2
ZmNlZjI4Y2UzMjZlNDNiMDdkMzY1OThiNWRkNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQpAQCAtNTM5MSw2ICs1MzkxLDggQEAgd2ViY29yZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EaXJlY3RDb252b2x2ZXIuaCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlzdGFuY2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9EaXN0YW5jZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9Eb3duU2FtcGxlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rv
d25TYW1wbGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29t
cHJlc3Nvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXBy
ZXNzb3JLZXJuZWwuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWlj
c0NvbXByZXNzb3JLZXJuZWwuaCBcCkBAIC01NDI4LDYgKzU0MzAsOCBAQCB3ZWJjb3JlX3BsYXRm
b3JtX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYklu
cHV0QnVmZmVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBs
ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmgg
XAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1VwU2FtcGxlci5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1VwU2FtcGxlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9WZWN0b3JNYXRoLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vVmVjdG9yTWF0aC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9aZXJv
UG9sZS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9X
YXZlU2hhcGVyRFNQS2VybmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAKaW5kZXggNWYzY2YzNDc2MjMwZWMwNDJiOTE1M2MxZTMz
OGM1NzU3YTFiYTgzZS4uNDMxM2YwZDY0MjM4ZmM1YzkzMDA0NjY3NjQwNTdmNTk5ZjYzMmM1MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQ
S2VybmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFw
ZXJEU1BLZXJuZWwuY3BwCkBAIC0zMCwxMyArMzAsNTYgQEAKIAogI2luY2x1ZGUgIldhdmVTaGFw
ZXJQcm9jZXNzb3IuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisKK2NvbnN0IHVuc2lnbmVkIFJl
bmRlcmluZ1F1YW50dW0gPSAxMjg7CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorV2F2ZVNoYXBlckRTUEtlcm5lbDo6V2F2ZVNoYXBlckRTUEtlcm5lbChX
YXZlU2hhcGVyUHJvY2Vzc29yKiBwcm9jZXNzb3IpCisgICAgOiBBdWRpb0RTUEtlcm5lbChwcm9j
ZXNzb3IpCit7CisgICAgaWYgKHByb2Nlc3Nvci0+b3ZlcnNhbXBsZSgpICE9IFdhdmVTaGFwZXJQ
cm9jZXNzb3I6Ok92ZXJTYW1wbGVOb25lKQorICAgICAgICBsYXp5SW5pdGlhbGl6ZU92ZXJzYW1w
bGluZygpOworfQorCit2b2lkIFdhdmVTaGFwZXJEU1BLZXJuZWw6OmxhenlJbml0aWFsaXplT3Zl
cnNhbXBsaW5nKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKCFt
X3RlbXBCdWZmZXIpIHsKKyAgICAgICAgbV90ZW1wQnVmZmVyID0gYWRvcHRQdHIobmV3IEF1ZGlv
RmxvYXRBcnJheShSZW5kZXJpbmdRdWFudHVtICogMikpOworICAgICAgICBtX3RlbXBCdWZmZXIy
ID0gYWRvcHRQdHIobmV3IEF1ZGlvRmxvYXRBcnJheShSZW5kZXJpbmdRdWFudHVtICogNCkpOwor
ICAgICAgICBtX3VwU2FtcGxlciA9IGFkb3B0UHRyKG5ldyBVcFNhbXBsZXIoUmVuZGVyaW5nUXVh
bnR1bSkpOworICAgICAgICBtX2Rvd25TYW1wbGVyID0gYWRvcHRQdHIobmV3IERvd25TYW1wbGVy
KFJlbmRlcmluZ1F1YW50dW0gKiAyKSk7CisgICAgICAgIG1fdXBTYW1wbGVyMiA9IGFkb3B0UHRy
KG5ldyBVcFNhbXBsZXIoUmVuZGVyaW5nUXVhbnR1bSAqIDIpKTsKKyAgICAgICAgbV9kb3duU2Ft
cGxlcjIgPSBhZG9wdFB0cihuZXcgRG93blNhbXBsZXIoUmVuZGVyaW5nUXVhbnR1bSAqIDQpKTsK
KyAgICB9Cit9CisKIHZvaWQgV2F2ZVNoYXBlckRTUEtlcm5lbDo6cHJvY2Vzcyhjb25zdCBmbG9h
dCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7
CisgICAgc3dpdGNoICh3YXZlU2hhcGVyUHJvY2Vzc29yKCktPm92ZXJzYW1wbGUoKSkgeworICAg
IGNhc2UgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6T3ZlclNhbXBsZU5vbmU6CisgICAgICAgIHByb2Nl
c3NDdXJ2ZShzb3VyY2UsIGRlc3RpbmF0aW9uLCBmcmFtZXNUb1Byb2Nlc3MpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFdhdmVTaGFwZXJQcm9jZXNzb3I6Ok92ZXJTYW1wbGUyeDoKKyAgICAg
ICAgcHJvY2Vzc0N1cnZlMngoc291cmNlLCBkZXN0aW5hdGlvbiwgZnJhbWVzVG9Qcm9jZXNzKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXYXZlU2hhcGVyUHJvY2Vzc29yOjpPdmVyU2FtcGxl
NHg6CisgICAgICAgIHByb2Nlc3NDdXJ2ZTR4KHNvdXJjZSwgZGVzdGluYXRpb24sIGZyYW1lc1Rv
UHJvY2Vzcyk7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCit2b2lkIFdhdmVTaGFwZXJEU1BLZXJuZWw6OnBy
b2Nlc3NDdXJ2ZShjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHNpemVf
dCBmcmFtZXNUb1Byb2Nlc3MpCit7CiAgICAgQVNTRVJUKHNvdXJjZSAmJiBkZXN0aW5hdGlvbiAm
JiB3YXZlU2hhcGVyUHJvY2Vzc29yKCkpOwogCiAgICAgRmxvYXQzMkFycmF5KiBjdXJ2ZSA9IHdh
dmVTaGFwZXJQcm9jZXNzb3IoKS0+Y3VydmUoKTsKQEAgLTYwLDE3ICsxMDMsMTA2IEBAIHZvaWQg
V2F2ZVNoYXBlckRTUEtlcm5lbDo6cHJvY2Vzcyhjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCog
ZGVzdGluYXRpb24sIHNpemVfCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZyYW1lc1Rv
UHJvY2VzczsgKytpKSB7CiAgICAgICAgIGNvbnN0IGZsb2F0IGlucHV0ID0gc291cmNlW2ldOwog
Ci0gICAgICAgIC8vIENhbGN1bGF0ZSBhbiBpbmRleCBiYXNlZCBvbiBpbnB1dCAtMSAtPiArMSB3
aXRoIDAgYmVpbmcgYXQgdGhlIGNlbnRlciBvZiB0aGUgY3VydmUgZGF0YS4KLSAgICAgICAgaW50
IGluZGV4ID0gKGN1cnZlTGVuZ3RoICogKGlucHV0ICsgMSkpIC8gMjsKKyAgICAgICAgLy8gQ2Fs
Y3VsYXRlIGEgdmlydHVhbCBpbmRleCBiYXNlZCBvbiBpbnB1dCAtMSAtPiArMSB3aXRoIDAgYmVp
bmcgYXQgdGhlIGNlbnRlciBvZiB0aGUgY3VydmUgZGF0YS4KKyAgICAgICAgLy8gVGhlbiBsaW5l
YXJseSBpbnRlcnBvbGF0ZSBiZXR3ZWVuIHRoZSB0d28gcG9pbnRzIGluIHRoZSBjdXJ2ZS4KKyAg
ICAgICAgZG91YmxlIHZpcnR1YWxJbmRleCA9IDAuNSAqIChpbnB1dCArIDEpICogY3VydmVMZW5n
dGg7CisgICAgICAgIGludCBpbmRleDEgPSBzdGF0aWNfY2FzdDxpbnQ+KHZpcnR1YWxJbmRleCk7
CisgICAgICAgIGludCBpbmRleDIgPSBpbmRleDEgKyAxOworICAgICAgICBkb3VibGUgaW50ZXJw
b2xhdGlvbkZhY3RvciA9IHZpcnR1YWxJbmRleCAtIGluZGV4MTsKIAogICAgICAgICAvLyBDbGlw
IGluZGV4IHRvIHRoZSBpbnB1dCByYW5nZSBvZiB0aGUgY3VydmUuCiAgICAgICAgIC8vIFRoaXMg
dGFrZXMgY2FyZSBvZiBpbnB1dCBvdXRzaWRlIG9mIG5vbWluYWwgcmFuZ2UgLTEgLT4gKzEKLSAg
ICAgICAgaW5kZXggPSBtYXgoaW5kZXgsIDApOwotICAgICAgICBpbmRleCA9IG1pbihpbmRleCwg
Y3VydmVMZW5ndGggLSAxKTsKLSAgICAgICAgZGVzdGluYXRpb25baV0gPSBjdXJ2ZURhdGFbaW5k
ZXhdOworICAgICAgICBpbmRleDEgPSBtYXgoaW5kZXgxLCAwKTsKKyAgICAgICAgaW5kZXgxID0g
bWluKGluZGV4MSwgY3VydmVMZW5ndGggLSAxKTsKKyAgICAgICAgaW5kZXgyID0gbWF4KGluZGV4
MiwgMCk7CisgICAgICAgIGluZGV4MiA9IG1pbihpbmRleDIsIGN1cnZlTGVuZ3RoIC0gMSk7CisK
KyAgICAgICAgZG91YmxlIHZhbHVlMSA9IGN1cnZlRGF0YVtpbmRleDFdOworICAgICAgICBkb3Vi
bGUgdmFsdWUyID0gY3VydmVEYXRhW2luZGV4Ml07CisKKyAgICAgICAgZG91YmxlIG91dHB1dCA9
ICgxLjAgLSBpbnRlcnBvbGF0aW9uRmFjdG9yKSAqIHZhbHVlMSArIGludGVycG9sYXRpb25GYWN0
b3IgKiB2YWx1ZTI7CisgICAgICAgIGRlc3RpbmF0aW9uW2ldID0gb3V0cHV0OwogICAgIH0KIH0K
IAordm9pZCBXYXZlU2hhcGVyRFNQS2VybmVsOjpwcm9jZXNzQ3VydmUyeChjb25zdCBmbG9hdCog
c291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCit7Cisg
ICAgYm9vbCBpc1NhZmUgPSBmcmFtZXNUb1Byb2Nlc3MgPT0gUmVuZGVyaW5nUXVhbnR1bTsKKyAg
ICBBU1NFUlQoaXNTYWZlKTsKKyAgICBpZiAoIWlzU2FmZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgZmxvYXQqIHRlbXBQID0gbV90ZW1wQnVmZmVyLT5kYXRhKCk7CisKKyAgICBtX3VwU2FtcGxl
ci0+cHJvY2Vzcyhzb3VyY2UsIHRlbXBQLCBmcmFtZXNUb1Byb2Nlc3MpOworCisgICAgLy8gUHJv
Y2VzcyBhdCAyeCB1cC1zYW1wbGVkIHJhdGUuCisgICAgcHJvY2Vzc0N1cnZlKHRlbXBQLCB0ZW1w
UCwgZnJhbWVzVG9Qcm9jZXNzICogMik7CisKKyAgICBtX2Rvd25TYW1wbGVyLT5wcm9jZXNzKHRl
bXBQLCBkZXN0aW5hdGlvbiwgZnJhbWVzVG9Qcm9jZXNzICogMik7Cit9CisKK3ZvaWQgV2F2ZVNo
YXBlckRTUEtlcm5lbDo6cHJvY2Vzc0N1cnZlNHgoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQq
IGRlc3RpbmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQoreworICAgIGJvb2wgaXNTYWZl
ID0gZnJhbWVzVG9Qcm9jZXNzID09IFJlbmRlcmluZ1F1YW50dW07CisgICAgQVNTRVJUKGlzU2Fm
ZSk7CisgICAgaWYgKCFpc1NhZmUpCisgICAgICAgIHJldHVybjsKKworICAgIGZsb2F0KiB0ZW1w
UCA9IG1fdGVtcEJ1ZmZlci0+ZGF0YSgpOworICAgIGZsb2F0KiB0ZW1wUDIgPSBtX3RlbXBCdWZm
ZXIyLT5kYXRhKCk7CisKKyAgICBtX3VwU2FtcGxlci0+cHJvY2Vzcyhzb3VyY2UsIHRlbXBQLCBm
cmFtZXNUb1Byb2Nlc3MpOworICAgIG1fdXBTYW1wbGVyMi0+cHJvY2Vzcyh0ZW1wUCwgdGVtcFAy
LCBmcmFtZXNUb1Byb2Nlc3MgKiAyKTsKKworICAgIC8vIFByb2Nlc3MgYXQgNHggdXAtc2FtcGxl
ZCByYXRlLgorICAgIHByb2Nlc3NDdXJ2ZSh0ZW1wUDIsIHRlbXBQMiwgZnJhbWVzVG9Qcm9jZXNz
ICogNCk7CisKKyAgICBtX2Rvd25TYW1wbGVyMi0+cHJvY2Vzcyh0ZW1wUDIsIHRlbXBQLCBmcmFt
ZXNUb1Byb2Nlc3MgKiA0KTsKKyAgICBtX2Rvd25TYW1wbGVyLT5wcm9jZXNzKHRlbXBQLCBkZXN0
aW5hdGlvbiwgZnJhbWVzVG9Qcm9jZXNzICogMik7Cit9CisKK3ZvaWQgV2F2ZVNoYXBlckRTUEtl
cm5lbDo6cmVzZXQoKQoreworICAgIGlmIChtX3VwU2FtcGxlcikgeworICAgICAgICBtX3VwU2Ft
cGxlci0+cmVzZXQoKTsKKyAgICAgICAgbV9kb3duU2FtcGxlci0+cmVzZXQoKTsKKyAgICAgICAg
bV91cFNhbXBsZXIyLT5yZXNldCgpOworICAgICAgICBtX2Rvd25TYW1wbGVyMi0+cmVzZXQoKTsK
KyAgICB9Cit9CisKK2RvdWJsZSBXYXZlU2hhcGVyRFNQS2VybmVsOjpsYXRlbmN5VGltZSgpIGNv
bnN0Cit7CisgICAgc2l6ZV90IGxhdGVuY3lGcmFtZXMgPSAwOworICAgIFdhdmVTaGFwZXJEU1BL
ZXJuZWwqIGtlcm5lbCA9IGNvbnN0X2Nhc3Q8V2F2ZVNoYXBlckRTUEtlcm5lbCo+KHRoaXMpOwor
CisgICAgc3dpdGNoIChrZXJuZWwtPndhdmVTaGFwZXJQcm9jZXNzb3IoKS0+b3ZlcnNhbXBsZSgp
KSB7CisgICAgY2FzZSBXYXZlU2hhcGVyUHJvY2Vzc29yOjpPdmVyU2FtcGxlTm9uZToKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBXYXZlU2hhcGVyUHJvY2Vzc29yOjpPdmVyU2FtcGxlMng6Cisg
ICAgICAgIGxhdGVuY3lGcmFtZXMgKz0gbV91cFNhbXBsZXItPmxhdGVuY3lGcmFtZXMoKTsKKyAg
ICAgICAgbGF0ZW5jeUZyYW1lcyArPSBtX2Rvd25TYW1wbGVyLT5sYXRlbmN5RnJhbWVzKCk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6T3ZlclNhbXBsZTR4
OgorICAgICAgICB7CisgICAgICAgICAgICAvLyBBY2NvdW50IGZvciBmaXJzdCBzdGFnZSB1cHNh
bXBsaW5nLgorICAgICAgICAgICAgbGF0ZW5jeUZyYW1lcyArPSBtX3VwU2FtcGxlci0+bGF0ZW5j
eUZyYW1lcygpOworICAgICAgICAgICAgbGF0ZW5jeUZyYW1lcyArPSBtX2Rvd25TYW1wbGVyLT5s
YXRlbmN5RnJhbWVzKCk7CisKKyAgICAgICAgICAgIC8vIEFjY291bnQgZm9yIHNlY29uZCBzdGFn
ZSB1cHNhbXBsaW5nLgorICAgICAgICAgICAgLy8gYW5kIGRpdmlkZSBieSAyIHRvIGdldCBiYWNr
IGRvd24gdG8gdGhlIHJlZ3VsYXIgc2FtcGxlLXJhdGUuCisgICAgICAgICAgICBzaXplX3QgbGF0
ZW5jeUZyYW1lczIgPSAobV91cFNhbXBsZXIyLT5sYXRlbmN5RnJhbWVzKCkgKyBtX2Rvd25TYW1w
bGVyMi0+bGF0ZW5jeUZyYW1lcygpKSAvIDI7CisgICAgICAgICAgICBsYXRlbmN5RnJhbWVzICs9
IGxhdGVuY3lGcmFtZXMyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICBkZWZh
dWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8ZG91YmxlPihsYXRlbmN5RnJhbWVzKSAvIHNhbXBsZVJhdGUoKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtl
cm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2Vy
bmVsLmgKaW5kZXggNTIzMjJhZjc1YWVkMjIwM2VhZWU3OGRjOTBkYTQ1ODVmNjY0YTk1Ni4uYzE4
OGM1NzFmNTYyMDk1YmU5NGU5M2Q1NWI3MzA0MTFmODlkOWIxOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmgKQEAgLTI1
LDggKzI1LDEyIEBACiAjaWZuZGVmIFdhdmVTaGFwZXJEU1BLZXJuZWxfaAogI2RlZmluZSBXYXZl
U2hhcGVyRFNQS2VybmVsX2gKIAorI2luY2x1ZGUgIkF1ZGlvQXJyYXkuaCIKICNpbmNsdWRlICJB
dWRpb0RTUEtlcm5lbC5oIgorI2luY2x1ZGUgIkRvd25TYW1wbGVyLmgiCisjaW5jbHVkZSAiVXBT
YW1wbGVyLmgiCiAjaW5jbHVkZSAiV2F2ZVNoYXBlclByb2Nlc3Nvci5oIgorI2luY2x1ZGUgPHd0
Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNSwyMCArMzksMzUgQEAg
Y2xhc3MgV2F2ZVNoYXBlclByb2Nlc3NvcjsKIC8vIFdhdmVTaGFwZXJEU1BLZXJuZWwgaXMgYW4g
QXVkaW9EU1BLZXJuZWwgYW5kIGlzIHJlc3BvbnNpYmxlIGZvciBub24tbGluZWFyIGRpc3RvcnRp
b24gb24gb25lIGNoYW5uZWwuCiAKIGNsYXNzIFdhdmVTaGFwZXJEU1BLZXJuZWwgOiBwdWJsaWMg
QXVkaW9EU1BLZXJuZWwgewotcHVibGljOiAgCi0gICAgZXhwbGljaXQgV2F2ZVNoYXBlckRTUEtl
cm5lbChXYXZlU2hhcGVyUHJvY2Vzc29yKiBwcm9jZXNzb3IpCi0gICAgOiBBdWRpb0RTUEtlcm5l
bChwcm9jZXNzb3IpCi0gICAgewotICAgIH0KLSAgICAKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBX
YXZlU2hhcGVyRFNQS2VybmVsKFdhdmVTaGFwZXJQcm9jZXNzb3IqKTsKKwogICAgIC8vIEF1ZGlv
RFNQS2VybmVsCiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3MoY29uc3QgZmxvYXQqIHNvdXJjZSwg
ZmxvYXQqIGRlc3QsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOwotICAgIHZpcnR1YWwgdm9pZCBy
ZXNldCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZXNldCgpOwogICAgIHZpcnR1YWwgZG91Ymxl
IHRhaWxUaW1lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgZG91
YmxlIGxhdGVuY3lUaW1lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gMDsgfQotICAgIAorICAg
IHZpcnR1YWwgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3QgT1ZFUlJJREU7CisKKyAgICAvLyBP
dmVyc2FtcGxpbmcgcmVxdWlyZXMgbW9yZSByZXNvdXJjZXMsIHNvIGxldCdzIG9ubHkgYWxsb2Nh
dGUgdGhlbSBpZiBuZWVkZWQuCisgICAgdm9pZCBsYXp5SW5pdGlhbGl6ZU92ZXJzYW1wbGluZygp
OworCiBwcm90ZWN0ZWQ6CisgICAgLy8gQXBwbHkgdGhlIHNoYXBpbmcgY3VydmUuCisgICAgdm9p
ZCBwcm9jZXNzQ3VydmUoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3QsIHNpemVfdCBm
cmFtZXNUb1Byb2Nlc3MpOworCisgICAgLy8gVXNlIHVwLXNhbXBsaW5nLCBwcm9jZXNzIGF0IHRo
ZSBoaWdoZXIgc2FtcGxlLXJhdGUsIHRoZW4gZG93bi1zYW1wbGUuCisgICAgdm9pZCBwcm9jZXNz
Q3VydmUyeChjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdCwgc2l6ZV90IGZyYW1lc1Rv
UHJvY2Vzcyk7CisgICAgdm9pZCBwcm9jZXNzQ3VydmU0eChjb25zdCBmbG9hdCogc291cmNlLCBm
bG9hdCogZGVzdCwgc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CisKICAgICBXYXZlU2hhcGVyUHJv
Y2Vzc29yKiB3YXZlU2hhcGVyUHJvY2Vzc29yKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8V2F2ZVNo
YXBlclByb2Nlc3Nvcio+KHByb2Nlc3NvcigpKTsgfQorCisgICAgLy8gT3ZlcnNhbXBsaW5nLgor
ICAgIE93blB0cjxBdWRpb0Zsb2F0QXJyYXk+IG1fdGVtcEJ1ZmZlcjsKKyAgICBPd25QdHI8QXVk
aW9GbG9hdEFycmF5PiBtX3RlbXBCdWZmZXIyOworICAgIE93blB0cjxVcFNhbXBsZXI+IG1fdXBT
YW1wbGVyOworICAgIE93blB0cjxEb3duU2FtcGxlcj4gbV9kb3duU2FtcGxlcjsKKyAgICBPd25Q
dHI8VXBTYW1wbGVyPiBtX3VwU2FtcGxlcjI7CisgICAgT3duUHRyPERvd25TYW1wbGVyPiBtX2Rv
d25TYW1wbGVyMjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAKaW5kZXggMDM1MDRl
Nzc3NjA1ZjcyYTIxODI2ZjlhMWIzZmEwMTQwNGNkYTcwZC4uNWM5NTY1OTFmY2ZhNTQ1MDVhZjNj
YTE5MjQ4ODMxNzlkMWNiYTg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAKQEAgLTI3LDYgKzI3LDggQEAKICNpZiBFTkFCTEUo
V0VCX0FVRElPKQogCiAjaW5jbHVkZSAiV2F2ZVNoYXBlck5vZGUuaCIKKworI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0zNiw2ICszOCw4IEBAIFdhdmVTaGFwZXJOb2RlOjpXYXZlU2hhcGVyTm9k
ZShBdWRpb0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgbV9wcm9jZXNzb3IgPSBhZG9wdFB0cihu
ZXcgV2F2ZVNoYXBlclByb2Nlc3Nvcihjb250ZXh0LT5zYW1wbGVSYXRlKCksIDEpKTsKICAgICBz
ZXROb2RlVHlwZShOb2RlVHlwZVdhdmVTaGFwZXIpOworCisgICAgaW5pdGlhbGl6ZSgpOwogfQog
CiB2b2lkIFdhdmVTaGFwZXJOb2RlOjpzZXRDdXJ2ZShGbG9hdDMyQXJyYXkqIGN1cnZlKQpAQCAt
NDksNiArNTMsMzMgQEAgRmxvYXQzMkFycmF5KiBXYXZlU2hhcGVyTm9kZTo6Y3VydmUoKQogICAg
IHJldHVybiB3YXZlU2hhcGVyUHJvY2Vzc29yKCktPmN1cnZlKCk7CiB9CiAKK3ZvaWQgV2F2ZVNo
YXBlck5vZGU6OnNldE92ZXJzYW1wbGUoY29uc3QgU3RyaW5nJiB0eXBlLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3sKKyAgICBpZiAodHlwZSA9PSAibm9uZSIpCisgICAgICAgIHdhdmVTaGFwZXJQcm9j
ZXNzb3IoKS0+c2V0T3ZlcnNhbXBsZShXYXZlU2hhcGVyUHJvY2Vzc29yOjpPdmVyU2FtcGxlTm9u
ZSk7CisgICAgZWxzZSBpZiAodHlwZSA9PSAiMngiKQorICAgICAgICB3YXZlU2hhcGVyUHJvY2Vz
c29yKCktPnNldE92ZXJzYW1wbGUoV2F2ZVNoYXBlclByb2Nlc3Nvcjo6T3ZlclNhbXBsZTJ4KTsK
KyAgICBlbHNlIGlmICh0eXBlID09ICI0eCIpCisgICAgICAgIHdhdmVTaGFwZXJQcm9jZXNzb3Io
KS0+c2V0T3ZlcnNhbXBsZShXYXZlU2hhcGVyUHJvY2Vzc29yOjpPdmVyU2FtcGxlNHgpOworICAg
IGVsc2UKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKK30KKworU3RyaW5nIFdhdmVT
aGFwZXJOb2RlOjpvdmVyc2FtcGxlKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKGNvbnN0X2Nhc3Q8
V2F2ZVNoYXBlck5vZGUqPih0aGlzKS0+d2F2ZVNoYXBlclByb2Nlc3NvcigpLT5vdmVyc2FtcGxl
KCkpIHsKKyAgICBjYXNlIFdhdmVTaGFwZXJQcm9jZXNzb3I6Ok92ZXJTYW1wbGVOb25lOgorICAg
ICAgICByZXR1cm4gIm5vbmUiOworICAgIGNhc2UgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6T3ZlclNh
bXBsZTJ4OgorICAgICAgICByZXR1cm4gIjJ4IjsKKyAgICBjYXNlIFdhdmVTaGFwZXJQcm9jZXNz
b3I6Ok92ZXJTYW1wbGU0eDoKKyAgICAgICAgcmV0dXJuICI0eCI7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAibm9uZSI7CisgICAg
fQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FV
RElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hh
cGVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9k
ZS5oCmluZGV4IGYyZWY2ZGEyMjE2NzZjYWFjN2NlMGM0ZDJlNzEyYjY1YzA3ZWUwNTguLmNiNjUz
NzJhMTcxNjg1NDcyMTMyN2FiY2I4NWEzMWY0YzA5YTY1ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmgKQEAgLTQzLDYgKzQzLDExIEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldEN1cnZlKEZsb2F0MzJBcnJheSopOwogICAgIEZsb2F0MzJB
cnJheSogY3VydmUoKTsKIAorICAgIHZvaWQgc2V0T3ZlcnNhbXBsZShjb25zdCBTdHJpbmcmICwg
RXhjZXB0aW9uQ29kZSYpOworICAgIFN0cmluZyBvdmVyc2FtcGxlKCkgY29uc3Q7CisKKyAgICBk
b3VibGUgbGF0ZW5jeSgpIGNvbnN0IHsgcmV0dXJuIGxhdGVuY3lUaW1lKCk7IH0KKwogcHJpdmF0
ZTogICAgCiAgICAgZXhwbGljaXQgV2F2ZVNoYXBlck5vZGUoQXVkaW9Db250ZXh0Kik7ICAgIAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJO
b2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUu
aWRsCmluZGV4IDM1NzQwYjE3ZjE0ZDYxMGI0ODM4NGQ4ZDlkZDhiNDhkYzFjMThhMTMuLjhhMzc3
NTM2Y2Y1N2IwZWMzNmE3YmI3YTJlYTBhNTg5Mjc5ZGMyODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaWRsCkBAIC0yMiw5ICsyMiwx
NiBAQAogICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAorZW51bSBPdmVyU2FtcGxlVHlwZSB7CisgICAgIm5vbmUiLAor
ICAgICIyeCIsCisgICAgIjR4IgorfTsKKwogWwogICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywK
ICAgICBKU0dlbmVyYXRlVG9KU09iamVjdAogXSBpbnRlcmZhY2UgV2F2ZVNoYXBlck5vZGUgOiBB
dWRpb05vZGUgewogICAgIGF0dHJpYnV0ZSBGbG9hdDMyQXJyYXkgY3VydmU7CisgICAgW1NldHRl
clJhaXNlc0V4Y2VwdGlvbl0gYXR0cmlidXRlIE92ZXJTYW1wbGVUeXBlIG92ZXJzYW1wbGU7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVy
UHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBl
clByb2Nlc3Nvci5jcHAKaW5kZXggNWNhZjM2YTE1MjBhZTBhYTczZTdkMGYwNDJlODJmNTU2NzIz
YWM3OC4uNmNhNWRjNTg1MTQyMTM0YTQ0OWEzZDZkZWI2YTk3NjU2NjdhNjljNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNz
b3IuY3BwCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIFdhdmVT
aGFwZXJQcm9jZXNzb3I6OldhdmVTaGFwZXJQcm9jZXNzb3IoZmxvYXQgc2FtcGxlUmF0ZSwgc2l6
ZV90IG51bWJlck9mQ2hhbm5lbHMpCiAgICAgOiBBdWRpb0RTUEtlcm5lbFByb2Nlc3NvcihzYW1w
bGVSYXRlLCBudW1iZXJPZkNoYW5uZWxzKQorICAgICwgbV9vdmVyc2FtcGxlKE92ZXJTYW1wbGVO
b25lKQogewogfQogCkBAIC01Niw2ICs1NywyMSBAQCB2b2lkIFdhdmVTaGFwZXJQcm9jZXNzb3I6
OnNldEN1cnZlKEZsb2F0MzJBcnJheSogY3VydmUpCiAgICAgbV9jdXJ2ZSA9IGN1cnZlOwogfQog
Cit2b2lkIFdhdmVTaGFwZXJQcm9jZXNzb3I6OnNldE92ZXJzYW1wbGUoT3ZlclNhbXBsZVR5cGUg
b3ZlcnNhbXBsZSkKK3sKKyAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3aXRoIHByb2Nlc3MoKS4K
KyAgICBNdXRleExvY2tlciBwcm9jZXNzTG9ja2VyKG1fcHJvY2Vzc0xvY2spOworCisgICAgbV9v
dmVyc2FtcGxlID0gb3ZlcnNhbXBsZTsKKworICAgIGlmIChvdmVyc2FtcGxlICE9IE92ZXJTYW1w
bGVOb25lKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2tlcm5lbHMuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIFdhdmVTaGFwZXJEU1BLZXJuZWwqIGtlcm5lbCA9IHN0
YXRpY19jYXN0PFdhdmVTaGFwZXJEU1BLZXJuZWwqPihtX2tlcm5lbHNbaV0uZ2V0KCkpOworICAg
ICAgICAgICAga2VybmVsLT5sYXp5SW5pdGlhbGl6ZU92ZXJzYW1wbGluZygpOworICAgICAgICB9
CisgICAgfQorfQorCiB2b2lkIFdhdmVTaGFwZXJQcm9jZXNzb3I6OnByb2Nlc3MoY29uc3QgQXVk
aW9CdXMqIHNvdXJjZSwgQXVkaW9CdXMqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9j
ZXNzKQogewogICAgIGlmICghaXNJbml0aWFsaXplZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5oCmluZGV4IDQ3MzVl
ZmRhMjVmNzIzM2EyYTE3NDlkM2NhNTQ1MGYyMjQ3OWRjYjIuLjU1OTdhOTRjMWU3Mjc0M2FkZjdm
ODRhYmYyOGYyNzRkY2YzOTA5NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5oCkBAIC0zOCw2ICszOCwxMiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdhdmVTaGFwZXJQcm9jZXNzb3IgOiBwdWJsaWMgQXVk
aW9EU1BLZXJuZWxQcm9jZXNzb3IgewogcHVibGljOgorICAgIGVudW0gT3ZlclNhbXBsZVR5cGUg
eworICAgICAgICBPdmVyU2FtcGxlTm9uZSwKKyAgICAgICAgT3ZlclNhbXBsZTJ4LAorICAgICAg
ICBPdmVyU2FtcGxlNHgKKyAgICB9OworCiAgICAgV2F2ZVNoYXBlclByb2Nlc3NvcihmbG9hdCBz
YW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscyk7CiAKICAgICB2aXJ0dWFsIH5XYXZl
U2hhcGVyUHJvY2Vzc29yKCk7CkBAIC00OSwxMCArNTUsMTUgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0Q3VydmUoRmxvYXQzMkFycmF5Kik7CiAgICAgRmxvYXQzMkFycmF5KiBjdXJ2ZSgpIHsgcmV0
dXJuIG1fY3VydmUuZ2V0KCk7IH0KIAorICAgIHZvaWQgc2V0T3ZlcnNhbXBsZShPdmVyU2FtcGxl
VHlwZSk7CisgICAgT3ZlclNhbXBsZVR5cGUgb3ZlcnNhbXBsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
b3ZlcnNhbXBsZTsgfQorCiBwcml2YXRlOgogICAgIC8vIG1fY3VydmUgcmVwcmVzZW50cyB0aGUg
bm9uLWxpbmVhciBzaGFwaW5nIGN1cnZlLgogICAgIFJlZlB0cjxGbG9hdDMyQXJyYXk+IG1fY3Vy
dmU7CiAKKyAgICBPdmVyU2FtcGxlVHlwZSBtX292ZXJzYW1wbGU7CisKICAgICAvLyBUaGlzIHN5
bmNocm9uaXplcyBwcm9jZXNzKCkgd2l0aCBzZXRDdXJ2ZSgpLgogICAgIG11dGFibGUgTXV0ZXgg
bV9wcm9jZXNzTG9jazsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDUwZjJjNWY1YmQ2NDA0Y2ZmY2Q3OTk1ZTY2YTdmZGY5
MzU0Zjk4Ny4uODVhYjU0YjhmYjkyMzYwNmI1ZGU0MjQ0OWVkNjcyOGQ5NThkNWMwNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NTczOSw2ICs1NzM5LDEwIEBACiAJCUZEMDZERkE1MTM0QTRERUYwMDZGNUQ3RCAvKiBEZWZhdWx0
QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkQwNkRGQTMxMzRBNERFRjAwNkY1RDdEIC8qIERlZmF1bHRBdWRpb0Rl
c3RpbmF0aW9uTm9kZS5jcHAgKi87IH07CiAJCUZEMDZERkE2MTM0QTRERUYwMDZGNUQ3RCAvKiBE
ZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZEMDZERkE0MTM0QTRERUYwMDZGNUQ3RCAvKiBEZWZhdWx0QXVk
aW9EZXN0aW5hdGlvbk5vZGUuaCAqLzsgfTsKIAkJRkQxNjYwQTUxMzc4N0M2RDAwMUZGQTdCIC8q
IERlbm9ybWFsRGlzYWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZEMTY2MEE0MTM3ODdDNkQwMDFGRkE3QiAvKiBEZW5vcm1hbERpc2FibGVyLmgg
Ki87IH07CisJCUZEMTc2MkRGMTc2Njg2RDkwMEQ4MzZBOCAvKiBVcFNhbXBsZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQxNzYyREQxNzY2ODZE
OTAwRDgzNkE4IC8qIFVwU2FtcGxlci5jcHAgKi87IH07CisJCUZEMTc2MkUwMTc2Njg2RDkwMEQ4
MzZBOCAvKiBVcFNhbXBsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZEMTc2MkRFMTc2Njg2RDkwMEQ4MzZBOCAvKiBVcFNhbXBsZXIuaCAqLzsgfTsK
KwkJRkQxNzYyRTMxNzY2ODZFQTAwRDgzNkE4IC8qIERvd25TYW1wbGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMTc2MkUxMTc2Njg2RUEwMEQ4
MzZBOCAvKiBEb3duU2FtcGxlci5jcHAgKi87IH07CisJCUZEMTc2MkU0MTc2Njg2RUEwMEQ4MzZB
OCAvKiBEb3duU2FtcGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkQxNzYyRTIxNzY2ODZFQTAwRDgzNkE4IC8qIERvd25TYW1wbGVyLmggKi87IH07
CiAJCUZEMUFGMTUwMTY1NkYxNTEwMEM2RDRGNyAvKiBFeGNsdXNpb25TaGFwZVZhbHVlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDFBRjE0RTE2NTZG
MTIxMDBDNkQ0RjcgLyogRXhjbHVzaW9uU2hhcGVWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZEMjNBMTI1MTNGNUZBNTkwMEY2NzAwMSAv
KiBKU01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDIzQTEyMzEzRjVGQTU5MDBGNjcwMDEgLyogSlNN
ZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwICovOyB9OwogCQlGRDIzQTEyNjEzRjVGQTU5
MDBGNjcwMDEgLyogSlNNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMjNBMTI0MTNGNUZBNTkwMEY2NzAw
MSAvKiBKU01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5oICovOyB9OwpAQCAtMTI1ODEsNiAr
MTI1ODUsMTAgQEAKIAkJRkQwNkRGQTMxMzRBNERFRjAwNkY1RDdEIC8qIERlZmF1bHRBdWRpb0Rl
c3RpbmF0aW9uTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
ZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGRDA2REZBNDEzNEE0REVGMDA2RjVEN0QgLyogRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25O
b2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlZmF1bHRBdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDE2NjBBNDEzNzg3
QzZEMDAxRkZBN0IgLyogRGVub3JtYWxEaXNhYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEZW5vcm1hbERpc2FibGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUZEMTc2MkREMTc2Njg2RDkwMEQ4MzZBOCAvKiBVcFNhbXBsZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVXBTYW1wbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRkQxNzYyREUxNzY2ODZEOTAwRDgzNkE4IC8qIFVwU2FtcGxlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVcFNhbXBsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkQxNzYyRTExNzY2ODZFQTAwRDgzNkE4IC8qIERvd25TYW1wbGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvd25TYW1wbGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkQxNzYyRTIxNzY2ODZFQTAwRDgzNkE4
IC8qIERvd25TYW1wbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvd25T
YW1wbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZEMUFGMTRFMTY1NkYxMjEw
MEM2RDRGNyAvKiBFeGNsdXNpb25TaGFwZVZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEV4Y2x1c2lvblNoYXBlVmFsdWUuaDsgcGF0aCA9IHN0eWxlL0V4Y2x1c2lvblNo
YXBlVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQyM0ExMjMxM0Y1RkE1
OTAwRjY3MDAxIC8qIEpTTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2Rl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQyM0ExMjQxM0Y1RkE1OTAwRjY3
MDAxIC8qIEpTTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDcxMCw2ICsyMDcxOCw4IEBACiAJCQkJRkRBRjE5OTcx
NTEzRDEzMTAwOERCMEMzIC8qIERpcmVjdENvbnZvbHZlci5oICovLAogCQkJCUZEMzE2MDVBMTJC
MDI2RjcwMEMxQTM1OSAvKiBEaXN0YW5jZS5jcHAgKi8sCiAJCQkJRkQzMTYwNUIxMkIwMjZGNzAw
QzFBMzU5IC8qIERpc3RhbmNlLmggKi8sCisJCQkJRkQxNzYyRTExNzY2ODZFQTAwRDgzNkE4IC8q
IERvd25TYW1wbGVyLmNwcCAqLywKKwkJCQlGRDE3NjJFMjE3NjY4NkVBMDBEODM2QTggLyogRG93
blNhbXBsZXIuaCAqLywKIAkJCQlGRDZFRDJDNTEzNkI4RTY2MDAzQ0YwNzIgLyogRHluYW1pY3ND
b21wcmVzc29yLmNwcCAqLywKIAkJCQlGRDZFRDJDNjEzNkI4RTY2MDAzQ0YwNzIgLyogRHluYW1p
Y3NDb21wcmVzc29yLmggKi8sCiAJCQkJRkQ1MzczNTQxMzdCNjUzQjAwMDA4RENFIC8qIER5bmFt
aWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAgKi8sCkBAIC0yMDc0Niw2ICsyMDc1Niw4IEBACiAJCQkJ
RkQzMTYwNzcxMkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYklucHV0QnVmZmVyLmggKi8sCiAJCQkJ
RkQwMEQ3QTIxNEEzRjYxOTAwNzM0MDExIC8qIFNpbmNSZXNhbXBsZXIuY3BwICovLAogCQkJCUZE
MDBEN0EzMTRBM0Y2MTkwMDczNDAxMSAvKiBTaW5jUmVzYW1wbGVyLmggKi8sCisJCQkJRkQxNzYy
REQxNzY2ODZEOTAwRDgzNkE4IC8qIFVwU2FtcGxlci5jcHAgKi8sCisJCQkJRkQxNzYyREUxNzY2
ODZEOTAwRDgzNkE4IC8qIFVwU2FtcGxlci5oICovLAogCQkJCUZEMzE2MDc4MTJCMDI2RjcwMEMx
QTM1OSAvKiBWZWN0b3JNYXRoLmNwcCAqLywKIAkJCQlGRDMxNjA3OTEyQjAyNkY3MDBDMUEzNTkg
LyogVmVjdG9yTWF0aC5oICovLAogCQkJCUZENTM3MzUwMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJv
UG9sZS5jcHAgKi8sCkBAIC0yMzk3Nyw2ICsyMzk4OSw4IEBACiAJCQkJQkU4RUYwNEIxNzFDOTAx
NDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkU4RUYwNEQx
NzFDOTAxNDAwOUI0OEMzIC8qIEpTVmlkZW9UcmFja0xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZCNzE5QzNGMTcyMzhDQTgwMDIyREUzNCAvKiBXZWJLaXRDU1NNYXRGdW5jdGlvblZhbHVlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlGRDE3NjJFMDE3NjY4NkQ5MDBEODM2QTggLyogVXBTYW1wbGVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQlGRDE3NjJFNDE3NjY4NkVBMDBEODM2QTggLyogRG93blNh
bXBsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjY5NDcsNiArMjY5NjEsOCBAQAogCQkJCUJFNkRG
NzExMTcxQ0EyREEwMERENTJCOCAvKiBKU0F1ZGlvVHJhY2tDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkU2REY3MTMxNzFDQTJEQTAwREQ1MkI4IC8qIEpTQXVkaW9UcmFja0xpc3RDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkI3MTlDNDAxNzIzOENBRTAwMjJERTM0IC8qIFdl
YktpdENTU01hdEZ1bmN0aW9uVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkQxNzYyREYx
NzY2ODZEOTAwRDgzNkE4IC8qIFVwU2FtcGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRDE3
NjJFMzE3NjY4NkVBMDBEODM2QTggLyogRG93blNhbXBsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Eb3duU2FtcGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Eb3duU2FtcGxlci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTVjMjgzMjY5ZjQ2ZGNkZThiNWY2ZmU5MjMwZGVkMzkwNDgwZDBhYQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rvd25TYW1wbGVyLmNwcApAQCAt
MCwwICsxLDE0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5h
bWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfQVVE
SU8pCisKKyNpbmNsdWRlICJEb3duU2FtcGxlci5oIgorCisjaW5jbHVkZSA8d3RmL01hdGhFeHRy
YXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitEb3duU2FtcGxlcjo6RG93blNhbXBsZXIo
c2l6ZV90IGlucHV0QmxvY2tTaXplKQorICAgIDogbV9pbnB1dEJsb2NrU2l6ZShpbnB1dEJsb2Nr
U2l6ZSkKKyAgICAsIG1fcmVkdWNlZEtlcm5lbChEZWZhdWx0S2VybmVsU2l6ZSAvIDIpCisgICAg
LCBtX2NvbnZvbHZlcihpbnB1dEJsb2NrU2l6ZSAvIDIpIC8vIHJ1bnMgYXQgMS8yIHNvdXJjZSBz
YW1wbGUtcmF0ZQorICAgICwgbV90ZW1wQnVmZmVyKGlucHV0QmxvY2tTaXplIC8gMikKKyAgICAs
IG1faW5wdXRCdWZmZXIoaW5wdXRCbG9ja1NpemUgKiAyKQoreworICAgIGluaXRpYWxpemVLZXJu
ZWwoKTsKK30KKwordm9pZCBEb3duU2FtcGxlcjo6aW5pdGlhbGl6ZUtlcm5lbCgpCit7CisgICAg
Ly8gQmxhY2ttYW4gd2luZG93IHBhcmFtZXRlcnMuCisgICAgZG91YmxlIGFscGhhID0gMC4xNjsK
KyAgICBkb3VibGUgYTAgPSAwLjUgKiAoMS4wIC0gYWxwaGEpOworICAgIGRvdWJsZSBhMSA9IDAu
NTsKKyAgICBkb3VibGUgYTIgPSAwLjUgKiBhbHBoYTsKKworICAgIGludCBuID0gRGVmYXVsdEtl
cm5lbFNpemU7CisgICAgaW50IGhhbGZTaXplID0gbiAvIDI7CisKKyAgICAvLyBIYWxmLWJhbmQg
ZmlsdGVyLgorICAgIGRvdWJsZSBzaW5jU2NhbGVGYWN0b3IgPSAwLjU7CisKKyAgICAvLyBDb21w
dXRlIG9ubHkgdGhlIG9kZCB0ZXJtcyBiZWNhdXNlIHRoZSBldmVuIG9uZXMgYXJlIHplcm8sIGV4
Y2VwdAorICAgIC8vIHJpZ2h0IGluIHRoZSBtaWRkbGUgYXQgaGFsZlNpemUsIHdoaWNoIGlzIDAu
NSBhbmQgd2UnbGwgaGFuZGxlIHNwZWNpYWxseSBkdXJpbmcgcHJvY2Vzc2luZworICAgIC8vIGFm
dGVyIGRvaW5nIHRoZSBtYWluIGNvbnZvbHV0aW9uIHVzaW5nIG1fcmVkdWNlZEtlcm5lbC4KKyAg
ICBmb3IgKGludCBpID0gMTsgaSA8IG47IGkgKz0gMikgeworICAgICAgICAvLyBDb21wdXRlIHRo
ZSBzaW5jKCkgd2l0aCBvZmZzZXQuCisgICAgICAgIGRvdWJsZSBzID0gc2luY1NjYWxlRmFjdG9y
ICogcGlEb3VibGUgKiAoaSAtIGhhbGZTaXplKTsKKyAgICAgICAgZG91YmxlIHNpbmMgPSAhcyA/
IDEuMCA6IHNpbihzKSAvIHM7CisgICAgICAgIHNpbmMgKj0gc2luY1NjYWxlRmFjdG9yOworCisg
ICAgICAgIC8vIENvbXB1dGUgQmxhY2ttYW4gd2luZG93LCBtYXRjaGluZyB0aGUgb2Zmc2V0IG9m
IHRoZSBzaW5jKCkuCisgICAgICAgIGRvdWJsZSB4ID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihpKSAv
IG47CisgICAgICAgIGRvdWJsZSB3aW5kb3cgPSBhMCAtIGExICogY29zKDIuMCAqIHBpRG91Ymxl
ICogeCkgKyBhMiAqIGNvcyg0LjAgKiBwaURvdWJsZSAqIHgpOworCisgICAgICAgIC8vIFdpbmRv
dyB0aGUgc2luYygpIGZ1bmN0aW9uLgorICAgICAgICAvLyBUaGVuIHN0b3JlIG9ubHkgdGhlIG9k
ZCB0ZXJtcyBpbiB0aGUga2VybmVsLgorICAgICAgICAvLyBJbiBhIHNlbnNlLCB0aGlzIGlzIHNo
aWZ0aW5nIGZvcndhcmQgaW4gdGltZSBieSBvbmUgc2FtcGxlLWZyYW1lIGF0IHRoZSBkZXN0aW5h
dGlvbiBzYW1wbGUtcmF0ZS4KKyAgICAgICAgbV9yZWR1Y2VkS2VybmVsWyhpIC0gMSkgLyAyXSA9
IHNpbmMgKiB3aW5kb3c7CisgICAgfQorfQorCit2b2lkIERvd25TYW1wbGVyOjpwcm9jZXNzKGNv
bnN0IGZsb2F0KiBzb3VyY2VQLCBmbG9hdCogZGVzdFAsIHNpemVfdCBzb3VyY2VGcmFtZXNUb1By
b2Nlc3MpCit7CisgICAgYm9vbCBpc0lucHV0QmxvY2tTaXplR29vZCA9IHNvdXJjZUZyYW1lc1Rv
UHJvY2VzcyA9PSBtX2lucHV0QmxvY2tTaXplOworICAgIEFTU0VSVChpc0lucHV0QmxvY2tTaXpl
R29vZCk7CisgICAgaWYgKCFpc0lucHV0QmxvY2tTaXplR29vZCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgc2l6ZV90IGRlc3RGcmFtZXNUb1Byb2Nlc3MgPSBzb3VyY2VGcmFtZXNUb1Byb2Nlc3Mg
LyAyOworCisgICAgYm9vbCBpc1RlbXBCdWZmZXJHb29kID0gZGVzdEZyYW1lc1RvUHJvY2VzcyA9
PSBtX3RlbXBCdWZmZXIuc2l6ZSgpOworICAgIEFTU0VSVChpc1RlbXBCdWZmZXJHb29kKTsKKyAg
ICBpZiAoIWlzVGVtcEJ1ZmZlckdvb2QpCisgICAgICAgIHJldHVybjsKKworICAgIGJvb2wgaXNS
ZWR1Y2VkS2VybmVsR29vZCA9IG1fcmVkdWNlZEtlcm5lbC5zaXplKCkgPT0gRGVmYXVsdEtlcm5l
bFNpemUgLyAyOworICAgIEFTU0VSVChpc1JlZHVjZWRLZXJuZWxHb29kKTsKKyAgICBpZiAoIWlz
UmVkdWNlZEtlcm5lbEdvb2QpCisgICAgICAgIHJldHVybjsKKworICAgIHNpemVfdCBoYWxmU2l6
ZSA9IERlZmF1bHRLZXJuZWxTaXplIC8gMjsKKworICAgIC8vIENvcHkgc291cmNlIHNhbXBsZXMg
dG8gMm5kIGhhbGYgb2YgaW5wdXQgYnVmZmVyLgorICAgIGJvb2wgaXNJbnB1dEJ1ZmZlckdvb2Qg
PSBtX2lucHV0QnVmZmVyLnNpemUoKSA9PSBzb3VyY2VGcmFtZXNUb1Byb2Nlc3MgKiAyICYmIGhh
bGZTaXplIDw9IHNvdXJjZUZyYW1lc1RvUHJvY2VzczsKKyAgICBBU1NFUlQoaXNJbnB1dEJ1ZmZl
ckdvb2QpOworICAgIGlmICghaXNJbnB1dEJ1ZmZlckdvb2QpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGZsb2F0KiBpbnB1dFAgPSBtX2lucHV0QnVmZmVyLmRhdGEoKSArIHNvdXJjZUZyYW1lc1Rv
UHJvY2VzczsKKyAgICBtZW1jcHkoaW5wdXRQLCBzb3VyY2VQLCBzaXplb2YoZmxvYXQpICogc291
cmNlRnJhbWVzVG9Qcm9jZXNzKTsKKworICAgIC8vIENvcHkgdGhlIG9kZCBzYW1wbGUtZnJhbWVz
IGZyb20gc291cmNlUCwgZGVsYXllZCBieSBvbmUgc2FtcGxlLWZyYW1lIChkZXN0aW5hdGlvbiBz
YW1wbGUtcmF0ZSkKKyAgICAvLyB0byBtYXRjaCBzaGlmdGluZyBmb3J3YXJkIGluIHRpbWUgaW4g
bV9yZWR1Y2VkS2VybmVsLgorICAgIGZsb2F0KiBvZGRTYW1wbGVzUCA9IG1fdGVtcEJ1ZmZlci5k
YXRhKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRlc3RGcmFtZXNUb1Byb2Nlc3M7
ICsraSkKKyAgICAgICAgb2RkU2FtcGxlc1BbaV0gPSAqKChpbnB1dFAgLSAxKSArIGkgKiAyKTsK
KworICAgIC8vIEFjdHVhbGx5IHByb2Nlc3Mgb2RkU2FtcGxlc1Agd2l0aCBtX3JlZHVjZWRLZXJu
ZWwgZm9yIGVmZmljaWVuY3kuCisgICAgLy8gVGhlIHRoZW9yZXRpY2FsIGtlcm5lbCBpcyBkb3Vi
bGUgdGhpcyBzaXplIHdpdGggMCB2YWx1ZXMgZm9yIGV2ZW4gdGVybXMgKGV4Y2VwdCBjZW50ZXIp
LgorICAgIG1fY29udm9sdmVyLnByb2Nlc3MoJm1fcmVkdWNlZEtlcm5lbCwgb2RkU2FtcGxlc1As
IGRlc3RQLCBkZXN0RnJhbWVzVG9Qcm9jZXNzKTsKKworICAgIC8vIE5vdywgYWNjb3VudCBmb3Ig
dGhlIDAuNSB0ZXJtIHJpZ2h0IGluIHRoZSBtaWRkbGUgb2YgdGhlIGtlcm5lbC4KKyAgICAvLyBU
aGlzIGFtb3VudHMgdG8gYSBkZWxheS1saW5lIG9mIGxlbmd0aCBoYWxmU2l6ZSAoYXQgdGhlIHNv
dXJjZSBzYW1wbGUtcmF0ZSksCisgICAgLy8gc2NhbGVkIGJ5IDAuNS4KKworICAgIC8vIFN1bSBp
bnRvIHRoZSBkZXN0aW5hdGlvbi4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGVzdEZy
YW1lc1RvUHJvY2VzczsgKytpKQorICAgICAgICBkZXN0UFtpXSArPSAwLjUgKiAqKChpbnB1dFAg
LSBoYWxmU2l6ZSkgKyBpICogMik7CisKKyAgICAvLyBDb3B5IDJuZCBoYWxmIG9mIGlucHV0IGJ1
ZmZlciB0byAxc3QgaGFsZi4KKyAgICBtZW1jcHkobV9pbnB1dEJ1ZmZlci5kYXRhKCksIGlucHV0
UCwgc2l6ZW9mKGZsb2F0KSAqIHNvdXJjZUZyYW1lc1RvUHJvY2Vzcyk7Cit9CisKK3ZvaWQgRG93
blNhbXBsZXI6OnJlc2V0KCkKK3sKKyAgICBtX2NvbnZvbHZlci5yZXNldCgpOworICAgIG1faW5w
dXRCdWZmZXIuemVybygpOworfQorCitzaXplX3QgRG93blNhbXBsZXI6OmxhdGVuY3lGcmFtZXMo
KSBjb25zdAoreworICAgIC8vIERpdmlkZSBieSB0d28gc2luY2UgdGhpcyBpcyBhIGxpbmVhciBw
aGFzZSBrZXJuZWwgYW5kIHRoZSBkZWxheSBpcyBhdCB0aGUgY2VudGVyIG9mIHRoZSBrZXJuZWwu
CisgICAgcmV0dXJuIG1fcmVkdWNlZEtlcm5lbC5zaXplKCkgLyAyOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRG93blNhbXBsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0Rvd25TYW1wbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI2MDQzNTlmNjUy
MDk2MDYwZjYyMzRjM2RmOTRhZjY5YTUxMDVhZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rvd25TYW1wbGVyLmgKQEAgLTAsMCArMSw3MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisg
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgRG93blNhbXBsZXJfaAorI2RlZmluZSBEb3duU2FtcGxlcl9oCisKKyNpbmNsdWRlICJB
dWRpb0FycmF5LmgiCisjaW5jbHVkZSAiRGlyZWN0Q29udm9sdmVyLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworLy8gRG93blNhbXBsZXIgZG93bi1zYW1wbGVzIHRoZSBzb3VyY2Ugc3RyZWFt
IGJ5IGEgZmFjdG9yIG9mIDJ4LgorCitjbGFzcyBEb3duU2FtcGxlciB7CitwdWJsaWM6CisgICAg
RG93blNhbXBsZXIoc2l6ZV90IGlucHV0QmxvY2tTaXplKTsKKworICAgIC8vIFRoZSBkZXN0aW5h
dGlvbiBidWZmZXIgfGRlc3RQfCBpcyBvZiBzaXplIHNvdXJjZUZyYW1lc1RvUHJvY2VzcyAvIDIu
CisgICAgdm9pZCBwcm9jZXNzKGNvbnN0IGZsb2F0KiBzb3VyY2VQLCBmbG9hdCogZGVzdFAsIHNp
emVfdCBzb3VyY2VGcmFtZXNUb1Byb2Nlc3MpOworCisgICAgdm9pZCByZXNldCgpOworCisgICAg
Ly8gTGF0ZW5jeSBiYXNlZCBvbiB0aGUgZGVzdGluYXRpb24gc2FtcGxlLXJhdGUuCisgICAgc2l6
ZV90IGxhdGVuY3lGcmFtZXMoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBlbnVtIHsgRGVmYXVs
dEtlcm5lbFNpemUgPSAyNTYgfTsKKworICAgIHNpemVfdCBtX2lucHV0QmxvY2tTaXplOworCisg
ICAgLy8gQ29tcHV0ZXMgaWRlYWwgYmFuZC1saW1pdGVkIGhhbGYtYmFuZCBmaWx0ZXIgY29lZmZp
Y2llbnRzLgorICAgIC8vIEluIG90aGVyIHdvcmRzLCBmaWx0ZXIgb3V0IGFsbCBmcmVxdWVuY2ll
cyBoaWdoZXIgdGhhbiAwLjI1ICogTnlxdWlzdC4KKyAgICB2b2lkIGluaXRpYWxpemVLZXJuZWwo
KTsKKyAgICBBdWRpb0Zsb2F0QXJyYXkgbV9yZWR1Y2VkS2VybmVsOworCisgICAgLy8gSGFsZi1i
YW5kIGZpbHRlci4KKyAgICBEaXJlY3RDb252b2x2ZXIgbV9jb252b2x2ZXI7CisKKyAgICBBdWRp
b0Zsb2F0QXJyYXkgbV90ZW1wQnVmZmVyOworCisgICAgLy8gVXNlZCBhcyBkZWxheS1saW5lIChG
SVIgZmlsdGVyIGhpc3RvcnkpIGZvciB0aGUgaW5wdXQgc2FtcGxlcyB0byBhY2NvdW50IGZvciB0
aGUgMC41IHRlcm0gcmlnaHQgaW4gdGhlIG1pZGRsZSBvZiB0aGUga2VybmVsLgorICAgIEF1ZGlv
RmxvYXRBcnJheSBtX2lucHV0QnVmZmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRG93blNhbXBsZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vVXBTYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1VwU2FtcGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdkZWZlM2I1YWU0ZTI5MTVlNGZhMzcyZDM0YzMz
ZjMxMzQ4OWYzMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1VwU2FtcGxlci5jcHAKQEAgLTAsMCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUi
KSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSAiVXBTYW1wbGVyLmgiCisKKyNp
bmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1VwU2Ft
cGxlcjo6VXBTYW1wbGVyKHNpemVfdCBpbnB1dEJsb2NrU2l6ZSkKKyAgICA6IG1faW5wdXRCbG9j
a1NpemUoaW5wdXRCbG9ja1NpemUpCisgICAgLCBtX2tlcm5lbChEZWZhdWx0S2VybmVsU2l6ZSkK
KyAgICAsIG1fY29udm9sdmVyKGlucHV0QmxvY2tTaXplKQorICAgICwgbV90ZW1wQnVmZmVyKGlu
cHV0QmxvY2tTaXplKQorICAgICwgbV9pbnB1dEJ1ZmZlcihpbnB1dEJsb2NrU2l6ZSAqIDIpCit7
CisgICAgaW5pdGlhbGl6ZUtlcm5lbCgpOworfQorCit2b2lkIFVwU2FtcGxlcjo6aW5pdGlhbGl6
ZUtlcm5lbCgpCit7CisgICAgLy8gQmxhY2ttYW4gd2luZG93IHBhcmFtZXRlcnMuCisgICAgZG91
YmxlIGFscGhhID0gMC4xNjsKKyAgICBkb3VibGUgYTAgPSAwLjUgKiAoMS4wIC0gYWxwaGEpOwor
ICAgIGRvdWJsZSBhMSA9IDAuNTsKKyAgICBkb3VibGUgYTIgPSAwLjUgKiBhbHBoYTsKKworICAg
IGludCBuID0gbV9rZXJuZWwuc2l6ZSgpOworICAgIGludCBoYWxmU2l6ZSA9IG4gLyAyOworICAg
IGRvdWJsZSBzdWJzYW1wbGVPZmZzZXQgPSAtMC41OworCisgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBuOyArK2kpIHsKKyAgICAgICAgLy8gQ29tcHV0ZSB0aGUgc2luYygpIHdpdGggb2Zmc2V0Lgor
ICAgICAgICBkb3VibGUgcyA9IHBpRG91YmxlICogKGkgLSBoYWxmU2l6ZSAtIHN1YnNhbXBsZU9m
ZnNldCk7CisgICAgICAgIGRvdWJsZSBzaW5jID0gIXMgPyAxLjAgOiBzaW4ocykgLyBzOworCisg
ICAgICAgIC8vIENvbXB1dGUgQmxhY2ttYW4gd2luZG93LCBtYXRjaGluZyB0aGUgb2Zmc2V0IG9m
IHRoZSBzaW5jKCkuCisgICAgICAgIGRvdWJsZSB4ID0gKGkgLSBzdWJzYW1wbGVPZmZzZXQpIC8g
bjsKKyAgICAgICAgZG91YmxlIHdpbmRvdyA9IGEwIC0gYTEgKiBjb3MoMi4wICogcGlEb3VibGUg
KiB4KSArIGEyICogY29zKDQuMCAqIHBpRG91YmxlICogeCk7CisKKyAgICAgICAgLy8gV2luZG93
IHRoZSBzaW5jKCkgZnVuY3Rpb24uCisgICAgICAgIG1fa2VybmVsW2ldID0gc2luYyAqIHdpbmRv
dzsKKyAgICB9Cit9CisKK3ZvaWQgVXBTYW1wbGVyOjpwcm9jZXNzKGNvbnN0IGZsb2F0KiBzb3Vy
Y2VQLCBmbG9hdCogZGVzdFAsIHNpemVfdCBzb3VyY2VGcmFtZXNUb1Byb2Nlc3MpCit7CisgICAg
Ym9vbCBpc0lucHV0QmxvY2tTaXplR29vZCA9IHNvdXJjZUZyYW1lc1RvUHJvY2VzcyA9PSBtX2lu
cHV0QmxvY2tTaXplOworICAgIEFTU0VSVChpc0lucHV0QmxvY2tTaXplR29vZCk7CisgICAgaWYg
KCFpc0lucHV0QmxvY2tTaXplR29vZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9vbCBpc1Rl
bXBCdWZmZXJHb29kID0gc291cmNlRnJhbWVzVG9Qcm9jZXNzID09IG1fdGVtcEJ1ZmZlci5zaXpl
KCk7CisgICAgQVNTRVJUKGlzVGVtcEJ1ZmZlckdvb2QpOworICAgIGlmICghaXNUZW1wQnVmZmVy
R29vZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9vbCBpc0tlcm5lbEdvb2QgPSBtX2tlcm5l
bC5zaXplKCkgPT0gRGVmYXVsdEtlcm5lbFNpemU7CisgICAgQVNTRVJUKGlzS2VybmVsR29vZCk7
CisgICAgaWYgKCFpc0tlcm5lbEdvb2QpCisgICAgICAgIHJldHVybjsKKworICAgIHNpemVfdCBo
YWxmU2l6ZSA9IG1fa2VybmVsLnNpemUoKSAvIDI7CisKKyAgICAvLyBDb3B5IHNvdXJjZSBzYW1w
bGVzIHRvIDJuZCBoYWxmIG9mIGlucHV0IGJ1ZmZlci4KKyAgICBib29sIGlzSW5wdXRCdWZmZXJH
b29kID0gbV9pbnB1dEJ1ZmZlci5zaXplKCkgPT0gc291cmNlRnJhbWVzVG9Qcm9jZXNzICogMiAm
JiBoYWxmU2l6ZSA8PSBzb3VyY2VGcmFtZXNUb1Byb2Nlc3M7CisgICAgQVNTRVJUKGlzSW5wdXRC
dWZmZXJHb29kKTsKKyAgICBpZiAoIWlzSW5wdXRCdWZmZXJHb29kKQorICAgICAgICByZXR1cm47
CisKKyAgICBmbG9hdCogaW5wdXRQID0gbV9pbnB1dEJ1ZmZlci5kYXRhKCkgKyBzb3VyY2VGcmFt
ZXNUb1Byb2Nlc3M7CisgICAgbWVtY3B5KGlucHV0UCwgc291cmNlUCwgc2l6ZW9mKGZsb2F0KSAq
IHNvdXJjZUZyYW1lc1RvUHJvY2Vzcyk7CisKKyAgICAvLyBDb3B5IGV2ZW4gc2FtcGxlLWZyYW1l
cyAwLDIsNCw2Li4uIChkZWxheWVkIGJ5IHRoZSBsaW5lYXIgcGhhc2UgZGVsYXkpIGRpcmVjdGx5
IGludG8gZGVzdFAuCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNvdXJjZUZyYW1lc1Rv
UHJvY2VzczsgKytpKQorICAgICAgICBkZXN0UFtpICogMl0gPSAqKChpbnB1dFAgLSBoYWxmU2l6
ZSkgKyBpKTsKKworICAgIC8vIENvbXB1dGUgb2RkIHNhbXBsZS1mcmFtZXMgMSwzLDUsNy4uLgor
ICAgIGZsb2F0KiBvZGRTYW1wbGVzUCA9IG1fdGVtcEJ1ZmZlci5kYXRhKCk7CisgICAgbV9jb252
b2x2ZXIucHJvY2VzcygmbV9rZXJuZWwsIHNvdXJjZVAsIG9kZFNhbXBsZXNQLCBzb3VyY2VGcmFt
ZXNUb1Byb2Nlc3MpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNvdXJjZUZyYW1l
c1RvUHJvY2VzczsgKytpKQorICAgICAgICBkZXN0UFtpICogMiArIDFdID0gb2RkU2FtcGxlc1Bb
aV07CisKKyAgICAvLyBDb3B5IDJuZCBoYWxmIG9mIGlucHV0IGJ1ZmZlciB0byAxc3QgaGFsZi4K
KyAgICBtZW1jcHkobV9pbnB1dEJ1ZmZlci5kYXRhKCksIGlucHV0UCwgc2l6ZW9mKGZsb2F0KSAq
IHNvdXJjZUZyYW1lc1RvUHJvY2Vzcyk7Cit9CisKK3ZvaWQgVXBTYW1wbGVyOjpyZXNldCgpCit7
CisgICAgbV9jb252b2x2ZXIucmVzZXQoKTsKKyAgICBtX2lucHV0QnVmZmVyLnplcm8oKTsKK30K
Kworc2l6ZV90IFVwU2FtcGxlcjo6bGF0ZW5jeUZyYW1lcygpIGNvbnN0Cit7CisgICAgLy8gRGl2
aWRlIGJ5IHR3byBzaW5jZSB0aGlzIGlzIGEgbGluZWFyIHBoYXNlIGtlcm5lbCBhbmQgdGhlIGRl
bGF5IGlzIGF0IHRoZSBjZW50ZXIgb2YgdGhlIGtlcm5lbC4KKyAgICByZXR1cm4gbV9rZXJuZWwu
c2l6ZSgpIC8gMjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1VwU2FtcGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vVXBTYW1wbGVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOWE4NjFjMmYyYzk4YTFlN2U3Yjk1Njk2ZjI0OTY1ZmVhMzg1ZDIzNAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1VwU2FtcGxlci5o
CkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
CisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFVwU2FtcGxlcl9oCisjZGVmaW5lIFVwU2FtcGxl
cl9oCisKKyNpbmNsdWRlICJBdWRpb0FycmF5LmgiCisjaW5jbHVkZSAiRGlyZWN0Q29udm9sdmVy
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gVXBTYW1wbGVyIHVwLXNhbXBsZXMgdGhl
IHNvdXJjZSBzdHJlYW0gYnkgYSBmYWN0b3Igb2YgMnguCisKK2NsYXNzIFVwU2FtcGxlciB7Citw
dWJsaWM6CisgICAgVXBTYW1wbGVyKHNpemVfdCBpbnB1dEJsb2NrU2l6ZSk7CisKKyAgICAvLyBU
aGUgZGVzdGluYXRpb24gYnVmZmVyIHxkZXN0UHwgaXMgb2Ygc2l6ZSBzb3VyY2VGcmFtZXNUb1By
b2Nlc3MgKiAyLgorICAgIHZvaWQgcHJvY2Vzcyhjb25zdCBmbG9hdCogc291cmNlUCwgZmxvYXQq
IGRlc3RQLCBzaXplX3Qgc291cmNlRnJhbWVzVG9Qcm9jZXNzKTsKKworICAgIHZvaWQgcmVzZXQo
KTsKKworICAgIC8vIExhdGVuY3kgYmFzZWQgb24gdGhlIHNvdXJjZSBzYW1wbGUtcmF0ZS4KKyAg
ICBzaXplX3QgbGF0ZW5jeUZyYW1lcygpIGNvbnN0OworCitwcml2YXRlOgorICAgIGVudW0geyBE
ZWZhdWx0S2VybmVsU2l6ZSA9IDEyOCB9OworCisgICAgc2l6ZV90IG1faW5wdXRCbG9ja1NpemU7
CisKKyAgICAvLyBDb21wdXRlcyBpZGVhbCBiYW5kLWxpbWl0ZWQgZmlsdGVyIGNvZWZmaWNpZW50
cyB0byBzYW1wbGUgaW4gYmV0d2VlbiBlYWNoIHNvdXJjZSBzYW1wbGUtZnJhbWUuCisgICAgLy8g
VGhpcyBmaWx0ZXIgd2lsbCBiZSB1c2VkIHRvIGNvbXB1dGUgdGhlIG9kZCBzYW1wbGUtZnJhbWVz
IG9mIHRoZSBvdXRwdXQuCisgICAgdm9pZCBpbml0aWFsaXplS2VybmVsKCk7CisgICAgQXVkaW9G
bG9hdEFycmF5IG1fa2VybmVsOworCisgICAgLy8gQ29tcHV0ZXMgdGhlIG9kZCBzYW1wbGUtZnJh
bWVzIG9mIHRoZSBvdXRwdXQuCisgICAgRGlyZWN0Q29udm9sdmVyIG1fY29udm9sdmVyOworCisg
ICAgQXVkaW9GbG9hdEFycmF5IG1fdGVtcEJ1ZmZlcjsKKworICAgIC8vIERlbGF5IGxpbmUgZm9y
IGdlbmVyYXRpbmcgdGhlIGV2ZW4gc2FtcGxlLWZyYW1lcyBvZiB0aGUgb3V0cHV0LgorICAgIC8v
IFRoZSBzb3VyY2Ugc2FtcGxlcyBhcmUgZGVsYXllZCBleGFjdGx5IHRvIG1hdGNoIHRoZSBsaW5l
YXIgcGhhc2UgZGVsYXkgb2YgdGhlIEZJUiBmaWx0ZXIgKGNvbnZvbHV0aW9uKQorICAgIC8vIHVz
ZWQgdG8gZ2VuZXJhdGUgdGhlIG9kZCBzYW1wbGUtZnJhbWVzIG9mIHRoZSBvdXRwdXQuCisgICAg
QXVkaW9GbG9hdEFycmF5IG1faW5wdXRCdWZmZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBVcFNhbXBsZXJfaApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDllMTdiMTdkYTg4YWM4MzY3ZTcx
NWVhMDAzZDYyM2MwNmNkOWQzYjcuLjlhNzk3MmYwZGMxNDdhYTdlM2UyM2Y5OTgwYjk2Y2ViNjcx
NmViYzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMy0wNi0xMCAgQ2hyaXMgUm9nZXJzICA8
Y3JvZ2Vyc0Bnb29nbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBXYXZlU2hhcGVy
Tm9kZS5vdmVyc2FtcGxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTc0MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHdlYmF1ZGlvL3Jlc291cmNlcy93YXZlc2hhcGVyLXRlc3RpbmcuanM6IEFkZGVk
LgorICAgICAgICAoVDApOgorICAgICAgICAoVDEpOgorICAgICAgICAoVDIpOgorICAgICAgICAo
VDMpOgorICAgICAgICAoVDQpOgorICAgICAgICAoZ2VuZXJhdGVXYXZlU2hhcGluZ0N1cnZlKToK
KyAgICAgICAgKGNoZWNrU2hhcGVkQ3VydmUpOgorICAgICAgICAoY3JlYXRlSW1wdWxzZUJ1ZmZl
cik6CisgICAgICAgIChydW5XYXZlU2hhcGVyT3ZlcnNhbXBsaW5nVGVzdCk6CisgICAgICAgICog
d2ViYXVkaW8vd2F2ZXNoYXBlci1vdmVyc2FtcGxlLTJ4LWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogd2ViYXVkaW8vd2F2ZXNoYXBlci1vdmVyc2FtcGxlLTJ4Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHdlYmF1ZGlvL3dhdmVzaGFwZXItb3ZlcnNhbXBsZS00eC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHdlYmF1ZGlvL3dhdmVzaGFwZXItb3ZlcnNhbXBsZS00eC5odG1s
OiBBZGRlZC4KKwogMjAxMy0wNi0xMCAgTWlobmVhIE92aWRlbmllICA8bWlobmVhQGFkb2JlLmNv
bT4KIAogICAgICAgICBbQ1NTUmVnaW9uc10gQVNTRVJUSU9OIEZBSUxFRDogcm91bmRlZEludFBv
aW50KHJlbmRlcmVyTWFwcGVkUmVzdWx0KSA9PSByb3VuZGVkSW50UG9pbnQocmVzdWx0KSBpbiBS
ZW5kZXJHZW9tZXRyeU1hcDo6bWFwVG9Db250YWluZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYmF1ZGlvL3Jlc291cmNlcy93YXZlc2hhcGVyLXRlc3RpbmcuanMgYi9MYXlvdXRUZXN0cy93
ZWJhdWRpby9yZXNvdXJjZXMvd2F2ZXNoYXBlci10ZXN0aW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmOTBl
NzUwZGEzOGM1NGM1YjFjYWRiMWExZTNlY2MyNTdlNmI2YzIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJhdWRpby9yZXNvdXJjZXMvd2F2ZXNoYXBlci10ZXN0aW5nLmpzCkBAIC0w
LDAgKzEsMTc1IEBACit2YXIgY29udGV4dDsKK3ZhciBsZW5ndGhJblNlY29uZHMgPSAyOworCisv
LyBTa2lwIHRoaXMgbWFueSBmcmFtZXMgYmVmb3JlIGNvbXBhcmluZyBhZ2FpbnN0IHJlZmVyZW5j
ZSB0byBhbGxvdworLy8gYSBzdGVhZHktc3RhdGUgdG8gYmUgcmVhY2hlZCBpbiB0aGUgdXAtc2Ft
cGxpbmcgZmlsdGVycy4KK3ZhciBmaWx0ZXJTdGFiaWxpemVTa2lwRnJhbWVzID0gMjA0ODsKKwor
dmFyIG51bWJlck9mQ3VydmVGcmFtZXMgPSA2NTUzNjsKK3ZhciB3YXZlU2hhcGluZ0N1cnZlOwor
Cit2YXIgd2F2ZXNoYXBlcjsKKworLy8gRklYTUU6IHRlc3QgYXQgbW9yZSBmcmVxdWVuY2llcy4K
Ky8vIFdoZW4gdXNpbmcgdGhlIHVwLXNhbXBsaW5nIGZpbHRlcnMgKDJ4LCA0eCkgYW55IHNpZ25p
ZmljYW50IGFsaWFzaW5nIGNvbXBvbmVudHMKKy8vIHNob3VsZCBiZSBhdCB2ZXJ5IGhpZ2ggZnJl
cXVlbmNpZXMgbmVhciBOeXF1aXN0LiAgVGhlc2UgdGVzdHMgY291bGQgYmUgaW1wcm92ZWQKKy8v
IHRvIGFsbG93IGZvciBhIGhpZ2hlciBhY2NlcHRhYmxlIGFtb3VudCBvZiBhbGlhc2luZyBuZWFy
IE55cXVpc3QsIGJ1dCB0aGVuCisvLyBiZWNvbWUgbW9yZSBzdHJpbmdlbnQgZm9yIGxvd2VyIGZy
ZXF1ZW5jaWVzLgorCisvLyBUaGVzZSB0ZXN0IHBhcmFtZXRlcnMgYXJlIHNldCBpbiBydW5XYXZl
U2hhcGVyT3ZlcnNhbXBsaW5nVGVzdCgpLgordmFyIHNhbXBsZVJhdGU7Cit2YXIgbnlxdWlzdDsK
K3ZhciBvdmVyc2FtcGxlOwordmFyIGZ1bmRhbWVudGFsRnJlcXVlbmN5OwordmFyIGFjY2VwdGFi
bGVBbGlhc2luZ1RocmVzaG9sZERlY2liZWxzOworCit2YXIga1NjYWxlID0gMC4yNTsKKworLy8g
Q2hlYnlzaGV2IFBvbHlub21pYWxzLgorLy8gR2l2ZW4gYW4gaW5wdXQgc2ludXNvaWQsIHJldHVy
bnMgYW4gb3V0cHV0IHNpbnVzb2lkIG9mIHRoZSBnaXZlbiBmcmVxdWVuY3kgbXVsdGlwbGUuCitm
dW5jdGlvbiBUMCh4KSB7IHJldHVybiAxOyB9CitmdW5jdGlvbiBUMSh4KSB7IHJldHVybiB4OyB9
CitmdW5jdGlvbiBUMih4KSB7IHJldHVybiAyKngqeCAtIDE7IH0KK2Z1bmN0aW9uIFQzKHgpIHsg
cmV0dXJuIDQqeCp4KnggLSAzKng7IH0KK2Z1bmN0aW9uIFQ0KHgpIHsgcmV0dXJuIDgqeCp4Kngq
eCAtIDgqeCp4ICsgMTsgfQorCitmdW5jdGlvbiBnZW5lcmF0ZVdhdmVTaGFwaW5nQ3VydmUoKSB7
CisgICAgdmFyIG4gPSA2NTUzNjsKKyAgICB2YXIgbjIgPSBuIC8gMjsKKyAgICB2YXIgY3VydmUg
PSBuZXcgRmxvYXQzMkFycmF5KG4pOworCisgICAgLy8gVGhlIHNoYXBpbmcgY3VydmUgdXNlcyBD
aGVieXNoZXYgUG9seW5vbWlhbCBzdWNoIHRoYXQgYW4gaW5wdXQgc2ludXNvaWQKKyAgICAvLyBh
dCBmcmVxdWVuY3kgZiB3aWxsIGdlbmVyYXRlIGFuIG91dHB1dCBvZiBmb3VyIHNpbnVzb2lkcyBv
ZiBmcmVxdWVuY2llczoKKyAgICAvLyBmLCAyKmYsIDMqZiwgNCpmCisgICAgLy8gZWFjaCBvZiB3
aGljaCBpcyBzY2FsZWQuCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAg
ICAgdmFyIHggPSAoaSAtIG4yKSAvIG4yOworICAgICAgICB2YXIgeSA9IGtTY2FsZSAqIChUMSh4
KSArIFQyKHgpICsgVDMoeCkgKyBUNCh4KSk7CisgICAgICAgIGN1cnZlW2ldID0geTsKKyAgICB9
CisKKyAgICByZXR1cm4gY3VydmU7Cit9CisKK2Z1bmN0aW9uIGNoZWNrU2hhcGVkQ3VydmUoZXZl
bnQpIHsKKyAgICB2YXIgYnVmZmVyID0gZXZlbnQucmVuZGVyZWRCdWZmZXI7CisKKyAgICB2YXIg
b3V0cHV0RGF0YSA9IGJ1ZmZlci5nZXRDaGFubmVsRGF0YSgwKTsKKyAgICB2YXIgbiA9IGJ1ZmZl
ci5sZW5ndGg7CisKKyAgICAvLyBUaGUgV2F2ZVNoYXBlck5vZGUgd2lsbCBoYXZlIGEgcHJvY2Vz
c2luZyBsYXRlbmN5IGlmIG92ZXJzYW1wbGluZyBpcyB1c2VkLAorICAgIC8vIHNvIHdlIHNob3Vs
ZCBhY2NvdW50IGZvciBpdC4KKworICAgIC8vIEZJWE1FOiAubGF0ZW5jeSBzaG91bGQgYmUgZXhw
b3NlZCBhcyBhbiBhdHRyaWJ1dGUgb2YgdGhlIG5vZGUKKyAgICAvLyB2YXIgd2F2ZVNoYXBlckxh
dGVuY3lGcmFtZXMgPSB3YXZlc2hhcGVyLmxhdGVuY3kgKiBzYW1wbGVSYXRlOworICAgIC8vIEJ1
dCBmb3Igbm93IHdlJ2xsIHVzZSB0aGUgaGFyZC1jb2RlZCB2YWx1ZXMgY29ycmVzcG9uZGluZyB0
byB0aGUgYWN0dWFsIGxhdGVuY2llczoKKyAgICB2YXIgd2F2ZVNoYXBlckxhdGVuY3lGcmFtZXMg
PSAwOworICAgIGlmIChvdmVyc2FtcGxlID09ICIyeCIpCisgICAgICAgIHdhdmVTaGFwZXJMYXRl
bmN5RnJhbWVzID0gMTI4OworICAgIGVsc2UgaWYgKG92ZXJzYW1wbGUgPT0gIjR4IikKKyAgICAg
ICAgd2F2ZVNoYXBlckxhdGVuY3lGcmFtZXMgPSAxOTI7CisKKyAgICB2YXIgd29yc3REZWx0YUlu
RGVjaWJlbHMgPSAtMTAwMDsKKworICAgIGZvciAodmFyIGkgPSB3YXZlU2hhcGVyTGF0ZW5jeUZy
YW1lczsgaSA8IG47ICsraSkgeworICAgICAgICB2YXIgYWN0dWFsID0gb3V0cHV0RGF0YVtpXTsK
KworICAgICAgICAvLyBBY2NvdW50IGZvciB0aGUgZXhwZWN0ZWQgcHJvY2Vzc2luZyBsYXRlbmN5
LgorICAgICAgICB2YXIgaiA9IGkgLSB3YXZlU2hhcGVyTGF0ZW5jeUZyYW1lczsKKworICAgICAg
ICAvLyBDb21wdXRlIHJlZmVyZW5jZSBzaW51c29pZHMuCisgICAgICAgIHZhciBwaGFzZUluYyA9
IDIgKiBNYXRoLlBJICogZnVuZGFtZW50YWxGcmVxdWVuY3kgLyBzYW1wbGVSYXRlOworCisgICAg
ICAgIC8vIEdlbmVyYXRlIGFuIGlkZWFsaXplZCByZWZlcmVuY2UgYmFzZWQgb24gdGhlIGZvdXIg
Z2VuZXJhdGVkIGZyZXF1ZW5jaWVzIHRydW5jYXRlZAorICAgICAgICAvLyB0byB0aGUgTnlxdWlz
dCByYXRlLiAgSWRlYWxseSwgd2UnZCBsaWtlIHRoZSB3YXZlc2hhcGVyJ3Mgb3ZlcnNhbXBsaW5n
IHRvIHBlcmZlY3RseQorICAgICAgICAvLyByZW1vdmUgYWxsIGZyZXF1ZW5jaWVzIGFib3ZlIE55
cXVpc3QgdG8gYXZvaWQgYWxpYXNpbmcuICBJbiByZWFsaXR5IHRoZSBvdmVyc2FtcGxpbmcgZmls
dGVycyBhcmUgbm90CisgICAgICAgIC8vIHF1aXRlIHBlcmZlY3QsIHNvIHRoZXJlIHdpbGwgYmUg
YSAoaG9wZWZ1bGx5IHNtYWxsKSBhbW91bnQgb2YgYWxpYXNpbmcuICBXZSBzaG91bGQKKyAgICAg
ICAgLy8gYmUgY2xvc2UgdG8gdGhlIGlkZWFsLgorICAgICAgICB2YXIgcmVmZXJlbmNlID0gMDsK
KworICAgICAgICAvLyBTdW0gaW4gZnVuZGFtZW50YWwgZnJlcXVlbmN5LgorICAgICAgICBpZiAo
ZnVuZGFtZW50YWxGcmVxdWVuY3kgPCBueXF1aXN0KQorICAgICAgICAgICAgcmVmZXJlbmNlICs9
IE1hdGguc2luKHBoYXNlSW5jICogaik7CisKKyAgICAgICAgLy8gTm90ZSB0aGF0IHRoZSBwaGFz
ZSBvZiBlYWNoIG9mIHRoZSBleHBlY3RlZCBnZW5lcmF0ZWQgaGFybW9uaWNzIGlzIGRpZmZlcmVu
dC4KKyAgICAgICAgaWYgKGZ1bmRhbWVudGFsRnJlcXVlbmN5ICogMiA8IG55cXVpc3QpCisgICAg
ICAgICAgICByZWZlcmVuY2UgKz0gLU1hdGguY29zKHBoYXNlSW5jICogaiAqIDIpOworICAgICAg
ICBpZiAoZnVuZGFtZW50YWxGcmVxdWVuY3kgKiAzIDwgbnlxdWlzdCkKKyAgICAgICAgICAgIHJl
ZmVyZW5jZSArPSAtTWF0aC5zaW4ocGhhc2VJbmMgKiBqICogMyk7CisgICAgICAgIGlmIChmdW5k
YW1lbnRhbEZyZXF1ZW5jeSAqIDQgPCBueXF1aXN0KQorICAgICAgICAgICAgcmVmZXJlbmNlICs9
IE1hdGguY29zKHBoYXNlSW5jICogaiAqIDQpOworCisgICAgICAgIC8vIFNjYWxlIHRoZSByZWZl
cmVuY2UgdGhlIHNhbWUgYXMgdGhlIHdhdmVzaGFwaW5nIGN1cnZlIGl0c2VsZi4KKyAgICAgICAg
cmVmZXJlbmNlICo9IGtTY2FsZTsKKworICAgICAgICB2YXIgZGVsdGEgPSBNYXRoLmFicyhhY3R1
YWwgLSByZWZlcmVuY2UpOworICAgICAgICB2YXIgZGVsdGFJbkRlY2liZWxzID0gZGVsdGEgPiAw
ID8gMjAgKiBNYXRoLmxvZyhkZWx0YSkvTWF0aC5sb2coMTApIDogLTIwMDsKKworICAgICAgICBp
ZiAoaiA+PSBmaWx0ZXJTdGFiaWxpemVTa2lwRnJhbWVzKSB7CisgICAgICAgICAgICBpZiAoZGVs
dGFJbkRlY2liZWxzID4gd29yc3REZWx0YUluRGVjaWJlbHMpIHsKKyAgICAgICAgICAgICAgICB3
b3JzdERlbHRhSW5EZWNpYmVscyA9IGRlbHRhSW5EZWNpYmVsczsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKworICAgIC8vIGNvbnNvbGUubG9nKCJ3b3JzdERlbHRhSW5EZWNpYmVs
czogIiArIHdvcnN0RGVsdGFJbkRlY2liZWxzKTsKKworICAgIHZhciBzdWNjZXNzID0gd29yc3RE
ZWx0YUluRGVjaWJlbHMgPCBhY2NlcHRhYmxlQWxpYXNpbmdUaHJlc2hvbGREZWNpYmVsczsKKwor
ICAgIGlmIChzdWNjZXNzKSB7CisgICAgICAgIHRlc3RQYXNzZWQob3ZlcnNhbXBsZSArICIgV2F2
ZVNoYXBlck5vZGUgb3ZlcnNhbXBsaW5nIHdpdGhpbiBhY2NlcHRhYmxlIHRvbGVyYW5jZS4iKTsK
KyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0RmFpbGVkKG92ZXJzYW1wbGUgKyAiIFdhdmVTaGFw
ZXJOb2RlIG92ZXJzYW1wbGluZyBub3Qgd2l0aGluIGFjY2VwdGFibGUgdG9sZXJhbmNlLiAgRXJy
b3IgPSAiICsgd29yc3REZWx0YUluRGVjaWJlbHMgKyAiIGRCRlMiKTsKKyAgICB9CisKKyAgICBm
aW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gY3JlYXRlSW1wdWxzZUJ1ZmZlcihjb250ZXh0
LCBzYW1wbGVGcmFtZUxlbmd0aCkgeworICAgIHZhciBhdWRpb0J1ZmZlciA9IGNvbnRleHQuY3Jl
YXRlQnVmZmVyKDEsIHNhbXBsZUZyYW1lTGVuZ3RoLCBjb250ZXh0LnNhbXBsZVJhdGUpOworICAg
IHZhciBuID0gYXVkaW9CdWZmZXIubGVuZ3RoOworICAgIHZhciBkYXRhTCA9IGF1ZGlvQnVmZmVy
LmdldENoYW5uZWxEYXRhKDApOworCisgICAgZm9yICh2YXIgayA9IDA7IGsgPCBuOyArK2spCisg
ICAgICAgIGRhdGFMW2tdID0gMDsKKworICAgIGRhdGFMWzBdID0gMTsKKworICAgIHJldHVybiBh
dWRpb0J1ZmZlcjsKK30KKworZnVuY3Rpb24gcnVuV2F2ZVNoYXBlck92ZXJzYW1wbGluZ1Rlc3Qo
dGVzdFBhcmFtcykgeworICAgIHNhbXBsZVJhdGUgPSB0ZXN0UGFyYW1zLnNhbXBsZVJhdGU7Cisg
ICAgbnlxdWlzdCA9IDAuNSAqIHNhbXBsZVJhdGU7CisgICAgb3ZlcnNhbXBsZSA9IHRlc3RQYXJh
bXMub3ZlcnNhbXBsZTsKKyAgICBmdW5kYW1lbnRhbEZyZXF1ZW5jeSA9IHRlc3RQYXJhbXMuZnVu
ZGFtZW50YWxGcmVxdWVuY3k7CisgICAgYWNjZXB0YWJsZUFsaWFzaW5nVGhyZXNob2xkRGVjaWJl
bHMgPSB0ZXN0UGFyYW1zLmFjY2VwdGFibGVBbGlhc2luZ1RocmVzaG9sZERlY2liZWxzOworCisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisKKyAgICB3
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAvLyBDcmVhdGUgb2ZmbGluZSBhdWRp
byBjb250ZXh0LgorICAgIHZhciBudW1iZXJPZlJlbmRlckZyYW1lcyA9IHNhbXBsZVJhdGUgKiBs
ZW5ndGhJblNlY29uZHM7CisgICAgY29udGV4dCA9IG5ldyB3ZWJraXRPZmZsaW5lQXVkaW9Db250
ZXh0KDEsIG51bWJlck9mUmVuZGVyRnJhbWVzLCBzYW1wbGVSYXRlKTsKKworICAgIC8vIHNvdXJj
ZSAtPiB3YXZlc2hhcGVyIC0+IGRlc3RpbmF0aW9uCisgICAgdmFyIHNvdXJjZSA9IGNvbnRleHQu
Y3JlYXRlQnVmZmVyU291cmNlKCk7CisgICAgc291cmNlLmJ1ZmZlciA9IGNyZWF0ZVRvbmVCdWZm
ZXIoY29udGV4dCwgZnVuZGFtZW50YWxGcmVxdWVuY3ksIGxlbmd0aEluU2Vjb25kcywgMSk7CisK
KyAgICAvLyBBcHBseSBhIG5vbi1saW5lYXIgZGlzdG9ydGlvbiBjdXJ2ZS4KKyAgICB3YXZlc2hh
cGVyID0gY29udGV4dC5jcmVhdGVXYXZlU2hhcGVyKCk7CisgICAgd2F2ZXNoYXBlci5jdXJ2ZSA9
IGdlbmVyYXRlV2F2ZVNoYXBpbmdDdXJ2ZSgpOworICAgIHdhdmVzaGFwZXIub3ZlcnNhbXBsZSA9
IG92ZXJzYW1wbGU7CisKKyAgICBzb3VyY2UuY29ubmVjdCh3YXZlc2hhcGVyKTsKKyAgICB3YXZl
c2hhcGVyLmNvbm5lY3QoY29udGV4dC5kZXN0aW5hdGlvbik7CisKKyAgICBzb3VyY2Uuc3RhcnQo
MCk7CisKKyAgICBjb250ZXh0Lm9uY29tcGxldGUgPSBjaGVja1NoYXBlZEN1cnZlOworICAgIGNv
bnRleHQuc3RhcnRSZW5kZXJpbmcoKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1
ZGlvL3dhdmVzaGFwZXItb3ZlcnNhbXBsZS0yeC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93
ZWJhdWRpby93YXZlc2hhcGVyLW92ZXJzYW1wbGUtMngtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmZmYTNlYWI0N2QxOWI2OGVmNmM4YjJmYzkzMGNlOTFiNGMxYTA1YTMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby93YXZlc2hhcGVyLW92ZXJzYW1wbGUtMngtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorVGVzdHMgMnggV2F2ZVNoYXBlck5vZGUgb3ZlcnNhbXBs
aW5nLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgMnggV2F2ZVNoYXBlck5v
ZGUgb3ZlcnNhbXBsaW5nIHdpdGhpbiBhY2NlcHRhYmxlIHRvbGVyYW5jZS4KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJhdWRpby93YXZlc2hhcGVyLW92ZXJzYW1wbGUtMnguaHRtbCBiL0xheW91dFRl
c3RzL3dlYmF1ZGlvL3dhdmVzaGFwZXItb3ZlcnNhbXBsZS0yeC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2
YmM2YzA0NTI0MzgzOTBkY2Y1ZGNiYzFlYjQ0ZDVmOGQ0ZDliN2UKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJhdWRpby93YXZlc2hhcGVyLW92ZXJzYW1wbGUtMnguaHRtbApAQCAt
MCwwICsxLDM0IEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJyZXNvdXJjZXMvYXVkaW8tdGVzdGluZy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJyZXNvdXJj
ZXMvbWl4LXRlc3RpbmcuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0icmVzb3VyY2VzL3dhdmVzaGFwZXItdGVzdGluZy5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+CisKKzxib2R5PgorCis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyAyeCBXYXZlU2hh
cGVyTm9kZSBvdmVyc2FtcGxpbmcuIik7CisKK3ZhciB0ZXN0UGFyYW1zID0geworICAgICJzYW1w
bGVSYXRlIjogNDQxMDAsCisgICAgIm92ZXJzYW1wbGUiOiAiMngiLAorCisgICAgLy8gU2hvdWxk
IGdlbmVyYXRlIGhhcm1vbmljcyBhdCA5MDAwLCAxODAwMCwgMjcwMDAsIDM2MDAwCisgICAgLy8g
VGhlIGxhc3QgdHdvIHNob3VsZCBiZSBmaWx0ZXJlZCBvdXQgd2l0aCB0aGUgMnggb3ZlcnNhbXBs
aW5nLgorICAgICJmdW5kYW1lbnRhbEZyZXF1ZW5jeSI6IDkwMDAsCisgICAgImFjY2VwdGFibGVB
bGlhc2luZ1RocmVzaG9sZERlY2liZWxzIjogLTg1Cit9OworcnVuV2F2ZVNoYXBlck92ZXJzYW1w
bGluZ1Rlc3QodGVzdFBhcmFtcyk7CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL3dhdmVzaGFwZXItb3ZlcnNhbXBs
ZS00eC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby93YXZlc2hhcGVyLW92ZXJz
YW1wbGUtNHgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2N2Q4MjE1NTdkYzg0NjAyNmQ4ZWM5
NDhhNDg2Yzk2YWIxYmE3ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRp
by93YXZlc2hhcGVyLW92ZXJzYW1wbGUtNHgtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAor
VGVzdHMgNHggV2F2ZVNoYXBlck5vZGUgb3ZlcnNhbXBsaW5nLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKK1BBU1MgNHggV2F2ZVNoYXBlck5vZGUgb3ZlcnNhbXBsaW5nIHdpdGhpbiBh
Y2NlcHRhYmxlIHRvbGVyYW5jZS4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby93YXZlc2hh
cGVyLW92ZXJzYW1wbGUtNHguaHRtbCBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL3dhdmVzaGFwZXIt
b3ZlcnNhbXBsZS00eC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwODUxYmQ4ZGM4MzhlYWJlNGFlYzIwYTkw
NjFlYmQ2YmMxOTkwNjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby93
YXZlc2hhcGVyLW92ZXJzYW1wbGUtNHguaHRtbApAQCAtMCwwICsxLDM0IEBACis8IURPQ1RZUEUg
aHRtbD4KKworPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgc3JjPSJyZXNvdXJjZXMvYXVkaW8tdGVzdGluZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJyZXNvdXJjZXMvbWl4LXRlc3RpbmcuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0icmVzb3VyY2VzL3dhdmVz
aGFwZXItdGVzdGluZy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorCis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlw
dD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyA0eCBXYXZlU2hhcGVyTm9kZSBvdmVyc2FtcGxpbmcuIik7
CisKK3ZhciB0ZXN0UGFyYW1zID0geworICAgICJzYW1wbGVSYXRlIjogNDQxMDAsCisgICAgIm92
ZXJzYW1wbGUiOiAiNHgiLAorCisgICAgLy8gU2hvdWxkIGdlbmVyYXRlIGhhcm1vbmljcyBhdCAx
ODAwMCwgMzYwMDAsIDU0MDAwLCA3MjAwMAorICAgIC8vIEFsbCBleGNlcHQgZm9yIDE4MDAwIHNo
b3VsZCBiZSBmaWx0ZXJlZCBvdXQgd2l0aCB0aGUgNHggb3ZlcnNhbXBsaW5nLgorICAgICJmdW5k
YW1lbnRhbEZyZXF1ZW5jeSI6IDE4MDAwLAorICAgICJhY2NlcHRhYmxlQWxpYXNpbmdUaHJlc2hv
bGREZWNpYmVscyI6IC04NQorfTsKK3J1bldhdmVTaGFwZXJPdmVyc2FtcGxpbmdUZXN0KHRlc3RQ
YXJhbXMpOworCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204233</attachid>
            <date>2013-06-10 17:35:58 -0700</date>
            <delta_ts>2013-07-15 13:35:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-117435-20130610173421.patch</filename>
            <type>text/plain</type>
            <size>53776</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUxNDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzJhZWQ0NjBhNzIzZmE1
MmNlN2U5MTAzYzlkODYzNTY5MWQ1OGVmMC4uMjY0ZTc1ZWY0YmYwNzhhYjdkZWVjNjcwN2ZmN2I5
MWEyMDU4YzI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDEzLTA2LTEwICBDaHJp
cyBSb2dlcnMgIDxjcm9nZXJzQGdvb2dsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IFdhdmVTaGFwZXJOb2RlLm92ZXJzYW1wbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExNzQzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkYXB0ZWQgZnJvbSBCbGluazoKKyAgICAgICAgaHR0cHM6Ly9j
b2RlcmV2aWV3LmNocm9taXVtLm9yZy8xNTYxOTAwMy8KKworICAgICAgICBQbGVhc2Ugc2VlIHNw
ZWNpZmljYXRpb24gZm9yIGRldGFpbHM6CisgICAgICAgIGh0dHBzOi8vZHZjcy53My5vcmcvaGcv
YXVkaW8vcmF3LWZpbGUvdGlwL3dlYmF1ZGlvL3NwZWNpZmljYXRpb24uaHRtbCNXYXZlU2hhcGVy
Tm9kZQorCisgICAgICAgIC5vdmVyc2FtcGxlIHNwZWNpZmllcyB3aGF0IHR5cGUgb2Ygb3ZlcnNh
bXBsaW5nIChpZiBhbnkpIHNob3VsZCBiZSB1c2VkIHdoZW4gYXBwbHlpbmcgdGhlIHNoYXBpbmcg
Y3VydmUuCisgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzICJub25lIiwgbWVhbmluZyB0aGUg
Y3VydmUgd2lsbCBiZSBhcHBsaWVkIGRpcmVjdGx5IHRvIHRoZSBpbnB1dCBzYW1wbGVzLgorICAg
ICAgICBBIHZhbHVlIG9mICIyeCIgb3IgIjR4IiBjYW4gaW1wcm92ZSB0aGUgcXVhbGl0eSBvZiB0
aGUgcHJvY2Vzc2luZyBieSBhdm9pZGluZyBzb21lIGFsaWFzaW5nLAorICAgICAgICB3aXRoIHRo
ZSAiNHgiIHZhbHVlIHlpZWxkaW5nIHRoZSBoaWdoZXN0IHF1YWxpdHkuCisgICAgICAgICAgICAg
CisgICAgICAgIFRlc3RzOiB3ZWJhdWRpby93YXZlc2hhcGVyLW92ZXJzYW1wbGUtMnguaHRtbAor
ICAgICAgICAgICAgICAgd2ViYXVkaW8vd2F2ZXNoYXBlci1vdmVyc2FtcGxlLTR4Lmh0bWwKKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldhdmVTaGFwZXJEU1BLZXJuZWw6OldhdmVTaGFwZXJEU1BLZXJuZWwp
OgorICAgICAgICAoV2ViQ29yZTo6V2F2ZVNoYXBlckRTUEtlcm5lbDo6bGF6eUluaXRpYWxpemVP
dmVyc2FtcGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2F2ZVNoYXBlckRTUEtlcm5lbDo6cHJv
Y2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpXYXZlU2hhcGVyRFNQS2VybmVsOjpwcm9jZXNzQ3Vy
dmUpOgorICAgICAgICAoV2ViQ29yZTo6V2F2ZVNoYXBlckRTUEtlcm5lbDo6cHJvY2Vzc0N1cnZl
MngpOgorICAgICAgICAoV2ViQ29yZTo6V2F2ZVNoYXBlckRTUEtlcm5lbDo6cHJvY2Vzc0N1cnZl
NHgpOgorICAgICAgICAoV2ViQ29yZTo6V2F2ZVNoYXBlckRTUEtlcm5lbDo6cmVzZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2F2ZVNoYXBlckRTUEtlcm5lbDo6bGF0ZW5jeVRpbWUpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5oOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2F2
ZVNoYXBlck5vZGU6OldhdmVTaGFwZXJOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OldhdmVTaGFw
ZXJOb2RlOjpzZXRPdmVyc2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OldhdmVTaGFwZXJOb2Rl
OjpvdmVyc2FtcGxlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2Rl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpXYXZlU2hhcGVyTm9kZTo6bGF0ZW5jeSk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5pZGw6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldh
dmVTaGFwZXJQcm9jZXNzb3I6OldhdmVTaGFwZXJQcm9jZXNzb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6V2F2ZVNoYXBlclByb2Nlc3Nvcjo6c2V0T3ZlcnNhbXBsZSk6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmg6CisgICAgICAgIChXZWJDb3JlOjpXYXZl
U2hhcGVyUHJvY2Vzc29yOjpvdmVyc2FtcGxlKToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRG93blNhbXBsZXIu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvd25TYW1wbGVyOjpEb3duU2FtcGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpEb3duU2FtcGxlcjo6aW5pdGlhbGl6ZUtlcm5lbCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb3duU2FtcGxlcjo6cHJvY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpE
b3duU2FtcGxlcjo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6RG93blNhbXBsZXI6OmxhdGVu
Y3lGcmFtZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0Rvd25TYW1wbGVyLmg6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1VwU2FtcGxlci5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6VXBTYW1wbGVyOjpVcFNhbXBsZXIpOgorICAgICAgICAoV2ViQ29yZTo6VXBT
YW1wbGVyOjppbml0aWFsaXplS2VybmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlVwU2FtcGxlcjo6
cHJvY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpVcFNhbXBsZXI6OnJlc2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OlVwU2FtcGxlcjo6bGF0ZW5jeUZyYW1lcyk6CisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vVXBTYW1wbGVyLmg6IEFkZGVkLgorCiAyMDEzLTA2LTEwICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjE1MTMwMik6IE1hbnkgYnJv
a2VuIHdlYmF1ZGlvLyB0ZXN0cyBvbiBNYWMgcG9ydC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
Nzg1YTZhNzFiN2UxYjk5MDM5ZmRlODcyZDUzNWUzYTIzMjEwNjRiMS4uZjQ2ODA2YmJlYjM0OWZl
ZjdmZDc5OTNjMTY2NGZiZjNkMGM5OGRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE4NTcs
NiArMTg1Nyw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9hdWRpby9Db25l
LmNwcAogICAgIHBsYXRmb3JtL2F1ZGlvL0RpcmVjdENvbnZvbHZlci5jcHAKICAgICBwbGF0Zm9y
bS9hdWRpby9EaXN0YW5jZS5jcHAKKyAgICBwbGF0Zm9ybS9hdWRpby9Eb3duU2FtcGxlci5jcHAK
ICAgICBwbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwCiAgICAgcGxhdGZvcm0v
YXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcAogICAgIHBsYXRmb3JtL2F1ZGlvL0Vx
dWFsUG93ZXJQYW5uZXIuY3BwCkBAIC0xODc1LDYgKzE4NzYsNyBAQCBzZXQoV2ViQ29yZV9TT1VS
Q0VTCiAgICAgcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuY3BwCiAgICAgcGxh
dGZvcm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIuY3BwCiAgICAgcGxhdGZvcm0vYXVkaW8vU2lu
Y1Jlc2FtcGxlci5jcHAKKyAgICBwbGF0Zm9ybS9hdWRpby9VcFNhbXBsZXIuY3BwCiAgICAgcGxh
dGZvcm0vYXVkaW8vVmVjdG9yTWF0aC5jcHAKICAgICBwbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5j
cHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggNzhiZDYxOGNjODhjNmMzYjkz
YzcyYzg5MjQ1OWI5NmNmMmM0ZGIyZi4uMWExMjU4N2FkMzExODg5MTZhM2FmMzRkODI3MTJiYjQ2
YzI0MTVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC01MzkxLDYgKzUzOTEs
OCBAQCB3ZWJjb3JlX3BsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0RpcmVjdENvbnZvbHZlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9EaXN0YW5jZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rpc3Rh
bmNlLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rvd25TYW1wbGVyLmNwcCBc
CisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRG93blNhbXBsZXIuaCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oIFwK
QEAgLTU0MjgsNiArNTQzMCw4IEBAIHdlYmNvcmVfcGxhdGZvcm1fc291cmNlcyArPSBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIuaCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vVXBTYW1wbGVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vVXBTYW1wbGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1ZlY3Rvck1h
dGguY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9WZWN0b3JNYXRoLmggXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmNwcCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmNw
cAppbmRleCA1ZjNjZjM0NzYyMzBlYzA0MmI5MTUzYzFlMzM4YzU3NTdhMWJhODNlLi40MzEzZjBk
NjQyMzhmYzVjOTMwMDQ2Njc2NDA1N2Y1OTlmNjMyYzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAKQEAgLTMw
LDEzICszMCw1NiBAQAogCiAjaW5jbHVkZSAiV2F2ZVNoYXBlclByb2Nlc3Nvci5oIgogI2luY2x1
ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0
Zi9UaHJlYWRpbmcuaD4KKworY29uc3QgdW5zaWduZWQgUmVuZGVyaW5nUXVhbnR1bSA9IDEyODsK
IAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitXYXZlU2hh
cGVyRFNQS2VybmVsOjpXYXZlU2hhcGVyRFNQS2VybmVsKFdhdmVTaGFwZXJQcm9jZXNzb3IqIHBy
b2Nlc3NvcikKKyAgICA6IEF1ZGlvRFNQS2VybmVsKHByb2Nlc3NvcikKK3sKKyAgICBpZiAocHJv
Y2Vzc29yLT5vdmVyc2FtcGxlKCkgIT0gV2F2ZVNoYXBlclByb2Nlc3Nvcjo6T3ZlclNhbXBsZU5v
bmUpCisgICAgICAgIGxhenlJbml0aWFsaXplT3ZlcnNhbXBsaW5nKCk7Cit9CisKK3ZvaWQgV2F2
ZVNoYXBlckRTUEtlcm5lbDo6bGF6eUluaXRpYWxpemVPdmVyc2FtcGxpbmcoKQoreworICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAoIW1fdGVtcEJ1ZmZlcikgeworICAgICAg
ICBtX3RlbXBCdWZmZXIgPSBhZG9wdFB0cihuZXcgQXVkaW9GbG9hdEFycmF5KFJlbmRlcmluZ1F1
YW50dW0gKiAyKSk7CisgICAgICAgIG1fdGVtcEJ1ZmZlcjIgPSBhZG9wdFB0cihuZXcgQXVkaW9G
bG9hdEFycmF5KFJlbmRlcmluZ1F1YW50dW0gKiA0KSk7CisgICAgICAgIG1fdXBTYW1wbGVyID0g
YWRvcHRQdHIobmV3IFVwU2FtcGxlcihSZW5kZXJpbmdRdWFudHVtKSk7CisgICAgICAgIG1fZG93
blNhbXBsZXIgPSBhZG9wdFB0cihuZXcgRG93blNhbXBsZXIoUmVuZGVyaW5nUXVhbnR1bSAqIDIp
KTsKKyAgICAgICAgbV91cFNhbXBsZXIyID0gYWRvcHRQdHIobmV3IFVwU2FtcGxlcihSZW5kZXJp
bmdRdWFudHVtICogMikpOworICAgICAgICBtX2Rvd25TYW1wbGVyMiA9IGFkb3B0UHRyKG5ldyBE
b3duU2FtcGxlcihSZW5kZXJpbmdRdWFudHVtICogNCkpOworICAgIH0KK30KKwogdm9pZCBXYXZl
U2hhcGVyRFNQS2VybmVsOjpwcm9jZXNzKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0
aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKIHsKKyAgICBzd2l0Y2ggKHdhdmVTaGFw
ZXJQcm9jZXNzb3IoKS0+b3ZlcnNhbXBsZSgpKSB7CisgICAgY2FzZSBXYXZlU2hhcGVyUHJvY2Vz
c29yOjpPdmVyU2FtcGxlTm9uZToKKyAgICAgICAgcHJvY2Vzc0N1cnZlKHNvdXJjZSwgZGVzdGlu
YXRpb24sIGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2F2ZVNo
YXBlclByb2Nlc3Nvcjo6T3ZlclNhbXBsZTJ4OgorICAgICAgICBwcm9jZXNzQ3VydmUyeChzb3Vy
Y2UsIGRlc3RpbmF0aW9uLCBmcmFtZXNUb1Byb2Nlc3MpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFdhdmVTaGFwZXJQcm9jZXNzb3I6Ok92ZXJTYW1wbGU0eDoKKyAgICAgICAgcHJvY2Vzc0N1
cnZlNHgoc291cmNlLCBkZXN0aW5hdGlvbiwgZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICAgICAgYnJl
YWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9
Cit9CisKK3ZvaWQgV2F2ZVNoYXBlckRTUEtlcm5lbDo6cHJvY2Vzc0N1cnZlKGNvbnN0IGZsb2F0
KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKK3sK
ICAgICBBU1NFUlQoc291cmNlICYmIGRlc3RpbmF0aW9uICYmIHdhdmVTaGFwZXJQcm9jZXNzb3Io
KSk7CiAKICAgICBGbG9hdDMyQXJyYXkqIGN1cnZlID0gd2F2ZVNoYXBlclByb2Nlc3NvcigpLT5j
dXJ2ZSgpOwpAQCAtNjAsMTcgKzEwMywxMDYgQEAgdm9pZCBXYXZlU2hhcGVyRFNQS2VybmVsOjpw
cm9jZXNzKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgc2l6ZV8KICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZnJhbWVzVG9Qcm9jZXNzOyArK2kpIHsKICAgICAg
ICAgY29uc3QgZmxvYXQgaW5wdXQgPSBzb3VyY2VbaV07CiAKLSAgICAgICAgLy8gQ2FsY3VsYXRl
IGFuIGluZGV4IGJhc2VkIG9uIGlucHV0IC0xIC0+ICsxIHdpdGggMCBiZWluZyBhdCB0aGUgY2Vu
dGVyIG9mIHRoZSBjdXJ2ZSBkYXRhLgotICAgICAgICBpbnQgaW5kZXggPSAoY3VydmVMZW5ndGgg
KiAoaW5wdXQgKyAxKSkgLyAyOworICAgICAgICAvLyBDYWxjdWxhdGUgYSB2aXJ0dWFsIGluZGV4
IGJhc2VkIG9uIGlucHV0IC0xIC0+ICsxIHdpdGggMCBiZWluZyBhdCB0aGUgY2VudGVyIG9mIHRo
ZSBjdXJ2ZSBkYXRhLgorICAgICAgICAvLyBUaGVuIGxpbmVhcmx5IGludGVycG9sYXRlIGJldHdl
ZW4gdGhlIHR3byBwb2ludHMgaW4gdGhlIGN1cnZlLgorICAgICAgICBkb3VibGUgdmlydHVhbElu
ZGV4ID0gMC41ICogKGlucHV0ICsgMSkgKiBjdXJ2ZUxlbmd0aDsKKyAgICAgICAgaW50IGluZGV4
MSA9IHN0YXRpY19jYXN0PGludD4odmlydHVhbEluZGV4KTsKKyAgICAgICAgaW50IGluZGV4MiA9
IGluZGV4MSArIDE7CisgICAgICAgIGRvdWJsZSBpbnRlcnBvbGF0aW9uRmFjdG9yID0gdmlydHVh
bEluZGV4IC0gaW5kZXgxOwogCiAgICAgICAgIC8vIENsaXAgaW5kZXggdG8gdGhlIGlucHV0IHJh
bmdlIG9mIHRoZSBjdXJ2ZS4KICAgICAgICAgLy8gVGhpcyB0YWtlcyBjYXJlIG9mIGlucHV0IG91
dHNpZGUgb2Ygbm9taW5hbCByYW5nZSAtMSAtPiArMQotICAgICAgICBpbmRleCA9IG1heChpbmRl
eCwgMCk7Ci0gICAgICAgIGluZGV4ID0gbWluKGluZGV4LCBjdXJ2ZUxlbmd0aCAtIDEpOwotICAg
ICAgICBkZXN0aW5hdGlvbltpXSA9IGN1cnZlRGF0YVtpbmRleF07CisgICAgICAgIGluZGV4MSA9
IG1heChpbmRleDEsIDApOworICAgICAgICBpbmRleDEgPSBtaW4oaW5kZXgxLCBjdXJ2ZUxlbmd0
aCAtIDEpOworICAgICAgICBpbmRleDIgPSBtYXgoaW5kZXgyLCAwKTsKKyAgICAgICAgaW5kZXgy
ID0gbWluKGluZGV4MiwgY3VydmVMZW5ndGggLSAxKTsKKworICAgICAgICBkb3VibGUgdmFsdWUx
ID0gY3VydmVEYXRhW2luZGV4MV07CisgICAgICAgIGRvdWJsZSB2YWx1ZTIgPSBjdXJ2ZURhdGFb
aW5kZXgyXTsKKworICAgICAgICBkb3VibGUgb3V0cHV0ID0gKDEuMCAtIGludGVycG9sYXRpb25G
YWN0b3IpICogdmFsdWUxICsgaW50ZXJwb2xhdGlvbkZhY3RvciAqIHZhbHVlMjsKKyAgICAgICAg
ZGVzdGluYXRpb25baV0gPSBvdXRwdXQ7CiAgICAgfQogfQogCit2b2lkIFdhdmVTaGFwZXJEU1BL
ZXJuZWw6OnByb2Nlc3NDdXJ2ZTJ4KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5h
dGlvbiwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKK3sKKyAgICBib29sIGlzU2FmZSA9IGZyYW1l
c1RvUHJvY2VzcyA9PSBSZW5kZXJpbmdRdWFudHVtOworICAgIEFTU0VSVChpc1NhZmUpOworICAg
IGlmICghaXNTYWZlKQorICAgICAgICByZXR1cm47CisKKyAgICBmbG9hdCogdGVtcFAgPSBtX3Rl
bXBCdWZmZXItPmRhdGEoKTsKKworICAgIG1fdXBTYW1wbGVyLT5wcm9jZXNzKHNvdXJjZSwgdGVt
cFAsIGZyYW1lc1RvUHJvY2Vzcyk7CisKKyAgICAvLyBQcm9jZXNzIGF0IDJ4IHVwLXNhbXBsZWQg
cmF0ZS4KKyAgICBwcm9jZXNzQ3VydmUodGVtcFAsIHRlbXBQLCBmcmFtZXNUb1Byb2Nlc3MgKiAy
KTsKKworICAgIG1fZG93blNhbXBsZXItPnByb2Nlc3ModGVtcFAsIGRlc3RpbmF0aW9uLCBmcmFt
ZXNUb1Byb2Nlc3MgKiAyKTsKK30KKwordm9pZCBXYXZlU2hhcGVyRFNQS2VybmVsOjpwcm9jZXNz
Q3VydmU0eChjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHNpemVfdCBm
cmFtZXNUb1Byb2Nlc3MpCit7CisgICAgYm9vbCBpc1NhZmUgPSBmcmFtZXNUb1Byb2Nlc3MgPT0g
UmVuZGVyaW5nUXVhbnR1bTsKKyAgICBBU1NFUlQoaXNTYWZlKTsKKyAgICBpZiAoIWlzU2FmZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgZmxvYXQqIHRlbXBQID0gbV90ZW1wQnVmZmVyLT5kYXRh
KCk7CisgICAgZmxvYXQqIHRlbXBQMiA9IG1fdGVtcEJ1ZmZlcjItPmRhdGEoKTsKKworICAgIG1f
dXBTYW1wbGVyLT5wcm9jZXNzKHNvdXJjZSwgdGVtcFAsIGZyYW1lc1RvUHJvY2Vzcyk7CisgICAg
bV91cFNhbXBsZXIyLT5wcm9jZXNzKHRlbXBQLCB0ZW1wUDIsIGZyYW1lc1RvUHJvY2VzcyAqIDIp
OworCisgICAgLy8gUHJvY2VzcyBhdCA0eCB1cC1zYW1wbGVkIHJhdGUuCisgICAgcHJvY2Vzc0N1
cnZlKHRlbXBQMiwgdGVtcFAyLCBmcmFtZXNUb1Byb2Nlc3MgKiA0KTsKKworICAgIG1fZG93blNh
bXBsZXIyLT5wcm9jZXNzKHRlbXBQMiwgdGVtcFAsIGZyYW1lc1RvUHJvY2VzcyAqIDQpOworICAg
IG1fZG93blNhbXBsZXItPnByb2Nlc3ModGVtcFAsIGRlc3RpbmF0aW9uLCBmcmFtZXNUb1Byb2Nl
c3MgKiAyKTsKK30KKwordm9pZCBXYXZlU2hhcGVyRFNQS2VybmVsOjpyZXNldCgpCit7CisgICAg
aWYgKG1fdXBTYW1wbGVyKSB7CisgICAgICAgIG1fdXBTYW1wbGVyLT5yZXNldCgpOworICAgICAg
ICBtX2Rvd25TYW1wbGVyLT5yZXNldCgpOworICAgICAgICBtX3VwU2FtcGxlcjItPnJlc2V0KCk7
CisgICAgICAgIG1fZG93blNhbXBsZXIyLT5yZXNldCgpOworICAgIH0KK30KKworZG91YmxlIFdh
dmVTaGFwZXJEU1BLZXJuZWw6OmxhdGVuY3lUaW1lKCkgY29uc3QKK3sKKyAgICBzaXplX3QgbGF0
ZW5jeUZyYW1lcyA9IDA7CisgICAgV2F2ZVNoYXBlckRTUEtlcm5lbCoga2VybmVsID0gY29uc3Rf
Y2FzdDxXYXZlU2hhcGVyRFNQS2VybmVsKj4odGhpcyk7CisKKyAgICBzd2l0Y2ggKGtlcm5lbC0+
d2F2ZVNoYXBlclByb2Nlc3NvcigpLT5vdmVyc2FtcGxlKCkpIHsKKyAgICBjYXNlIFdhdmVTaGFw
ZXJQcm9jZXNzb3I6Ok92ZXJTYW1wbGVOb25lOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIFdh
dmVTaGFwZXJQcm9jZXNzb3I6Ok92ZXJTYW1wbGUyeDoKKyAgICAgICAgbGF0ZW5jeUZyYW1lcyAr
PSBtX3VwU2FtcGxlci0+bGF0ZW5jeUZyYW1lcygpOworICAgICAgICBsYXRlbmN5RnJhbWVzICs9
IG1fZG93blNhbXBsZXItPmxhdGVuY3lGcmFtZXMoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBXYXZlU2hhcGVyUHJvY2Vzc29yOjpPdmVyU2FtcGxlNHg6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIC8vIEFjY291bnQgZm9yIGZpcnN0IHN0YWdlIHVwc2FtcGxpbmcuCisgICAgICAgICAgICBs
YXRlbmN5RnJhbWVzICs9IG1fdXBTYW1wbGVyLT5sYXRlbmN5RnJhbWVzKCk7CisgICAgICAgICAg
ICBsYXRlbmN5RnJhbWVzICs9IG1fZG93blNhbXBsZXItPmxhdGVuY3lGcmFtZXMoKTsKKworICAg
ICAgICAgICAgLy8gQWNjb3VudCBmb3Igc2Vjb25kIHN0YWdlIHVwc2FtcGxpbmcuCisgICAgICAg
ICAgICAvLyBhbmQgZGl2aWRlIGJ5IDIgdG8gZ2V0IGJhY2sgZG93biB0byB0aGUgcmVndWxhciBz
YW1wbGUtcmF0ZS4KKyAgICAgICAgICAgIHNpemVfdCBsYXRlbmN5RnJhbWVzMiA9IChtX3VwU2Ft
cGxlcjItPmxhdGVuY3lGcmFtZXMoKSArIG1fZG93blNhbXBsZXIyLT5sYXRlbmN5RnJhbWVzKCkp
IC8gMjsKKyAgICAgICAgICAgIGxhdGVuY3lGcmFtZXMgKz0gbGF0ZW5jeUZyYW1lczI7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KGxh
dGVuY3lGcmFtZXMpIC8gc2FtcGxlUmF0ZSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuaAppbmRleCA1MjMyMmFmNzVh
ZWQyMjAzZWFlZTc4ZGM5MGRhNDU4NWY2NjRhOTU2Li5jMTg4YzU3MWY1NjIwOTViZTk0ZTkzZDU1
YjczMDQxMWY4OWQ5YjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuaApAQCAtMjUsOCArMjUsMTIgQEAKICNpZm5kZWYg
V2F2ZVNoYXBlckRTUEtlcm5lbF9oCiAjZGVmaW5lIFdhdmVTaGFwZXJEU1BLZXJuZWxfaAogCisj
aW5jbHVkZSAiQXVkaW9BcnJheS5oIgogI2luY2x1ZGUgIkF1ZGlvRFNQS2VybmVsLmgiCisjaW5j
bHVkZSAiRG93blNhbXBsZXIuaCIKKyNpbmNsdWRlICJVcFNhbXBsZXIuaCIKICNpbmNsdWRlICJX
YXZlU2hhcGVyUHJvY2Vzc29yLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTM1LDIwICszOSwzNSBAQCBjbGFzcyBXYXZlU2hhcGVyUHJvY2Vz
c29yOwogLy8gV2F2ZVNoYXBlckRTUEtlcm5lbCBpcyBhbiBBdWRpb0RTUEtlcm5lbCBhbmQgaXMg
cmVzcG9uc2libGUgZm9yIG5vbi1saW5lYXIgZGlzdG9ydGlvbiBvbiBvbmUgY2hhbm5lbC4KIAog
Y2xhc3MgV2F2ZVNoYXBlckRTUEtlcm5lbCA6IHB1YmxpYyBBdWRpb0RTUEtlcm5lbCB7Ci1wdWJs
aWM6ICAKLSAgICBleHBsaWNpdCBXYXZlU2hhcGVyRFNQS2VybmVsKFdhdmVTaGFwZXJQcm9jZXNz
b3IqIHByb2Nlc3NvcikKLSAgICA6IEF1ZGlvRFNQS2VybmVsKHByb2Nlc3NvcikKLSAgICB7Ci0g
ICAgfQotICAgIAorcHVibGljOgorICAgIGV4cGxpY2l0IFdhdmVTaGFwZXJEU1BLZXJuZWwoV2F2
ZVNoYXBlclByb2Nlc3NvciopOworCiAgICAgLy8gQXVkaW9EU1BLZXJuZWwKICAgICB2aXJ0dWFs
IHZvaWQgcHJvY2Vzcyhjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdCwgc2l6ZV90IGZy
YW1lc1RvUHJvY2Vzcyk7Ci0gICAgdmlydHVhbCB2b2lkIHJlc2V0KCkgeyB9CisgICAgdmlydHVh
bCB2b2lkIHJlc2V0KCk7CiAgICAgdmlydHVhbCBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiAwOyB9Ci0gICAgCisgICAgdmlydHVhbCBkb3VibGUgbGF0ZW5j
eVRpbWUoKSBjb25zdCBPVkVSUklERTsKKworICAgIC8vIE92ZXJzYW1wbGluZyByZXF1aXJlcyBt
b3JlIHJlc291cmNlcywgc28gbGV0J3Mgb25seSBhbGxvY2F0ZSB0aGVtIGlmIG5lZWRlZC4KKyAg
ICB2b2lkIGxhenlJbml0aWFsaXplT3ZlcnNhbXBsaW5nKCk7CisKIHByb3RlY3RlZDoKKyAgICAv
LyBBcHBseSB0aGUgc2hhcGluZyBjdXJ2ZS4KKyAgICB2b2lkIHByb2Nlc3NDdXJ2ZShjb25zdCBm
bG9hdCogc291cmNlLCBmbG9hdCogZGVzdCwgc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CisKKyAg
ICAvLyBVc2UgdXAtc2FtcGxpbmcsIHByb2Nlc3MgYXQgdGhlIGhpZ2hlciBzYW1wbGUtcmF0ZSwg
dGhlbiBkb3duLXNhbXBsZS4KKyAgICB2b2lkIHByb2Nlc3NDdXJ2ZTJ4KGNvbnN0IGZsb2F0KiBz
b3VyY2UsIGZsb2F0KiBkZXN0LCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICB2b2lkIHBy
b2Nlc3NDdXJ2ZTR4KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0LCBzaXplX3QgZnJh
bWVzVG9Qcm9jZXNzKTsKKwogICAgIFdhdmVTaGFwZXJQcm9jZXNzb3IqIHdhdmVTaGFwZXJQcm9j
ZXNzb3IoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxXYXZlU2hhcGVyUHJvY2Vzc29yKj4ocHJvY2Vz
c29yKCkpOyB9CisKKyAgICAvLyBPdmVyc2FtcGxpbmcuCisgICAgT3duUHRyPEF1ZGlvRmxvYXRB
cnJheT4gbV90ZW1wQnVmZmVyOworICAgIE93blB0cjxBdWRpb0Zsb2F0QXJyYXk+IG1fdGVtcEJ1
ZmZlcjI7CisgICAgT3duUHRyPFVwU2FtcGxlcj4gbV91cFNhbXBsZXI7CisgICAgT3duUHRyPERv
d25TYW1wbGVyPiBtX2Rvd25TYW1wbGVyOworICAgIE93blB0cjxVcFNhbXBsZXI+IG1fdXBTYW1w
bGVyMjsKKyAgICBPd25QdHI8RG93blNhbXBsZXI+IG1fZG93blNhbXBsZXIyOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcAppbmRleCAwMzUwNGU3Nzc2MDVmNzJhMjE4MjZmOWExYjNm
YTAxNDA0Y2RhNzBkLi41Yzk1NjU5MWZjZmE1NDUwNWFmM2NhMTkyNDg4MzE3OWQxY2JhODUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2Rl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2Rl
LmNwcApAQCAtMjcsNiArMjcsOCBAQAogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAKICNpbmNsdWRl
ICJXYXZlU2hhcGVyTm9kZS5oIgorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM2LDYgKzM4
LDggQEAgV2F2ZVNoYXBlck5vZGU6OldhdmVTaGFwZXJOb2RlKEF1ZGlvQ29udGV4dCogY29udGV4
dCkKIHsKICAgICBtX3Byb2Nlc3NvciA9IGFkb3B0UHRyKG5ldyBXYXZlU2hhcGVyUHJvY2Vzc29y
KGNvbnRleHQtPnNhbXBsZVJhdGUoKSwgMSkpOwogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlV2F2
ZVNoYXBlcik7CisKKyAgICBpbml0aWFsaXplKCk7CiB9CiAKIHZvaWQgV2F2ZVNoYXBlck5vZGU6
OnNldEN1cnZlKEZsb2F0MzJBcnJheSogY3VydmUpCkBAIC00OSw2ICs1MywzMyBAQCBGbG9hdDMy
QXJyYXkqIFdhdmVTaGFwZXJOb2RlOjpjdXJ2ZSgpCiAgICAgcmV0dXJuIHdhdmVTaGFwZXJQcm9j
ZXNzb3IoKS0+Y3VydmUoKTsKIH0KIAordm9pZCBXYXZlU2hhcGVyTm9kZTo6c2V0T3ZlcnNhbXBs
ZShjb25zdCBTdHJpbmcmIHR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICh0eXBl
ID09ICJub25lIikKKyAgICAgICAgd2F2ZVNoYXBlclByb2Nlc3NvcigpLT5zZXRPdmVyc2FtcGxl
KFdhdmVTaGFwZXJQcm9jZXNzb3I6Ok92ZXJTYW1wbGVOb25lKTsKKyAgICBlbHNlIGlmICh0eXBl
ID09ICIyeCIpCisgICAgICAgIHdhdmVTaGFwZXJQcm9jZXNzb3IoKS0+c2V0T3ZlcnNhbXBsZShX
YXZlU2hhcGVyUHJvY2Vzc29yOjpPdmVyU2FtcGxlMngpOworICAgIGVsc2UgaWYgKHR5cGUgPT0g
IjR4IikKKyAgICAgICAgd2F2ZVNoYXBlclByb2Nlc3NvcigpLT5zZXRPdmVyc2FtcGxlKFdhdmVT
aGFwZXJQcm9jZXNzb3I6Ok92ZXJTYW1wbGU0eCk7CisgICAgZWxzZQorICAgICAgICBlYyA9IElO
VkFMSURfU1RBVEVfRVJSOworfQorCitTdHJpbmcgV2F2ZVNoYXBlck5vZGU6Om92ZXJzYW1wbGUo
KSBjb25zdAoreworICAgIHN3aXRjaCAoY29uc3RfY2FzdDxXYXZlU2hhcGVyTm9kZSo+KHRoaXMp
LT53YXZlU2hhcGVyUHJvY2Vzc29yKCktPm92ZXJzYW1wbGUoKSkgeworICAgIGNhc2UgV2F2ZVNo
YXBlclByb2Nlc3Nvcjo6T3ZlclNhbXBsZU5vbmU6CisgICAgICAgIHJldHVybiAibm9uZSI7Cisg
ICAgY2FzZSBXYXZlU2hhcGVyUHJvY2Vzc29yOjpPdmVyU2FtcGxlMng6CisgICAgICAgIHJldHVy
biAiMngiOworICAgIGNhc2UgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6T3ZlclNhbXBsZTR4OgorICAg
ICAgICByZXR1cm4gIjR4IjsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuICJub25lIjsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmgKaW5kZXggZjJlZjZkYTIyMTY3
NmNhYWM3Y2UwYzRkMmU3MTJiNjVjMDdlZTA1OC4uY2I2NTM3MmExNzE2ODU0NzIxMzI3YWJjYjg1
YTMxZjRjMDlhNjVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9XYXZlU2hhcGVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2F2ZVNoYXBlck5vZGUuaApAQCAtNDMsNiArNDMsMTEgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
Q3VydmUoRmxvYXQzMkFycmF5Kik7CiAgICAgRmxvYXQzMkFycmF5KiBjdXJ2ZSgpOwogCisgICAg
dm9pZCBzZXRPdmVyc2FtcGxlKGNvbnN0IFN0cmluZyYgLCBFeGNlcHRpb25Db2RlJik7CisgICAg
U3RyaW5nIG92ZXJzYW1wbGUoKSBjb25zdDsKKworICAgIGRvdWJsZSBsYXRlbmN5KCkgY29uc3Qg
eyByZXR1cm4gbGF0ZW5jeVRpbWUoKTsgfQorCiBwcml2YXRlOiAgICAKICAgICBleHBsaWNpdCBX
YXZlU2hhcGVyTm9kZShBdWRpb0NvbnRleHQqKTsgICAgCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaWRsIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5pZGwKaW5kZXggMzU3NDBiMTdmMTRk
NjEwYjQ4Mzg0ZDhkOWRkOGI0OGRjMWMxOGExMy4uOGEzNzc1MzZjZjU3YjBlYzM2YTdiYjdhMmVh
MGE1ODkyNzlkYzI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9XYXZlU2hhcGVyTm9kZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9XYXZlU2hhcGVyTm9kZS5pZGwKQEAgLTIyLDkgKzIyLDE2IEBACiAgKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCitl
bnVtIE92ZXJTYW1wbGVUeXBlIHsKKyAgICAibm9uZSIsCisgICAgIjJ4IiwKKyAgICAiNHgiCit9
OworCiBbCiAgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAogICAgIEpTR2VuZXJhdGVUb0pTT2Jq
ZWN0CiBdIGludGVyZmFjZSBXYXZlU2hhcGVyTm9kZSA6IEF1ZGlvTm9kZSB7CiAgICAgYXR0cmli
dXRlIEZsb2F0MzJBcnJheSBjdXJ2ZTsKKyAgICBbU2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBhdHRy
aWJ1dGUgT3ZlclNhbXBsZVR5cGUgb3ZlcnNhbXBsZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcAppbmRleCA1
Y2FmMzZhMTUyMGFlMGFhNzNlN2QwZjA0MmU4MmY1NTY3MjNhYzc4Li42Y2E1ZGM1ODUxNDIxMzRh
NDQ5YTNkNmRlYjZhOTc2NTY2N2E2OWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAKQEAgLTM0LDYgKzM0LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogV2F2ZVNoYXBlclByb2Nlc3Nvcjo6V2F2ZVNo
YXBlclByb2Nlc3NvcihmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscykK
ICAgICA6IEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yKHNhbXBsZVJhdGUsIG51bWJlck9mQ2hhbm5l
bHMpCisgICAgLCBtX292ZXJzYW1wbGUoT3ZlclNhbXBsZU5vbmUpCiB7CiB9CiAKQEAgLTU2LDYg
KzU3LDIxIEBAIHZvaWQgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6c2V0Q3VydmUoRmxvYXQzMkFycmF5
KiBjdXJ2ZSkKICAgICBtX2N1cnZlID0gY3VydmU7CiB9CiAKK3ZvaWQgV2F2ZVNoYXBlclByb2Nl
c3Nvcjo6c2V0T3ZlcnNhbXBsZShPdmVyU2FtcGxlVHlwZSBvdmVyc2FtcGxlKQoreworICAgIC8v
IFRoaXMgc3luY2hyb25pemVzIHdpdGggcHJvY2VzcygpLgorICAgIE11dGV4TG9ja2VyIHByb2Nl
c3NMb2NrZXIobV9wcm9jZXNzTG9jayk7CisKKyAgICBtX292ZXJzYW1wbGUgPSBvdmVyc2FtcGxl
OworCisgICAgaWYgKG92ZXJzYW1wbGUgIT0gT3ZlclNhbXBsZU5vbmUpIHsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fa2VybmVscy5zaXplKCk7ICsraSkgeworICAgICAgICAg
ICAgV2F2ZVNoYXBlckRTUEtlcm5lbCoga2VybmVsID0gc3RhdGljX2Nhc3Q8V2F2ZVNoYXBlckRT
UEtlcm5lbCo+KG1fa2VybmVsc1tpXS5nZXQoKSk7CisgICAgICAgICAgICBrZXJuZWwtPmxhenlJ
bml0aWFsaXplT3ZlcnNhbXBsaW5nKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgV2F2
ZVNoYXBlclByb2Nlc3Nvcjo6cHJvY2Vzcyhjb25zdCBBdWRpb0J1cyogc291cmNlLCBBdWRpb0J1
cyogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiB7CiAgICAgaWYgKCFpc0lu
aXRpYWxpemVkKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9XYXZlU2hhcGVyUHJvY2Vzc29yLmgKaW5kZXggNDczNWVmZGEyNWY3MjMzYTJhMTc0OWQzY2E1
NDUwZjIyNDc5ZGNiMi4uNTU5N2E5NGMxZTcyNzQzYWRmN2Y4NGFiZjI4ZjI3NGRjZjM5MDk3NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJv
Y2Vzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVy
UHJvY2Vzc29yLmgKQEAgLTM4LDYgKzM4LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgV2F2ZVNoYXBlclByb2Nlc3NvciA6IHB1YmxpYyBBdWRpb0RTUEtlcm5lbFByb2Nlc3NvciB7
CiBwdWJsaWM6CisgICAgZW51bSBPdmVyU2FtcGxlVHlwZSB7CisgICAgICAgIE92ZXJTYW1wbGVO
b25lLAorICAgICAgICBPdmVyU2FtcGxlMngsCisgICAgICAgIE92ZXJTYW1wbGU0eAorICAgIH07
CisKICAgICBXYXZlU2hhcGVyUHJvY2Vzc29yKGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBudW1i
ZXJPZkNoYW5uZWxzKTsKIAogICAgIHZpcnR1YWwgfldhdmVTaGFwZXJQcm9jZXNzb3IoKTsKQEAg
LTQ5LDEwICs1NSwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDdXJ2ZShGbG9hdDMyQXJyYXkq
KTsKICAgICBGbG9hdDMyQXJyYXkqIGN1cnZlKCkgeyByZXR1cm4gbV9jdXJ2ZS5nZXQoKTsgfQog
CisgICAgdm9pZCBzZXRPdmVyc2FtcGxlKE92ZXJTYW1wbGVUeXBlKTsKKyAgICBPdmVyU2FtcGxl
VHlwZSBvdmVyc2FtcGxlKCkgY29uc3QgeyByZXR1cm4gbV9vdmVyc2FtcGxlOyB9CisKIHByaXZh
dGU6CiAgICAgLy8gbV9jdXJ2ZSByZXByZXNlbnRzIHRoZSBub24tbGluZWFyIHNoYXBpbmcgY3Vy
dmUuCiAgICAgUmVmUHRyPEZsb2F0MzJBcnJheT4gbV9jdXJ2ZTsKIAorICAgIE92ZXJTYW1wbGVU
eXBlIG1fb3ZlcnNhbXBsZTsKKwogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHByb2Nlc3MoKSB3
aXRoIHNldEN1cnZlKCkuCiAgICAgbXV0YWJsZSBNdXRleCBtX3Byb2Nlc3NMb2NrOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA0YzQ4N2VhNTNhMTUzOWQwZDhhZDhlMzUzN2FjN2U5NzExMWUyOGQyLi5kNzdlMDQ2OTFhN2Yw
ODQ0NzkyNDU0N2RlMzk3YWM4NjM2NTUzOGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01NzMwLDYgKzU3MzAsMTEgQEAKIAkJ
RkQwNkRGQTYxMzRBNERFRjAwNkY1RDdEIC8qIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQwNkRGQTQx
MzRBNERFRjAwNkY1RDdEIC8qIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oICovOyB9Owog
CQlGRDE2NjBBNTEzNzg3QzZEMDAxRkZBN0IgLyogRGVub3JtYWxEaXNhYmxlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQxNjYwQTQxMzc4N0M2RDAw
MUZGQTdCIC8qIERlbm9ybWFsRGlzYWJsZXIuaCAqLzsgfTsKIAkJRkQxQUYxNTAxNjU2RjE1MTAw
QzZENEY3IC8qIFNoYXBlVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZEMUFGMTRFMTY1NkYxMjEwMEM2RDRGNyAvKiBTaGFwZVZhbHVlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkQxNzYyREYx
NzY2ODZEOTAwRDgzNkE4IC8qIFVwU2FtcGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDE3NjJERDE3NjY4NkQ5MDBEODM2QTggLyogVXBTYW1w
bGVyLmNwcCAqLzsgfTsKKwkJRkQxNzYyRTAxNzY2ODZEOTAwRDgzNkE4IC8qIFVwU2FtcGxlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQxNzYyREUx
NzY2ODZEOTAwRDgzNkE4IC8qIFVwU2FtcGxlci5oICovOyB9OworCQlGRDE3NjJFMzE3NjY4NkVB
MDBEODM2QTggLyogRG93blNhbXBsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkQxNzYyRTExNzY2ODZFQTAwRDgzNkE4IC8qIERvd25TYW1wbGVy
LmNwcCAqLzsgfTsKKwkJRkQxNzYyRTQxNzY2ODZFQTAwRDgzNkE4IC8qIERvd25TYW1wbGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDE3NjJFMjE3
NjY4NkVBMDBEODM2QTggLyogRG93blNhbXBsZXIuaCAqLzsgfTsKKwkJRkQxQUYxNTAxNjU2RjE1
MTAwQzZENEY3IC8qIEV4Y2x1c2lvblNoYXBlVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMUFGMTRFMTY1NkYxMjEwMEM2RDRGNyAvKiBFeGNs
dXNpb25TaGFwZVZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRkQyM0ExMjUxM0Y1RkE1OTAwRjY3MDAxIC8qIEpTTWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZEMjNBMTIzMTNGNUZBNTkwMEY2NzAwMSAvKiBKU01lZGlhRWxlbWVudEF1ZGlvU291
cmNlTm9kZS5jcHAgKi87IH07CiAJCUZEMjNBMTI2MTNGNUZBNTkwMEY2NzAwMSAvKiBKU01lZGlh
RWxlbWVudEF1ZGlvU291cmNlTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkQyM0ExMjQxM0Y1RkE1OTAwRjY3MDAxIC8qIEpTTWVkaWFFbGVtZW50
QXVkaW9Tb3VyY2VOb2RlLmggKi87IH07CiAJCUZEMkRCRjEyMTJCMDQ4QTMwMEVEOThDNiAvKiBB
Y2NlbGVyYXRlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZEMkRCRjBFMTJCMDQ4QTMwMEVEOThDNiAvKiBBY2NlbGVyYXRlLmZyYW1l
d29yayAqLzsgfTsKQEAgLTEyNTg2LDYgKzEyNTkxLDExIEBACiAJCUZEMDhBODg3MTc1RDM5MjYw
MDJDRDM2MCAvKiBTaGFwZU91dHNpZGVJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNoYXBlT3V0c2lkZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RkQxNjYwQTQxMzc4N0M2RDAwMUZGQTdCIC8qIERlbm9ybWFsRGlzYWJsZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVub3JtYWxEaXNhYmxlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGRDFBRjE0RTE2NTZGMTIxMDBDNkQ0RjcgLyogU2hhcGVWYWx1ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTaGFwZVZhbHVlLmg7IHBhdGggPSBz
dHlsZS9TaGFwZVZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZEMTc2MkRE
MTc2Njg2RDkwMEQ4MzZBOCAvKiBVcFNhbXBsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVXBTYW1wbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRkQxNzYyREUxNzY2ODZEOTAwRDgzNkE4IC8qIFVwU2FtcGxlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBVcFNhbXBsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRkQxNzYyRTExNzY2ODZFQTAwRDgzNkE4IC8qIERvd25TYW1wbGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvd25TYW1wbGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkQxNzYyRTIxNzY2ODZFQTAwRDgzNkE4IC8qIERvd25TYW1w
bGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvd25TYW1wbGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZEMUFGMTRFMTY1NkYxMjEwMEM2RDRGNyAvKiBF
eGNsdXNpb25TaGFwZVZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEV4
Y2x1c2lvblNoYXBlVmFsdWUuaDsgcGF0aCA9IHN0eWxlL0V4Y2x1c2lvblNoYXBlVmFsdWUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQyM0ExMjMxM0Y1RkE1OTAwRjY3MDAxIC8q
IEpTTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQyM0ExMjQxM0Y1RkE1OTAwRjY3MDAxIC8qIEpTTWVk
aWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZEMkRCRjBFMTJCMDQ4QTMwMEVEOThDNiAvKiBBY2NlbGVyYXRlLmZyYW1ld29y
ayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBw
ZXIuZnJhbWV3b3JrOyBuYW1lID0gQWNjZWxlcmF0ZS5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BY2NlbGVyYXRlLmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8
YWJzb2x1dGU+IjsgfTsKQEAgLTIwNzE4LDYgKzIwNzI4LDggQEAKIAkJCQlGREFGMTk5NzE1MTNE
MTMxMDA4REIwQzMgLyogRGlyZWN0Q29udm9sdmVyLmggKi8sCiAJCQkJRkQzMTYwNUExMkIwMjZG
NzAwQzFBMzU5IC8qIERpc3RhbmNlLmNwcCAqLywKIAkJCQlGRDMxNjA1QjEyQjAyNkY3MDBDMUEz
NTkgLyogRGlzdGFuY2UuaCAqLywKKwkJCQlGRDE3NjJFMTE3NjY4NkVBMDBEODM2QTggLyogRG93
blNhbXBsZXIuY3BwICovLAorCQkJCUZEMTc2MkUyMTc2Njg2RUEwMEQ4MzZBOCAvKiBEb3duU2Ft
cGxlci5oICovLAogCQkJCUZENkVEMkM1MTM2QjhFNjYwMDNDRjA3MiAvKiBEeW5hbWljc0NvbXBy
ZXNzb3IuY3BwICovLAogCQkJCUZENkVEMkM2MTM2QjhFNjYwMDNDRjA3MiAvKiBEeW5hbWljc0Nv
bXByZXNzb3IuaCAqLywKIAkJCQlGRDUzNzM1NDEzN0I2NTNCMDAwMDhEQ0UgLyogRHluYW1pY3ND
b21wcmVzc29yS2VybmVsLmNwcCAqLywKQEAgLTIwNzU0LDYgKzIwNzY2LDggQEAKIAkJCQlGRDMx
NjA3NzEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJiSW5wdXRCdWZmZXIuaCAqLywKIAkJCQlGRDAw
RDdBMjE0QTNGNjE5MDA3MzQwMTEgLyogU2luY1Jlc2FtcGxlci5jcHAgKi8sCiAJCQkJRkQwMEQ3
QTMxNEEzRjYxOTAwNzM0MDExIC8qIFNpbmNSZXNhbXBsZXIuaCAqLywKKwkJCQlGRDE3NjJERDE3
NjY4NkQ5MDBEODM2QTggLyogVXBTYW1wbGVyLmNwcCAqLywKKwkJCQlGRDE3NjJERTE3NjY4NkQ5
MDBEODM2QTggLyogVXBTYW1wbGVyLmggKi8sCiAJCQkJRkQzMTYwNzgxMkIwMjZGNzAwQzFBMzU5
IC8qIFZlY3Rvck1hdGguY3BwICovLAogCQkJCUZEMzE2MDc5MTJCMDI2RjcwMEMxQTM1OSAvKiBW
ZWN0b3JNYXRoLmggKi8sCiAJCQkJRkQ1MzczNTAxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xl
LmNwcCAqLywKQEAgLTIzOTg1LDYgKzIzOTk5LDggQEAKIAkJCQlCRThFRjA0QjE3MUM5MDE0MDA5
QjQ4QzMgLyogSlNWaWRlb1RyYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlCRThFRjA0RDE3MUM5
MDE0MDA5QjQ4QzMgLyogSlNWaWRlb1RyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkI3
MTlDM0YxNzIzOENBODAwMjJERTM0IC8qIFdlYktpdENTU01hdEZ1bmN0aW9uVmFsdWUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUZEMTc2MkUwMTc2Njg2RDkwMEQ4MzZBOCAvKiBVcFNhbXBsZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCUZEMTc2MkU0MTc2Njg2RUEwMEQ4MzZBOCAvKiBEb3duU2FtcGxl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNjk1NSw2ICsyNjk3MSw4IEBACiAJCQkJQkU2REY3MTEx
NzFDQTJEQTAwREQ1MkI4IC8qIEpTQXVkaW9UcmFja0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCRTZERjcxMzE3MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGQjcxOUM0MDE3MjM4Q0FFMDAyMkRFMzQgLyogV2ViS2l0
Q1NTTWF0RnVuY3Rpb25WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRDE3NjJERjE3NjY4
NkQ5MDBEODM2QTggLyogVXBTYW1wbGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZEMTc2MkUz
MTc2Njg2RUEwMEQ4MzZBOCAvKiBEb3duU2FtcGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rvd25TYW1wbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rvd25TYW1wbGVyLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
NWMyODMyNjlmNDZkY2RlOGI1ZjZmZTkyMzBkZWQzOTA0ODBkMGFhCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRG93blNhbXBsZXIuY3BwCkBAIC0wLDAg
KzEsMTQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBv
ZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykK
KworI2luY2x1ZGUgIkRvd25TYW1wbGVyLmgiCisKKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0Rvd25TYW1wbGVyOjpEb3duU2FtcGxlcihzaXpl
X3QgaW5wdXRCbG9ja1NpemUpCisgICAgOiBtX2lucHV0QmxvY2tTaXplKGlucHV0QmxvY2tTaXpl
KQorICAgICwgbV9yZWR1Y2VkS2VybmVsKERlZmF1bHRLZXJuZWxTaXplIC8gMikKKyAgICAsIG1f
Y29udm9sdmVyKGlucHV0QmxvY2tTaXplIC8gMikgLy8gcnVucyBhdCAxLzIgc291cmNlIHNhbXBs
ZS1yYXRlCisgICAgLCBtX3RlbXBCdWZmZXIoaW5wdXRCbG9ja1NpemUgLyAyKQorICAgICwgbV9p
bnB1dEJ1ZmZlcihpbnB1dEJsb2NrU2l6ZSAqIDIpCit7CisgICAgaW5pdGlhbGl6ZUtlcm5lbCgp
OworfQorCit2b2lkIERvd25TYW1wbGVyOjppbml0aWFsaXplS2VybmVsKCkKK3sKKyAgICAvLyBC
bGFja21hbiB3aW5kb3cgcGFyYW1ldGVycy4KKyAgICBkb3VibGUgYWxwaGEgPSAwLjE2OworICAg
IGRvdWJsZSBhMCA9IDAuNSAqICgxLjAgLSBhbHBoYSk7CisgICAgZG91YmxlIGExID0gMC41Owor
ICAgIGRvdWJsZSBhMiA9IDAuNSAqIGFscGhhOworCisgICAgaW50IG4gPSBEZWZhdWx0S2VybmVs
U2l6ZTsKKyAgICBpbnQgaGFsZlNpemUgPSBuIC8gMjsKKworICAgIC8vIEhhbGYtYmFuZCBmaWx0
ZXIuCisgICAgZG91YmxlIHNpbmNTY2FsZUZhY3RvciA9IDAuNTsKKworICAgIC8vIENvbXB1dGUg
b25seSB0aGUgb2RkIHRlcm1zIGJlY2F1c2UgdGhlIGV2ZW4gb25lcyBhcmUgemVybywgZXhjZXB0
CisgICAgLy8gcmlnaHQgaW4gdGhlIG1pZGRsZSBhdCBoYWxmU2l6ZSwgd2hpY2ggaXMgMC41IGFu
ZCB3ZSdsbCBoYW5kbGUgc3BlY2lhbGx5IGR1cmluZyBwcm9jZXNzaW5nCisgICAgLy8gYWZ0ZXIg
ZG9pbmcgdGhlIG1haW4gY29udm9sdXRpb24gdXNpbmcgbV9yZWR1Y2VkS2VybmVsLgorICAgIGZv
ciAoaW50IGkgPSAxOyBpIDwgbjsgaSArPSAyKSB7CisgICAgICAgIC8vIENvbXB1dGUgdGhlIHNp
bmMoKSB3aXRoIG9mZnNldC4KKyAgICAgICAgZG91YmxlIHMgPSBzaW5jU2NhbGVGYWN0b3IgKiBw
aURvdWJsZSAqIChpIC0gaGFsZlNpemUpOworICAgICAgICBkb3VibGUgc2luYyA9ICFzID8gMS4w
IDogc2luKHMpIC8gczsKKyAgICAgICAgc2luYyAqPSBzaW5jU2NhbGVGYWN0b3I7CisKKyAgICAg
ICAgLy8gQ29tcHV0ZSBCbGFja21hbiB3aW5kb3csIG1hdGNoaW5nIHRoZSBvZmZzZXQgb2YgdGhl
IHNpbmMoKS4KKyAgICAgICAgZG91YmxlIHggPSBzdGF0aWNfY2FzdDxkb3VibGU+KGkpIC8gbjsK
KyAgICAgICAgZG91YmxlIHdpbmRvdyA9IGEwIC0gYTEgKiBjb3MoMi4wICogcGlEb3VibGUgKiB4
KSArIGEyICogY29zKDQuMCAqIHBpRG91YmxlICogeCk7CisKKyAgICAgICAgLy8gV2luZG93IHRo
ZSBzaW5jKCkgZnVuY3Rpb24uCisgICAgICAgIC8vIFRoZW4gc3RvcmUgb25seSB0aGUgb2RkIHRl
cm1zIGluIHRoZSBrZXJuZWwuCisgICAgICAgIC8vIEluIGEgc2Vuc2UsIHRoaXMgaXMgc2hpZnRp
bmcgZm9yd2FyZCBpbiB0aW1lIGJ5IG9uZSBzYW1wbGUtZnJhbWUgYXQgdGhlIGRlc3RpbmF0aW9u
IHNhbXBsZS1yYXRlLgorICAgICAgICBtX3JlZHVjZWRLZXJuZWxbKGkgLSAxKSAvIDJdID0gc2lu
YyAqIHdpbmRvdzsKKyAgICB9Cit9CisKK3ZvaWQgRG93blNhbXBsZXI6OnByb2Nlc3MoY29uc3Qg
ZmxvYXQqIHNvdXJjZVAsIGZsb2F0KiBkZXN0UCwgc2l6ZV90IHNvdXJjZUZyYW1lc1RvUHJvY2Vz
cykKK3sKKyAgICBib29sIGlzSW5wdXRCbG9ja1NpemVHb29kID0gc291cmNlRnJhbWVzVG9Qcm9j
ZXNzID09IG1faW5wdXRCbG9ja1NpemU7CisgICAgQVNTRVJUKGlzSW5wdXRCbG9ja1NpemVHb29k
KTsKKyAgICBpZiAoIWlzSW5wdXRCbG9ja1NpemVHb29kKQorICAgICAgICByZXR1cm47CisKKyAg
ICBzaXplX3QgZGVzdEZyYW1lc1RvUHJvY2VzcyA9IHNvdXJjZUZyYW1lc1RvUHJvY2VzcyAvIDI7
CisKKyAgICBib29sIGlzVGVtcEJ1ZmZlckdvb2QgPSBkZXN0RnJhbWVzVG9Qcm9jZXNzID09IG1f
dGVtcEJ1ZmZlci5zaXplKCk7CisgICAgQVNTRVJUKGlzVGVtcEJ1ZmZlckdvb2QpOworICAgIGlm
ICghaXNUZW1wQnVmZmVyR29vZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9vbCBpc1JlZHVj
ZWRLZXJuZWxHb29kID0gbV9yZWR1Y2VkS2VybmVsLnNpemUoKSA9PSBEZWZhdWx0S2VybmVsU2l6
ZSAvIDI7CisgICAgQVNTRVJUKGlzUmVkdWNlZEtlcm5lbEdvb2QpOworICAgIGlmICghaXNSZWR1
Y2VkS2VybmVsR29vZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2l6ZV90IGhhbGZTaXplID0g
RGVmYXVsdEtlcm5lbFNpemUgLyAyOworCisgICAgLy8gQ29weSBzb3VyY2Ugc2FtcGxlcyB0byAy
bmQgaGFsZiBvZiBpbnB1dCBidWZmZXIuCisgICAgYm9vbCBpc0lucHV0QnVmZmVyR29vZCA9IG1f
aW5wdXRCdWZmZXIuc2l6ZSgpID09IHNvdXJjZUZyYW1lc1RvUHJvY2VzcyAqIDIgJiYgaGFsZlNp
emUgPD0gc291cmNlRnJhbWVzVG9Qcm9jZXNzOworICAgIEFTU0VSVChpc0lucHV0QnVmZmVyR29v
ZCk7CisgICAgaWYgKCFpc0lucHV0QnVmZmVyR29vZCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
ZmxvYXQqIGlucHV0UCA9IG1faW5wdXRCdWZmZXIuZGF0YSgpICsgc291cmNlRnJhbWVzVG9Qcm9j
ZXNzOworICAgIG1lbWNweShpbnB1dFAsIHNvdXJjZVAsIHNpemVvZihmbG9hdCkgKiBzb3VyY2VG
cmFtZXNUb1Byb2Nlc3MpOworCisgICAgLy8gQ29weSB0aGUgb2RkIHNhbXBsZS1mcmFtZXMgZnJv
bSBzb3VyY2VQLCBkZWxheWVkIGJ5IG9uZSBzYW1wbGUtZnJhbWUgKGRlc3RpbmF0aW9uIHNhbXBs
ZS1yYXRlKQorICAgIC8vIHRvIG1hdGNoIHNoaWZ0aW5nIGZvcndhcmQgaW4gdGltZSBpbiBtX3Jl
ZHVjZWRLZXJuZWwuCisgICAgZmxvYXQqIG9kZFNhbXBsZXNQID0gbV90ZW1wQnVmZmVyLmRhdGEo
KTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGVzdEZyYW1lc1RvUHJvY2VzczsgKytp
KQorICAgICAgICBvZGRTYW1wbGVzUFtpXSA9ICooKGlucHV0UCAtIDEpICsgaSAqIDIpOworCisg
ICAgLy8gQWN0dWFsbHkgcHJvY2VzcyBvZGRTYW1wbGVzUCB3aXRoIG1fcmVkdWNlZEtlcm5lbCBm
b3IgZWZmaWNpZW5jeS4KKyAgICAvLyBUaGUgdGhlb3JldGljYWwga2VybmVsIGlzIGRvdWJsZSB0
aGlzIHNpemUgd2l0aCAwIHZhbHVlcyBmb3IgZXZlbiB0ZXJtcyAoZXhjZXB0IGNlbnRlcikuCisg
ICAgbV9jb252b2x2ZXIucHJvY2VzcygmbV9yZWR1Y2VkS2VybmVsLCBvZGRTYW1wbGVzUCwgZGVz
dFAsIGRlc3RGcmFtZXNUb1Byb2Nlc3MpOworCisgICAgLy8gTm93LCBhY2NvdW50IGZvciB0aGUg
MC41IHRlcm0gcmlnaHQgaW4gdGhlIG1pZGRsZSBvZiB0aGUga2VybmVsLgorICAgIC8vIFRoaXMg
YW1vdW50cyB0byBhIGRlbGF5LWxpbmUgb2YgbGVuZ3RoIGhhbGZTaXplIChhdCB0aGUgc291cmNl
IHNhbXBsZS1yYXRlKSwKKyAgICAvLyBzY2FsZWQgYnkgMC41LgorCisgICAgLy8gU3VtIGludG8g
dGhlIGRlc3RpbmF0aW9uLgorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkZXN0RnJhbWVz
VG9Qcm9jZXNzOyArK2kpCisgICAgICAgIGRlc3RQW2ldICs9IDAuNSAqICooKGlucHV0UCAtIGhh
bGZTaXplKSArIGkgKiAyKTsKKworICAgIC8vIENvcHkgMm5kIGhhbGYgb2YgaW5wdXQgYnVmZmVy
IHRvIDFzdCBoYWxmLgorICAgIG1lbWNweShtX2lucHV0QnVmZmVyLmRhdGEoKSwgaW5wdXRQLCBz
aXplb2YoZmxvYXQpICogc291cmNlRnJhbWVzVG9Qcm9jZXNzKTsKK30KKwordm9pZCBEb3duU2Ft
cGxlcjo6cmVzZXQoKQoreworICAgIG1fY29udm9sdmVyLnJlc2V0KCk7CisgICAgbV9pbnB1dEJ1
ZmZlci56ZXJvKCk7Cit9CisKK3NpemVfdCBEb3duU2FtcGxlcjo6bGF0ZW5jeUZyYW1lcygpIGNv
bnN0Cit7CisgICAgLy8gRGl2aWRlIGJ5IHR3byBzaW5jZSB0aGlzIGlzIGEgbGluZWFyIHBoYXNl
IGtlcm5lbCBhbmQgdGhlIGRlbGF5IGlzIGF0IHRoZSBjZW50ZXIgb2YgdGhlIGtlcm5lbC4KKyAg
ICByZXR1cm4gbV9yZWR1Y2VkS2VybmVsLnNpemUoKSAvIDI7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Eb3duU2FtcGxlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vRG93blNhbXBsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMjYwNDM1OWY2NTIwOTYw
NjBmNjIzNGMzZGY5NGFmNjlhNTEwNWFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vRG93blNhbXBsZXIuaApAQCAtMCwwICsxLDcyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBEb3duU2FtcGxlcl9oCisjZGVmaW5lIERvd25TYW1wbGVyX2gKKworI2luY2x1ZGUgIkF1ZGlv
QXJyYXkuaCIKKyNpbmNsdWRlICJEaXJlY3RDb252b2x2ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCisvLyBEb3duU2FtcGxlciBkb3duLXNhbXBsZXMgdGhlIHNvdXJjZSBzdHJlYW0gYnkg
YSBmYWN0b3Igb2YgMnguCisKK2NsYXNzIERvd25TYW1wbGVyIHsKK3B1YmxpYzoKKyAgICBEb3du
U2FtcGxlcihzaXplX3QgaW5wdXRCbG9ja1NpemUpOworCisgICAgLy8gVGhlIGRlc3RpbmF0aW9u
IGJ1ZmZlciB8ZGVzdFB8IGlzIG9mIHNpemUgc291cmNlRnJhbWVzVG9Qcm9jZXNzIC8gMi4KKyAg
ICB2b2lkIHByb2Nlc3MoY29uc3QgZmxvYXQqIHNvdXJjZVAsIGZsb2F0KiBkZXN0UCwgc2l6ZV90
IHNvdXJjZUZyYW1lc1RvUHJvY2Vzcyk7CisKKyAgICB2b2lkIHJlc2V0KCk7CisKKyAgICAvLyBM
YXRlbmN5IGJhc2VkIG9uIHRoZSBkZXN0aW5hdGlvbiBzYW1wbGUtcmF0ZS4KKyAgICBzaXplX3Qg
bGF0ZW5jeUZyYW1lcygpIGNvbnN0OworCitwcml2YXRlOgorICAgIGVudW0geyBEZWZhdWx0S2Vy
bmVsU2l6ZSA9IDI1NiB9OworCisgICAgc2l6ZV90IG1faW5wdXRCbG9ja1NpemU7CisKKyAgICAv
LyBDb21wdXRlcyBpZGVhbCBiYW5kLWxpbWl0ZWQgaGFsZi1iYW5kIGZpbHRlciBjb2VmZmljaWVu
dHMuCisgICAgLy8gSW4gb3RoZXIgd29yZHMsIGZpbHRlciBvdXQgYWxsIGZyZXF1ZW5jaWVzIGhp
Z2hlciB0aGFuIDAuMjUgKiBOeXF1aXN0LgorICAgIHZvaWQgaW5pdGlhbGl6ZUtlcm5lbCgpOwor
ICAgIEF1ZGlvRmxvYXRBcnJheSBtX3JlZHVjZWRLZXJuZWw7CisKKyAgICAvLyBIYWxmLWJhbmQg
ZmlsdGVyLgorICAgIERpcmVjdENvbnZvbHZlciBtX2NvbnZvbHZlcjsKKworICAgIEF1ZGlvRmxv
YXRBcnJheSBtX3RlbXBCdWZmZXI7CisKKyAgICAvLyBVc2VkIGFzIGRlbGF5LWxpbmUgKEZJUiBm
aWx0ZXIgaGlzdG9yeSkgZm9yIHRoZSBpbnB1dCBzYW1wbGVzIHRvIGFjY291bnQgZm9yIHRoZSAw
LjUgdGVybSByaWdodCBpbiB0aGUgbWlkZGxlIG9mIHRoZSBrZXJuZWwuCisgICAgQXVkaW9GbG9h
dEFycmF5IG1faW5wdXRCdWZmZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBEb3duU2FtcGxlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9VcFNhbXBsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vVXBT
YW1wbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44N2RlZmUzYjVhZTRlMjkxNWU0ZmEzNzJkMzRjMzNmMzEz
NDg5ZjMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
VXBTYW1wbGVyLmNwcApAQCAtMCwwICsxLDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2lmIEVOQUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRlICJVcFNhbXBsZXIuaCIKKworI2luY2x1
ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVXBTYW1wbGVy
OjpVcFNhbXBsZXIoc2l6ZV90IGlucHV0QmxvY2tTaXplKQorICAgIDogbV9pbnB1dEJsb2NrU2l6
ZShpbnB1dEJsb2NrU2l6ZSkKKyAgICAsIG1fa2VybmVsKERlZmF1bHRLZXJuZWxTaXplKQorICAg
ICwgbV9jb252b2x2ZXIoaW5wdXRCbG9ja1NpemUpCisgICAgLCBtX3RlbXBCdWZmZXIoaW5wdXRC
bG9ja1NpemUpCisgICAgLCBtX2lucHV0QnVmZmVyKGlucHV0QmxvY2tTaXplICogMikKK3sKKyAg
ICBpbml0aWFsaXplS2VybmVsKCk7Cit9CisKK3ZvaWQgVXBTYW1wbGVyOjppbml0aWFsaXplS2Vy
bmVsKCkKK3sKKyAgICAvLyBCbGFja21hbiB3aW5kb3cgcGFyYW1ldGVycy4KKyAgICBkb3VibGUg
YWxwaGEgPSAwLjE2OworICAgIGRvdWJsZSBhMCA9IDAuNSAqICgxLjAgLSBhbHBoYSk7CisgICAg
ZG91YmxlIGExID0gMC41OworICAgIGRvdWJsZSBhMiA9IDAuNSAqIGFscGhhOworCisgICAgaW50
IG4gPSBtX2tlcm5lbC5zaXplKCk7CisgICAgaW50IGhhbGZTaXplID0gbiAvIDI7CisgICAgZG91
YmxlIHN1YnNhbXBsZU9mZnNldCA9IC0wLjU7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG47
ICsraSkgeworICAgICAgICAvLyBDb21wdXRlIHRoZSBzaW5jKCkgd2l0aCBvZmZzZXQuCisgICAg
ICAgIGRvdWJsZSBzID0gcGlEb3VibGUgKiAoaSAtIGhhbGZTaXplIC0gc3Vic2FtcGxlT2Zmc2V0
KTsKKyAgICAgICAgZG91YmxlIHNpbmMgPSAhcyA/IDEuMCA6IHNpbihzKSAvIHM7CisKKyAgICAg
ICAgLy8gQ29tcHV0ZSBCbGFja21hbiB3aW5kb3csIG1hdGNoaW5nIHRoZSBvZmZzZXQgb2YgdGhl
IHNpbmMoKS4KKyAgICAgICAgZG91YmxlIHggPSAoaSAtIHN1YnNhbXBsZU9mZnNldCkgLyBuOwor
ICAgICAgICBkb3VibGUgd2luZG93ID0gYTAgLSBhMSAqIGNvcygyLjAgKiBwaURvdWJsZSAqIHgp
ICsgYTIgKiBjb3MoNC4wICogcGlEb3VibGUgKiB4KTsKKworICAgICAgICAvLyBXaW5kb3cgdGhl
IHNpbmMoKSBmdW5jdGlvbi4KKyAgICAgICAgbV9rZXJuZWxbaV0gPSBzaW5jICogd2luZG93Owor
ICAgIH0KK30KKwordm9pZCBVcFNhbXBsZXI6OnByb2Nlc3MoY29uc3QgZmxvYXQqIHNvdXJjZVAs
IGZsb2F0KiBkZXN0UCwgc2l6ZV90IHNvdXJjZUZyYW1lc1RvUHJvY2VzcykKK3sKKyAgICBib29s
IGlzSW5wdXRCbG9ja1NpemVHb29kID0gc291cmNlRnJhbWVzVG9Qcm9jZXNzID09IG1faW5wdXRC
bG9ja1NpemU7CisgICAgQVNTRVJUKGlzSW5wdXRCbG9ja1NpemVHb29kKTsKKyAgICBpZiAoIWlz
SW5wdXRCbG9ja1NpemVHb29kKQorICAgICAgICByZXR1cm47CisKKyAgICBib29sIGlzVGVtcEJ1
ZmZlckdvb2QgPSBzb3VyY2VGcmFtZXNUb1Byb2Nlc3MgPT0gbV90ZW1wQnVmZmVyLnNpemUoKTsK
KyAgICBBU1NFUlQoaXNUZW1wQnVmZmVyR29vZCk7CisgICAgaWYgKCFpc1RlbXBCdWZmZXJHb29k
KQorICAgICAgICByZXR1cm47CisKKyAgICBib29sIGlzS2VybmVsR29vZCA9IG1fa2VybmVsLnNp
emUoKSA9PSBEZWZhdWx0S2VybmVsU2l6ZTsKKyAgICBBU1NFUlQoaXNLZXJuZWxHb29kKTsKKyAg
ICBpZiAoIWlzS2VybmVsR29vZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2l6ZV90IGhhbGZT
aXplID0gbV9rZXJuZWwuc2l6ZSgpIC8gMjsKKworICAgIC8vIENvcHkgc291cmNlIHNhbXBsZXMg
dG8gMm5kIGhhbGYgb2YgaW5wdXQgYnVmZmVyLgorICAgIGJvb2wgaXNJbnB1dEJ1ZmZlckdvb2Qg
PSBtX2lucHV0QnVmZmVyLnNpemUoKSA9PSBzb3VyY2VGcmFtZXNUb1Byb2Nlc3MgKiAyICYmIGhh
bGZTaXplIDw9IHNvdXJjZUZyYW1lc1RvUHJvY2VzczsKKyAgICBBU1NFUlQoaXNJbnB1dEJ1ZmZl
ckdvb2QpOworICAgIGlmICghaXNJbnB1dEJ1ZmZlckdvb2QpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGZsb2F0KiBpbnB1dFAgPSBtX2lucHV0QnVmZmVyLmRhdGEoKSArIHNvdXJjZUZyYW1lc1Rv
UHJvY2VzczsKKyAgICBtZW1jcHkoaW5wdXRQLCBzb3VyY2VQLCBzaXplb2YoZmxvYXQpICogc291
cmNlRnJhbWVzVG9Qcm9jZXNzKTsKKworICAgIC8vIENvcHkgZXZlbiBzYW1wbGUtZnJhbWVzIDAs
Miw0LDYuLi4gKGRlbGF5ZWQgYnkgdGhlIGxpbmVhciBwaGFzZSBkZWxheSkgZGlyZWN0bHkgaW50
byBkZXN0UC4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc291cmNlRnJhbWVzVG9Qcm9j
ZXNzOyArK2kpCisgICAgICAgIGRlc3RQW2kgKiAyXSA9ICooKGlucHV0UCAtIGhhbGZTaXplKSAr
IGkpOworCisgICAgLy8gQ29tcHV0ZSBvZGQgc2FtcGxlLWZyYW1lcyAxLDMsNSw3Li4uCisgICAg
ZmxvYXQqIG9kZFNhbXBsZXNQID0gbV90ZW1wQnVmZmVyLmRhdGEoKTsKKyAgICBtX2NvbnZvbHZl
ci5wcm9jZXNzKCZtX2tlcm5lbCwgc291cmNlUCwgb2RkU2FtcGxlc1AsIHNvdXJjZUZyYW1lc1Rv
UHJvY2Vzcyk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc291cmNlRnJhbWVzVG9Q
cm9jZXNzOyArK2kpCisgICAgICAgIGRlc3RQW2kgKiAyICsgMV0gPSBvZGRTYW1wbGVzUFtpXTsK
KworICAgIC8vIENvcHkgMm5kIGhhbGYgb2YgaW5wdXQgYnVmZmVyIHRvIDFzdCBoYWxmLgorICAg
IG1lbWNweShtX2lucHV0QnVmZmVyLmRhdGEoKSwgaW5wdXRQLCBzaXplb2YoZmxvYXQpICogc291
cmNlRnJhbWVzVG9Qcm9jZXNzKTsKK30KKwordm9pZCBVcFNhbXBsZXI6OnJlc2V0KCkKK3sKKyAg
ICBtX2NvbnZvbHZlci5yZXNldCgpOworICAgIG1faW5wdXRCdWZmZXIuemVybygpOworfQorCitz
aXplX3QgVXBTYW1wbGVyOjpsYXRlbmN5RnJhbWVzKCkgY29uc3QKK3sKKyAgICAvLyBEaXZpZGUg
YnkgdHdvIHNpbmNlIHRoaXMgaXMgYSBsaW5lYXIgcGhhc2Uga2VybmVsIGFuZCB0aGUgZGVsYXkg
aXMgYXQgdGhlIGNlbnRlciBvZiB0aGUga2VybmVsLgorICAgIHJldHVybiBtX2tlcm5lbC5zaXpl
KCkgLyAyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vVXBT
YW1wbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9VcFNhbXBsZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45YTg2MWMyZjJjOThhMWU3ZTdiOTU2OTZmMjQ5NjVmZWEzODVkMjM0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vVXBTYW1wbGVyLmgKQEAg
LTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5h
bWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgVXBTYW1wbGVyX2gKKyNkZWZpbmUgVXBTYW1wbGVyX2gK
KworI2luY2x1ZGUgIkF1ZGlvQXJyYXkuaCIKKyNpbmNsdWRlICJEaXJlY3RDb252b2x2ZXIuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBVcFNhbXBsZXIgdXAtc2FtcGxlcyB0aGUgc291
cmNlIHN0cmVhbSBieSBhIGZhY3RvciBvZiAyeC4KKworY2xhc3MgVXBTYW1wbGVyIHsKK3B1Ymxp
YzoKKyAgICBVcFNhbXBsZXIoc2l6ZV90IGlucHV0QmxvY2tTaXplKTsKKworICAgIC8vIFRoZSBk
ZXN0aW5hdGlvbiBidWZmZXIgfGRlc3RQfCBpcyBvZiBzaXplIHNvdXJjZUZyYW1lc1RvUHJvY2Vz
cyAqIDIuCisgICAgdm9pZCBwcm9jZXNzKGNvbnN0IGZsb2F0KiBzb3VyY2VQLCBmbG9hdCogZGVz
dFAsIHNpemVfdCBzb3VyY2VGcmFtZXNUb1Byb2Nlc3MpOworCisgICAgdm9pZCByZXNldCgpOwor
CisgICAgLy8gTGF0ZW5jeSBiYXNlZCBvbiB0aGUgc291cmNlIHNhbXBsZS1yYXRlLgorICAgIHNp
emVfdCBsYXRlbmN5RnJhbWVzKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgZW51bSB7IERlZmF1
bHRLZXJuZWxTaXplID0gMTI4IH07CisKKyAgICBzaXplX3QgbV9pbnB1dEJsb2NrU2l6ZTsKKwor
ICAgIC8vIENvbXB1dGVzIGlkZWFsIGJhbmQtbGltaXRlZCBmaWx0ZXIgY29lZmZpY2llbnRzIHRv
IHNhbXBsZSBpbiBiZXR3ZWVuIGVhY2ggc291cmNlIHNhbXBsZS1mcmFtZS4KKyAgICAvLyBUaGlz
IGZpbHRlciB3aWxsIGJlIHVzZWQgdG8gY29tcHV0ZSB0aGUgb2RkIHNhbXBsZS1mcmFtZXMgb2Yg
dGhlIG91dHB1dC4KKyAgICB2b2lkIGluaXRpYWxpemVLZXJuZWwoKTsKKyAgICBBdWRpb0Zsb2F0
QXJyYXkgbV9rZXJuZWw7CisKKyAgICAvLyBDb21wdXRlcyB0aGUgb2RkIHNhbXBsZS1mcmFtZXMg
b2YgdGhlIG91dHB1dC4KKyAgICBEaXJlY3RDb252b2x2ZXIgbV9jb252b2x2ZXI7CisKKyAgICBB
dWRpb0Zsb2F0QXJyYXkgbV90ZW1wQnVmZmVyOworCisgICAgLy8gRGVsYXkgbGluZSBmb3IgZ2Vu
ZXJhdGluZyB0aGUgZXZlbiBzYW1wbGUtZnJhbWVzIG9mIHRoZSBvdXRwdXQuCisgICAgLy8gVGhl
IHNvdXJjZSBzYW1wbGVzIGFyZSBkZWxheWVkIGV4YWN0bHkgdG8gbWF0Y2ggdGhlIGxpbmVhciBw
aGFzZSBkZWxheSBvZiB0aGUgRklSIGZpbHRlciAoY29udm9sdXRpb24pCisgICAgLy8gdXNlZCB0
byBnZW5lcmF0ZSB0aGUgb2RkIHNhbXBsZS1mcmFtZXMgb2YgdGhlIG91dHB1dC4KKyAgICBBdWRp
b0Zsb2F0QXJyYXkgbV9pbnB1dEJ1ZmZlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIFVwU2FtcGxlcl9oCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzFmZDgyYThhNTUyZmNiOWRhOTIxODEy
NGZiMGFmYWM4OGRjZDc5Mi4uM2JkMjI2ZDQ3M2JmYzc2YWU2MmE1MzcxMjlmNTNiYjVjNzg5MzBh
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEzLTA2LTEwICBDaHJpcyBSb2dlcnMgIDxjcm9n
ZXJzQGdvb2dsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIFdhdmVTaGFwZXJOb2Rl
Lm92ZXJzYW1wbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNzQzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogd2ViYXVkaW8vcmVzb3VyY2VzL3dhdmVzaGFwZXItdGVzdGluZy5qczogQWRkZWQuCisg
ICAgICAgIChUMCk6CisgICAgICAgIChUMSk6CisgICAgICAgIChUMik6CisgICAgICAgIChUMyk6
CisgICAgICAgIChUNCk6CisgICAgICAgIChnZW5lcmF0ZVdhdmVTaGFwaW5nQ3VydmUpOgorICAg
ICAgICAoY2hlY2tTaGFwZWRDdXJ2ZSk6CisgICAgICAgIChjcmVhdGVJbXB1bHNlQnVmZmVyKToK
KyAgICAgICAgKHJ1bldhdmVTaGFwZXJPdmVyc2FtcGxpbmdUZXN0KToKKyAgICAgICAgKiB3ZWJh
dWRpby93YXZlc2hhcGVyLW92ZXJzYW1wbGUtMngtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB3ZWJhdWRpby93YXZlc2hhcGVyLW92ZXJzYW1wbGUtMnguaHRtbDogQWRkZWQuCisgICAg
ICAgICogd2ViYXVkaW8vd2F2ZXNoYXBlci1vdmVyc2FtcGxlLTR4LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogd2ViYXVkaW8vd2F2ZXNoYXBlci1vdmVyc2FtcGxlLTR4Lmh0bWw6IEFk
ZGVkLgorCiAyMDEzLTA2LTEwICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJFR1JFU1NJT04ocjE1MTMwMik6IE1hbnkgYnJva2VuIHdlYmF1ZGlvLyB0ZXN0cyBv
biBNYWMgcG9ydC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL3Jlc291cmNlcy93
YXZlc2hhcGVyLXRlc3RpbmcuanMgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9yZXNvdXJjZXMvd2F2
ZXNoYXBlci10ZXN0aW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmOTBlNzUwZGEzOGM1NGM1YjFjYWRiMWEx
ZTNlY2MyNTdlNmI2YzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9y
ZXNvdXJjZXMvd2F2ZXNoYXBlci10ZXN0aW5nLmpzCkBAIC0wLDAgKzEsMTc1IEBACit2YXIgY29u
dGV4dDsKK3ZhciBsZW5ndGhJblNlY29uZHMgPSAyOworCisvLyBTa2lwIHRoaXMgbWFueSBmcmFt
ZXMgYmVmb3JlIGNvbXBhcmluZyBhZ2FpbnN0IHJlZmVyZW5jZSB0byBhbGxvdworLy8gYSBzdGVh
ZHktc3RhdGUgdG8gYmUgcmVhY2hlZCBpbiB0aGUgdXAtc2FtcGxpbmcgZmlsdGVycy4KK3ZhciBm
aWx0ZXJTdGFiaWxpemVTa2lwRnJhbWVzID0gMjA0ODsKKwordmFyIG51bWJlck9mQ3VydmVGcmFt
ZXMgPSA2NTUzNjsKK3ZhciB3YXZlU2hhcGluZ0N1cnZlOworCit2YXIgd2F2ZXNoYXBlcjsKKwor
Ly8gRklYTUU6IHRlc3QgYXQgbW9yZSBmcmVxdWVuY2llcy4KKy8vIFdoZW4gdXNpbmcgdGhlIHVw
LXNhbXBsaW5nIGZpbHRlcnMgKDJ4LCA0eCkgYW55IHNpZ25pZmljYW50IGFsaWFzaW5nIGNvbXBv
bmVudHMKKy8vIHNob3VsZCBiZSBhdCB2ZXJ5IGhpZ2ggZnJlcXVlbmNpZXMgbmVhciBOeXF1aXN0
LiAgVGhlc2UgdGVzdHMgY291bGQgYmUgaW1wcm92ZWQKKy8vIHRvIGFsbG93IGZvciBhIGhpZ2hl
ciBhY2NlcHRhYmxlIGFtb3VudCBvZiBhbGlhc2luZyBuZWFyIE55cXVpc3QsIGJ1dCB0aGVuCisv
LyBiZWNvbWUgbW9yZSBzdHJpbmdlbnQgZm9yIGxvd2VyIGZyZXF1ZW5jaWVzLgorCisvLyBUaGVz
ZSB0ZXN0IHBhcmFtZXRlcnMgYXJlIHNldCBpbiBydW5XYXZlU2hhcGVyT3ZlcnNhbXBsaW5nVGVz
dCgpLgordmFyIHNhbXBsZVJhdGU7Cit2YXIgbnlxdWlzdDsKK3ZhciBvdmVyc2FtcGxlOwordmFy
IGZ1bmRhbWVudGFsRnJlcXVlbmN5OwordmFyIGFjY2VwdGFibGVBbGlhc2luZ1RocmVzaG9sZERl
Y2liZWxzOworCit2YXIga1NjYWxlID0gMC4yNTsKKworLy8gQ2hlYnlzaGV2IFBvbHlub21pYWxz
LgorLy8gR2l2ZW4gYW4gaW5wdXQgc2ludXNvaWQsIHJldHVybnMgYW4gb3V0cHV0IHNpbnVzb2lk
IG9mIHRoZSBnaXZlbiBmcmVxdWVuY3kgbXVsdGlwbGUuCitmdW5jdGlvbiBUMCh4KSB7IHJldHVy
biAxOyB9CitmdW5jdGlvbiBUMSh4KSB7IHJldHVybiB4OyB9CitmdW5jdGlvbiBUMih4KSB7IHJl
dHVybiAyKngqeCAtIDE7IH0KK2Z1bmN0aW9uIFQzKHgpIHsgcmV0dXJuIDQqeCp4KnggLSAzKng7
IH0KK2Z1bmN0aW9uIFQ0KHgpIHsgcmV0dXJuIDgqeCp4KngqeCAtIDgqeCp4ICsgMTsgfQorCitm
dW5jdGlvbiBnZW5lcmF0ZVdhdmVTaGFwaW5nQ3VydmUoKSB7CisgICAgdmFyIG4gPSA2NTUzNjsK
KyAgICB2YXIgbjIgPSBuIC8gMjsKKyAgICB2YXIgY3VydmUgPSBuZXcgRmxvYXQzMkFycmF5KG4p
OworCisgICAgLy8gVGhlIHNoYXBpbmcgY3VydmUgdXNlcyBDaGVieXNoZXYgUG9seW5vbWlhbCBz
dWNoIHRoYXQgYW4gaW5wdXQgc2ludXNvaWQKKyAgICAvLyBhdCBmcmVxdWVuY3kgZiB3aWxsIGdl
bmVyYXRlIGFuIG91dHB1dCBvZiBmb3VyIHNpbnVzb2lkcyBvZiBmcmVxdWVuY2llczoKKyAgICAv
LyBmLCAyKmYsIDMqZiwgNCpmCisgICAgLy8gZWFjaCBvZiB3aGljaCBpcyBzY2FsZWQuCisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgdmFyIHggPSAoaSAtIG4yKSAv
IG4yOworICAgICAgICB2YXIgeSA9IGtTY2FsZSAqIChUMSh4KSArIFQyKHgpICsgVDMoeCkgKyBU
NCh4KSk7CisgICAgICAgIGN1cnZlW2ldID0geTsKKyAgICB9CisKKyAgICByZXR1cm4gY3VydmU7
Cit9CisKK2Z1bmN0aW9uIGNoZWNrU2hhcGVkQ3VydmUoZXZlbnQpIHsKKyAgICB2YXIgYnVmZmVy
ID0gZXZlbnQucmVuZGVyZWRCdWZmZXI7CisKKyAgICB2YXIgb3V0cHV0RGF0YSA9IGJ1ZmZlci5n
ZXRDaGFubmVsRGF0YSgwKTsKKyAgICB2YXIgbiA9IGJ1ZmZlci5sZW5ndGg7CisKKyAgICAvLyBU
aGUgV2F2ZVNoYXBlck5vZGUgd2lsbCBoYXZlIGEgcHJvY2Vzc2luZyBsYXRlbmN5IGlmIG92ZXJz
YW1wbGluZyBpcyB1c2VkLAorICAgIC8vIHNvIHdlIHNob3VsZCBhY2NvdW50IGZvciBpdC4KKwor
ICAgIC8vIEZJWE1FOiAubGF0ZW5jeSBzaG91bGQgYmUgZXhwb3NlZCBhcyBhbiBhdHRyaWJ1dGUg
b2YgdGhlIG5vZGUKKyAgICAvLyB2YXIgd2F2ZVNoYXBlckxhdGVuY3lGcmFtZXMgPSB3YXZlc2hh
cGVyLmxhdGVuY3kgKiBzYW1wbGVSYXRlOworICAgIC8vIEJ1dCBmb3Igbm93IHdlJ2xsIHVzZSB0
aGUgaGFyZC1jb2RlZCB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byB0aGUgYWN0dWFsIGxhdGVuY2ll
czoKKyAgICB2YXIgd2F2ZVNoYXBlckxhdGVuY3lGcmFtZXMgPSAwOworICAgIGlmIChvdmVyc2Ft
cGxlID09ICIyeCIpCisgICAgICAgIHdhdmVTaGFwZXJMYXRlbmN5RnJhbWVzID0gMTI4OworICAg
IGVsc2UgaWYgKG92ZXJzYW1wbGUgPT0gIjR4IikKKyAgICAgICAgd2F2ZVNoYXBlckxhdGVuY3lG
cmFtZXMgPSAxOTI7CisKKyAgICB2YXIgd29yc3REZWx0YUluRGVjaWJlbHMgPSAtMTAwMDsKKwor
ICAgIGZvciAodmFyIGkgPSB3YXZlU2hhcGVyTGF0ZW5jeUZyYW1lczsgaSA8IG47ICsraSkgewor
ICAgICAgICB2YXIgYWN0dWFsID0gb3V0cHV0RGF0YVtpXTsKKworICAgICAgICAvLyBBY2NvdW50
IGZvciB0aGUgZXhwZWN0ZWQgcHJvY2Vzc2luZyBsYXRlbmN5LgorICAgICAgICB2YXIgaiA9IGkg
LSB3YXZlU2hhcGVyTGF0ZW5jeUZyYW1lczsKKworICAgICAgICAvLyBDb21wdXRlIHJlZmVyZW5j
ZSBzaW51c29pZHMuCisgICAgICAgIHZhciBwaGFzZUluYyA9IDIgKiBNYXRoLlBJICogZnVuZGFt
ZW50YWxGcmVxdWVuY3kgLyBzYW1wbGVSYXRlOworCisgICAgICAgIC8vIEdlbmVyYXRlIGFuIGlk
ZWFsaXplZCByZWZlcmVuY2UgYmFzZWQgb24gdGhlIGZvdXIgZ2VuZXJhdGVkIGZyZXF1ZW5jaWVz
IHRydW5jYXRlZAorICAgICAgICAvLyB0byB0aGUgTnlxdWlzdCByYXRlLiAgSWRlYWxseSwgd2Un
ZCBsaWtlIHRoZSB3YXZlc2hhcGVyJ3Mgb3ZlcnNhbXBsaW5nIHRvIHBlcmZlY3RseQorICAgICAg
ICAvLyByZW1vdmUgYWxsIGZyZXF1ZW5jaWVzIGFib3ZlIE55cXVpc3QgdG8gYXZvaWQgYWxpYXNp
bmcuICBJbiByZWFsaXR5IHRoZSBvdmVyc2FtcGxpbmcgZmlsdGVycyBhcmUgbm90CisgICAgICAg
IC8vIHF1aXRlIHBlcmZlY3QsIHNvIHRoZXJlIHdpbGwgYmUgYSAoaG9wZWZ1bGx5IHNtYWxsKSBh
bW91bnQgb2YgYWxpYXNpbmcuICBXZSBzaG91bGQKKyAgICAgICAgLy8gYmUgY2xvc2UgdG8gdGhl
IGlkZWFsLgorICAgICAgICB2YXIgcmVmZXJlbmNlID0gMDsKKworICAgICAgICAvLyBTdW0gaW4g
ZnVuZGFtZW50YWwgZnJlcXVlbmN5LgorICAgICAgICBpZiAoZnVuZGFtZW50YWxGcmVxdWVuY3kg
PCBueXF1aXN0KQorICAgICAgICAgICAgcmVmZXJlbmNlICs9IE1hdGguc2luKHBoYXNlSW5jICog
aik7CisKKyAgICAgICAgLy8gTm90ZSB0aGF0IHRoZSBwaGFzZSBvZiBlYWNoIG9mIHRoZSBleHBl
Y3RlZCBnZW5lcmF0ZWQgaGFybW9uaWNzIGlzIGRpZmZlcmVudC4KKyAgICAgICAgaWYgKGZ1bmRh
bWVudGFsRnJlcXVlbmN5ICogMiA8IG55cXVpc3QpCisgICAgICAgICAgICByZWZlcmVuY2UgKz0g
LU1hdGguY29zKHBoYXNlSW5jICogaiAqIDIpOworICAgICAgICBpZiAoZnVuZGFtZW50YWxGcmVx
dWVuY3kgKiAzIDwgbnlxdWlzdCkKKyAgICAgICAgICAgIHJlZmVyZW5jZSArPSAtTWF0aC5zaW4o
cGhhc2VJbmMgKiBqICogMyk7CisgICAgICAgIGlmIChmdW5kYW1lbnRhbEZyZXF1ZW5jeSAqIDQg
PCBueXF1aXN0KQorICAgICAgICAgICAgcmVmZXJlbmNlICs9IE1hdGguY29zKHBoYXNlSW5jICog
aiAqIDQpOworCisgICAgICAgIC8vIFNjYWxlIHRoZSByZWZlcmVuY2UgdGhlIHNhbWUgYXMgdGhl
IHdhdmVzaGFwaW5nIGN1cnZlIGl0c2VsZi4KKyAgICAgICAgcmVmZXJlbmNlICo9IGtTY2FsZTsK
KworICAgICAgICB2YXIgZGVsdGEgPSBNYXRoLmFicyhhY3R1YWwgLSByZWZlcmVuY2UpOworICAg
ICAgICB2YXIgZGVsdGFJbkRlY2liZWxzID0gZGVsdGEgPiAwID8gMjAgKiBNYXRoLmxvZyhkZWx0
YSkvTWF0aC5sb2coMTApIDogLTIwMDsKKworICAgICAgICBpZiAoaiA+PSBmaWx0ZXJTdGFiaWxp
emVTa2lwRnJhbWVzKSB7CisgICAgICAgICAgICBpZiAoZGVsdGFJbkRlY2liZWxzID4gd29yc3RE
ZWx0YUluRGVjaWJlbHMpIHsKKyAgICAgICAgICAgICAgICB3b3JzdERlbHRhSW5EZWNpYmVscyA9
IGRlbHRhSW5EZWNpYmVsczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAg
IC8vIGNvbnNvbGUubG9nKCJ3b3JzdERlbHRhSW5EZWNpYmVsczogIiArIHdvcnN0RGVsdGFJbkRl
Y2liZWxzKTsKKworICAgIHZhciBzdWNjZXNzID0gd29yc3REZWx0YUluRGVjaWJlbHMgPCBhY2Nl
cHRhYmxlQWxpYXNpbmdUaHJlc2hvbGREZWNpYmVsczsKKworICAgIGlmIChzdWNjZXNzKSB7Cisg
ICAgICAgIHRlc3RQYXNzZWQob3ZlcnNhbXBsZSArICIgV2F2ZVNoYXBlck5vZGUgb3ZlcnNhbXBs
aW5nIHdpdGhpbiBhY2NlcHRhYmxlIHRvbGVyYW5jZS4iKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICB0ZXN0RmFpbGVkKG92ZXJzYW1wbGUgKyAiIFdhdmVTaGFwZXJOb2RlIG92ZXJzYW1wbGluZyBu
b3Qgd2l0aGluIGFjY2VwdGFibGUgdG9sZXJhbmNlLiAgRXJyb3IgPSAiICsgd29yc3REZWx0YUlu
RGVjaWJlbHMgKyAiIGRCRlMiKTsKKyAgICB9CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwor
ZnVuY3Rpb24gY3JlYXRlSW1wdWxzZUJ1ZmZlcihjb250ZXh0LCBzYW1wbGVGcmFtZUxlbmd0aCkg
eworICAgIHZhciBhdWRpb0J1ZmZlciA9IGNvbnRleHQuY3JlYXRlQnVmZmVyKDEsIHNhbXBsZUZy
YW1lTGVuZ3RoLCBjb250ZXh0LnNhbXBsZVJhdGUpOworICAgIHZhciBuID0gYXVkaW9CdWZmZXIu
bGVuZ3RoOworICAgIHZhciBkYXRhTCA9IGF1ZGlvQnVmZmVyLmdldENoYW5uZWxEYXRhKDApOwor
CisgICAgZm9yICh2YXIgayA9IDA7IGsgPCBuOyArK2spCisgICAgICAgIGRhdGFMW2tdID0gMDsK
KworICAgIGRhdGFMWzBdID0gMTsKKworICAgIHJldHVybiBhdWRpb0J1ZmZlcjsKK30KKworZnVu
Y3Rpb24gcnVuV2F2ZVNoYXBlck92ZXJzYW1wbGluZ1Rlc3QodGVzdFBhcmFtcykgeworICAgIHNh
bXBsZVJhdGUgPSB0ZXN0UGFyYW1zLnNhbXBsZVJhdGU7CisgICAgbnlxdWlzdCA9IDAuNSAqIHNh
bXBsZVJhdGU7CisgICAgb3ZlcnNhbXBsZSA9IHRlc3RQYXJhbXMub3ZlcnNhbXBsZTsKKyAgICBm
dW5kYW1lbnRhbEZyZXF1ZW5jeSA9IHRlc3RQYXJhbXMuZnVuZGFtZW50YWxGcmVxdWVuY3k7Cisg
ICAgYWNjZXB0YWJsZUFsaWFzaW5nVGhyZXNob2xkRGVjaWJlbHMgPSB0ZXN0UGFyYW1zLmFjY2Vw
dGFibGVBbGlhc2luZ1RocmVzaG9sZERlY2liZWxzOworCisgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CisKKyAgICAvLyBDcmVhdGUgb2ZmbGluZSBhdWRpbyBjb250ZXh0LgorICAgIHZhciBu
dW1iZXJPZlJlbmRlckZyYW1lcyA9IHNhbXBsZVJhdGUgKiBsZW5ndGhJblNlY29uZHM7CisgICAg
Y29udGV4dCA9IG5ldyB3ZWJraXRPZmZsaW5lQXVkaW9Db250ZXh0KDEsIG51bWJlck9mUmVuZGVy
RnJhbWVzLCBzYW1wbGVSYXRlKTsKKworICAgIC8vIHNvdXJjZSAtPiB3YXZlc2hhcGVyIC0+IGRl
c3RpbmF0aW9uCisgICAgdmFyIHNvdXJjZSA9IGNvbnRleHQuY3JlYXRlQnVmZmVyU291cmNlKCk7
CisgICAgc291cmNlLmJ1ZmZlciA9IGNyZWF0ZVRvbmVCdWZmZXIoY29udGV4dCwgZnVuZGFtZW50
YWxGcmVxdWVuY3ksIGxlbmd0aEluU2Vjb25kcywgMSk7CisKKyAgICAvLyBBcHBseSBhIG5vbi1s
aW5lYXIgZGlzdG9ydGlvbiBjdXJ2ZS4KKyAgICB3YXZlc2hhcGVyID0gY29udGV4dC5jcmVhdGVX
YXZlU2hhcGVyKCk7CisgICAgd2F2ZXNoYXBlci5jdXJ2ZSA9IGdlbmVyYXRlV2F2ZVNoYXBpbmdD
dXJ2ZSgpOworICAgIHdhdmVzaGFwZXIub3ZlcnNhbXBsZSA9IG92ZXJzYW1wbGU7CisKKyAgICBz
b3VyY2UuY29ubmVjdCh3YXZlc2hhcGVyKTsKKyAgICB3YXZlc2hhcGVyLmNvbm5lY3QoY29udGV4
dC5kZXN0aW5hdGlvbik7CisKKyAgICBzb3VyY2Uuc3RhcnQoMCk7CisKKyAgICBjb250ZXh0Lm9u
Y29tcGxldGUgPSBjaGVja1NoYXBlZEN1cnZlOworICAgIGNvbnRleHQuc3RhcnRSZW5kZXJpbmco
KTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL3dhdmVzaGFwZXItb3ZlcnNh
bXBsZS0yeC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby93YXZlc2hhcGVyLW92
ZXJzYW1wbGUtMngtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmYTNlYWI0N2QxOWI2OGVmNmM4
YjJmYzkzMGNlOTFiNGMxYTA1YTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJh
dWRpby93YXZlc2hhcGVyLW92ZXJzYW1wbGUtMngtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBA
QAorVGVzdHMgMnggV2F2ZVNoYXBlck5vZGUgb3ZlcnNhbXBsaW5nLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKK1BBU1MgMnggV2F2ZVNoYXBlck5vZGUgb3ZlcnNhbXBsaW5nIHdpdGhp
biBhY2NlcHRhYmxlIHRvbGVyYW5jZS4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby93YXZl
c2hhcGVyLW92ZXJzYW1wbGUtMnguaHRtbCBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL3dhdmVzaGFw
ZXItb3ZlcnNhbXBsZS0yeC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2YmM2YzA0NTI0MzgzOTBkY2Y1ZGNi
YzFlYjQ0ZDVmOGQ0ZDliN2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRp
by93YXZlc2hhcGVyLW92ZXJzYW1wbGUtMnguaHRtbApAQCAtMCwwICsxLDM0IEBACis8IURPQ1RZ
UEUgaHRtbD4KKworPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgc3JjPSJyZXNvdXJjZXMvYXVkaW8tdGVzdGluZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJyZXNvdXJjZXMvbWl4LXRlc3RpbmcuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0icmVzb3VyY2VzL3dh
dmVzaGFwZXItdGVzdGluZy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorCis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNj
cmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyAyeCBXYXZlU2hhcGVyTm9kZSBvdmVyc2FtcGxpbmcu
Iik7CisKK3ZhciB0ZXN0UGFyYW1zID0geworICAgICJzYW1wbGVSYXRlIjogNDQxMDAsCisgICAg
Im92ZXJzYW1wbGUiOiAiMngiLAorCisgICAgLy8gU2hvdWxkIGdlbmVyYXRlIGhhcm1vbmljcyBh
dCA5MDAwLCAxODAwMCwgMjcwMDAsIDM2MDAwCisgICAgLy8gVGhlIGxhc3QgdHdvIHNob3VsZCBi
ZSBmaWx0ZXJlZCBvdXQgd2l0aCB0aGUgMnggb3ZlcnNhbXBsaW5nLgorICAgICJmdW5kYW1lbnRh
bEZyZXF1ZW5jeSI6IDkwMDAsCisgICAgImFjY2VwdGFibGVBbGlhc2luZ1RocmVzaG9sZERlY2li
ZWxzIjogLTg1Cit9OworcnVuV2F2ZVNoYXBlck92ZXJzYW1wbGluZ1Rlc3QodGVzdFBhcmFtcyk7
CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmF1ZGlvL3dhdmVzaGFwZXItb3ZlcnNhbXBsZS00eC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy93ZWJhdWRpby93YXZlc2hhcGVyLW92ZXJzYW1wbGUtNHgtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmM2N2Q4MjE1NTdkYzg0NjAyNmQ4ZWM5NDhhNDg2Yzk2YWIxYmE3ZTUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby93YXZlc2hhcGVyLW92ZXJzYW1w
bGUtNHgtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorVGVzdHMgNHggV2F2ZVNoYXBlck5v
ZGUgb3ZlcnNhbXBsaW5nLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgNHgg
V2F2ZVNoYXBlck5vZGUgb3ZlcnNhbXBsaW5nIHdpdGhpbiBhY2NlcHRhYmxlIHRvbGVyYW5jZS4K
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby93YXZlc2hhcGVyLW92ZXJzYW1wbGUtNHguaHRt
bCBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL3dhdmVzaGFwZXItb3ZlcnNhbXBsZS00eC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjcwODUxYmQ4ZGM4MzhlYWJlNGFlYzIwYTkwNjFlYmQ2YmMxOTkwNjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby93YXZlc2hhcGVyLW92ZXJzYW1wbGUt
NHguaHRtbApAQCAtMCwwICsxLDM0IEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJyZXNvdXJjZXMvYXVk
aW8tdGVzdGluZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJyZXNvdXJjZXMvbWl4LXRlc3RpbmcuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0icmVzb3VyY2VzL3dhdmVzaGFwZXItdGVzdGluZy5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorCis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0
cyA0eCBXYXZlU2hhcGVyTm9kZSBvdmVyc2FtcGxpbmcuIik7CisKK3ZhciB0ZXN0UGFyYW1zID0g
eworICAgICJzYW1wbGVSYXRlIjogNDQxMDAsCisgICAgIm92ZXJzYW1wbGUiOiAiNHgiLAorCisg
ICAgLy8gU2hvdWxkIGdlbmVyYXRlIGhhcm1vbmljcyBhdCAxODAwMCwgMzYwMDAsIDU0MDAwLCA3
MjAwMAorICAgIC8vIEFsbCBleGNlcHQgZm9yIDE4MDAwIHNob3VsZCBiZSBmaWx0ZXJlZCBvdXQg
d2l0aCB0aGUgNHggb3ZlcnNhbXBsaW5nLgorICAgICJmdW5kYW1lbnRhbEZyZXF1ZW5jeSI6IDE4
MDAwLAorICAgICJhY2NlcHRhYmxlQWxpYXNpbmdUaHJlc2hvbGREZWNpYmVscyI6IC04NQorfTsK
K3J1bldhdmVTaGFwZXJPdmVyc2FtcGxpbmdUZXN0KHRlc3RQYXJhbXMpOworCis8L3NjcmlwdD4K
KworPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206681</attachid>
            <date>2013-07-15 13:35:32 -0700</date>
            <delta_ts>2013-07-15 21:54:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-117435-20130715133447.patch</filename>
            <type>text/plain</type>
            <size>53501</size>
            <attacher name="Chris Rogers">crogers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUyNjUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2FmZmUyMDc3MjJhNGE3
YjYzNGZjMzkzYmZhMDg4NjUwYzliNmU5ZC4uMjYwMGQ3MmNhZjM0ZmYxNWQ3YWY0Zjk1ZWI5MjQy
NWY2NmFjMjA5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDEzLTA3LTE1ICBDaHJp
cyBSb2dlcnMgIDxjcm9nZXJzQGdvb2dsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IFdhdmVTaGFwZXJOb2RlLm92ZXJzYW1wbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExNzQzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkYXB0ZWQgZnJvbSBCbGluazoKKyAgICAgICAgaHR0cHM6Ly9j
b2RlcmV2aWV3LmNocm9taXVtLm9yZy8xNTYxOTAwMy8KKworICAgICAgICBQbGVhc2Ugc2VlIHNw
ZWNpZmljYXRpb24gZm9yIGRldGFpbHM6CisgICAgICAgIGh0dHBzOi8vZHZjcy53My5vcmcvaGcv
YXVkaW8vcmF3LWZpbGUvdGlwL3dlYmF1ZGlvL3NwZWNpZmljYXRpb24uaHRtbCNXYXZlU2hhcGVy
Tm9kZQorCisgICAgICAgIC5vdmVyc2FtcGxlIHNwZWNpZmllcyB3aGF0IHR5cGUgb2Ygb3ZlcnNh
bXBsaW5nIChpZiBhbnkpIHNob3VsZCBiZSB1c2VkIHdoZW4gYXBwbHlpbmcgdGhlIHNoYXBpbmcg
Y3VydmUuCisgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzICJub25lIiwgbWVhbmluZyB0aGUg
Y3VydmUgd2lsbCBiZSBhcHBsaWVkIGRpcmVjdGx5IHRvIHRoZSBpbnB1dCBzYW1wbGVzLgorICAg
ICAgICBBIHZhbHVlIG9mICIyeCIgb3IgIjR4IiBjYW4gaW1wcm92ZSB0aGUgcXVhbGl0eSBvZiB0
aGUgcHJvY2Vzc2luZyBieSBhdm9pZGluZyBzb21lIGFsaWFzaW5nLAorICAgICAgICB3aXRoIHRo
ZSAiNHgiIHZhbHVlIHlpZWxkaW5nIHRoZSBoaWdoZXN0IHF1YWxpdHkuCisKKyAgICAgICAgVGVz
dHM6IHdlYmF1ZGlvL3dhdmVzaGFwZXItb3ZlcnNhbXBsZS0yeC5odG1sCisgICAgICAgICAgICAg
ICB3ZWJhdWRpby93YXZlc2hhcGVyLW92ZXJzYW1wbGUtNHguaHRtbAorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2F2ZVNoYXBlckRTUEtlcm5lbDo6V2F2ZVNoYXBlckRTUEtlcm5lbCk6CisgICAgICAgIChX
ZWJDb3JlOjpXYXZlU2hhcGVyRFNQS2VybmVsOjpsYXp5SW5pdGlhbGl6ZU92ZXJzYW1wbGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpXYXZlU2hhcGVyRFNQS2VybmVsOjpwcm9jZXNzKToKKyAgICAg
ICAgKFdlYkNvcmU6OldhdmVTaGFwZXJEU1BLZXJuZWw6OnByb2Nlc3NDdXJ2ZSk6CisgICAgICAg
IChXZWJDb3JlOjpXYXZlU2hhcGVyRFNQS2VybmVsOjpwcm9jZXNzQ3VydmUyeCk6CisgICAgICAg
IChXZWJDb3JlOjpXYXZlU2hhcGVyRFNQS2VybmVsOjpwcm9jZXNzQ3VydmU0eCk6CisgICAgICAg
IChXZWJDb3JlOjpXYXZlU2hhcGVyRFNQS2VybmVsOjpyZXNldCk6CisgICAgICAgIChXZWJDb3Jl
OjpXYXZlU2hhcGVyRFNQS2VybmVsOjpsYXRlbmN5VGltZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9XYXZlU2hhcGVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXYXZlU2hhcGVyTm9kZTo6
V2F2ZVNoYXBlck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6V2F2ZVNoYXBlck5vZGU6OnNldE92
ZXJzYW1wbGUpOgorICAgICAgICAoV2ViQ29yZTo6V2F2ZVNoYXBlck5vZGU6Om92ZXJzYW1wbGUp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OldhdmVTaGFwZXJOb2RlOjpsYXRlbmN5KToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dh
dmVTaGFwZXJQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2F2ZVNoYXBlclByb2Nl
c3Nvcjo6V2F2ZVNoYXBlclByb2Nlc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpXYXZlU2hhcGVy
UHJvY2Vzc29yOjpzZXRPdmVyc2FtcGxlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dh
dmVTaGFwZXJQcm9jZXNzb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OldhdmVTaGFwZXJQcm9jZXNz
b3I6Om92ZXJzYW1wbGUpOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Eb3duU2FtcGxlci5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RG93blNhbXBsZXI6OkRvd25TYW1wbGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvd25TYW1wbGVyOjppbml0aWFsaXplS2VybmVsKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvd25TYW1wbGVyOjpwcm9jZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvd25TYW1wbGVyOjpy
ZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpEb3duU2FtcGxlcjo6bGF0ZW5jeUZyYW1lcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vRG93blNhbXBsZXIuaDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vVXBTYW1wbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpV
cFNhbXBsZXI6OlVwU2FtcGxlcik6CisgICAgICAgIChXZWJDb3JlOjpVcFNhbXBsZXI6OmluaXRp
YWxpemVLZXJuZWwpOgorICAgICAgICAoV2ViQ29yZTo6VXBTYW1wbGVyOjpwcm9jZXNzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlVwU2FtcGxlcjo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6VXBT
YW1wbGVyOjpsYXRlbmN5RnJhbWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9VcFNhbXBs
ZXIuaDogQWRkZWQuCisKIDIwMTMtMDctMTUgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxl
LmNvbT4KIAogICAgICAgICBUZXh0IHdpdGggInRleHQtb3ZlcmZsb3c6ZWxsaXBzaXMiIGFuZCBh
biBTVkcgZm9udCBkbyBub3QgcmVuZGVyIGNvcnJlY3RseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCBiZjBlOTYyZTE1N2MyMGFmODQ4MTE5ZGQ3OWIxZmJjZmM0MTNlNjZmLi5jMjI3OTM1ZTA1MmNm
NmNmNGJiY2U1OGRhMGY3YjBjZTAyNTY4Njk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTg3
MCw2ICsxODcwLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2F1ZGlvL0Nv
bmUuY3BwCiAgICAgcGxhdGZvcm0vYXVkaW8vRGlyZWN0Q29udm9sdmVyLmNwcAogICAgIHBsYXRm
b3JtL2F1ZGlvL0Rpc3RhbmNlLmNwcAorICAgIHBsYXRmb3JtL2F1ZGlvL0Rvd25TYW1wbGVyLmNw
cAogICAgIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAKICAgICBwbGF0Zm9y
bS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwCiAgICAgcGxhdGZvcm0vYXVkaW8v
RXF1YWxQb3dlclBhbm5lci5jcHAKQEAgLTE4ODgsNiArMTg4OSw3IEBAIHNldChXZWJDb3JlX1NP
VVJDRVMKICAgICBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5jcHAKICAgICBw
bGF0Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5jcHAKICAgICBwbGF0Zm9ybS9hdWRpby9T
aW5jUmVzYW1wbGVyLmNwcAorICAgIHBsYXRmb3JtL2F1ZGlvL1VwU2FtcGxlci5jcHAKICAgICBw
bGF0Zm9ybS9hdWRpby9WZWN0b3JNYXRoLmNwcAogICAgIHBsYXRmb3JtL2F1ZGlvL1plcm9Qb2xl
LmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBmZTkzZTE5ZWYwMDc4ZTVh
OGE3YTY3MmNjYmYzYTRmYzRiMjI5NmJlLi5kZTYwMDVlMGRiNWE4ZDZhNjMyNDk4NTBmZjk0YWY2
YWQwMGZmMDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTU2MzEsNiArNTYz
MSw4IEBAIHBsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0RpcmVjdENvbnZvbHZlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9E
aXN0YW5jZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rpc3RhbmNlLmgg
XAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rvd25TYW1wbGVyLmNwcCBcCisJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRG93blNhbXBsZXIuaCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oIFwKQEAgLTU2
NTYsNiArNTY1OCw4IEBAIHBsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9TaW5jUmVzYW1wbGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Vw
U2FtcGxlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1VwU2FtcGxlci5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9WZWN0b3JNYXRoLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vVmVjdG9yTWF0aC5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAKaW5kZXggNWYzY2Yz
NDc2MjMwZWMwNDJiOTE1M2MxZTMzOGM1NzU3YTFiYTgzZS4uNDMxM2YwZDY0MjM4ZmM1YzkzMDA0
NjY3NjQwNTdmNTk5ZjYzMmM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwCkBAIC0zMCwxMyArMzAsNTYgQEAK
IAogI2luY2x1ZGUgIldhdmVTaGFwZXJQcm9jZXNzb3IuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+
CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+
CisKK2NvbnN0IHVuc2lnbmVkIFJlbmRlcmluZ1F1YW50dW0gPSAxMjg7CiAKIHVzaW5nIG5hbWVz
cGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorV2F2ZVNoYXBlckRTUEtlcm5lbDo6
V2F2ZVNoYXBlckRTUEtlcm5lbChXYXZlU2hhcGVyUHJvY2Vzc29yKiBwcm9jZXNzb3IpCisgICAg
OiBBdWRpb0RTUEtlcm5lbChwcm9jZXNzb3IpCit7CisgICAgaWYgKHByb2Nlc3Nvci0+b3ZlcnNh
bXBsZSgpICE9IFdhdmVTaGFwZXJQcm9jZXNzb3I6Ok92ZXJTYW1wbGVOb25lKQorICAgICAgICBs
YXp5SW5pdGlhbGl6ZU92ZXJzYW1wbGluZygpOworfQorCit2b2lkIFdhdmVTaGFwZXJEU1BLZXJu
ZWw6OmxhenlJbml0aWFsaXplT3ZlcnNhbXBsaW5nKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworCisgICAgaWYgKCFtX3RlbXBCdWZmZXIpIHsKKyAgICAgICAgbV90ZW1wQnVmZmVy
ID0gYWRvcHRQdHIobmV3IEF1ZGlvRmxvYXRBcnJheShSZW5kZXJpbmdRdWFudHVtICogMikpOwor
ICAgICAgICBtX3RlbXBCdWZmZXIyID0gYWRvcHRQdHIobmV3IEF1ZGlvRmxvYXRBcnJheShSZW5k
ZXJpbmdRdWFudHVtICogNCkpOworICAgICAgICBtX3VwU2FtcGxlciA9IGFkb3B0UHRyKG5ldyBV
cFNhbXBsZXIoUmVuZGVyaW5nUXVhbnR1bSkpOworICAgICAgICBtX2Rvd25TYW1wbGVyID0gYWRv
cHRQdHIobmV3IERvd25TYW1wbGVyKFJlbmRlcmluZ1F1YW50dW0gKiAyKSk7CisgICAgICAgIG1f
dXBTYW1wbGVyMiA9IGFkb3B0UHRyKG5ldyBVcFNhbXBsZXIoUmVuZGVyaW5nUXVhbnR1bSAqIDIp
KTsKKyAgICAgICAgbV9kb3duU2FtcGxlcjIgPSBhZG9wdFB0cihuZXcgRG93blNhbXBsZXIoUmVu
ZGVyaW5nUXVhbnR1bSAqIDQpKTsKKyAgICB9Cit9CisKIHZvaWQgV2F2ZVNoYXBlckRTUEtlcm5l
bDo6cHJvY2Vzcyhjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHNpemVf
dCBmcmFtZXNUb1Byb2Nlc3MpCiB7CisgICAgc3dpdGNoICh3YXZlU2hhcGVyUHJvY2Vzc29yKCkt
Pm92ZXJzYW1wbGUoKSkgeworICAgIGNhc2UgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6T3ZlclNhbXBs
ZU5vbmU6CisgICAgICAgIHByb2Nlc3NDdXJ2ZShzb3VyY2UsIGRlc3RpbmF0aW9uLCBmcmFtZXNU
b1Byb2Nlc3MpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdhdmVTaGFwZXJQcm9jZXNzb3I6
Ok92ZXJTYW1wbGUyeDoKKyAgICAgICAgcHJvY2Vzc0N1cnZlMngoc291cmNlLCBkZXN0aW5hdGlv
biwgZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXYXZlU2hhcGVy
UHJvY2Vzc29yOjpPdmVyU2FtcGxlNHg6CisgICAgICAgIHByb2Nlc3NDdXJ2ZTR4KHNvdXJjZSwg
ZGVzdGluYXRpb24sIGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgICAgIGJyZWFrOworCisgICAgZGVm
YXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCit2b2lkIFdh
dmVTaGFwZXJEU1BLZXJuZWw6OnByb2Nlc3NDdXJ2ZShjb25zdCBmbG9hdCogc291cmNlLCBmbG9h
dCogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCit7CiAgICAgQVNTRVJUKHNv
dXJjZSAmJiBkZXN0aW5hdGlvbiAmJiB3YXZlU2hhcGVyUHJvY2Vzc29yKCkpOwogCiAgICAgRmxv
YXQzMkFycmF5KiBjdXJ2ZSA9IHdhdmVTaGFwZXJQcm9jZXNzb3IoKS0+Y3VydmUoKTsKQEAgLTYw
LDE3ICsxMDMsMTA2IEBAIHZvaWQgV2F2ZVNoYXBlckRTUEtlcm5lbDo6cHJvY2Vzcyhjb25zdCBm
bG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHNpemVfCiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGZyYW1lc1RvUHJvY2VzczsgKytpKSB7CiAgICAgICAgIGNvbnN0IGZsb2F0
IGlucHV0ID0gc291cmNlW2ldOwogCi0gICAgICAgIC8vIENhbGN1bGF0ZSBhbiBpbmRleCBiYXNl
ZCBvbiBpbnB1dCAtMSAtPiArMSB3aXRoIDAgYmVpbmcgYXQgdGhlIGNlbnRlciBvZiB0aGUgY3Vy
dmUgZGF0YS4KLSAgICAgICAgaW50IGluZGV4ID0gKGN1cnZlTGVuZ3RoICogKGlucHV0ICsgMSkp
IC8gMjsKKyAgICAgICAgLy8gQ2FsY3VsYXRlIGEgdmlydHVhbCBpbmRleCBiYXNlZCBvbiBpbnB1
dCAtMSAtPiArMSB3aXRoIDAgYmVpbmcgYXQgdGhlIGNlbnRlciBvZiB0aGUgY3VydmUgZGF0YS4K
KyAgICAgICAgLy8gVGhlbiBsaW5lYXJseSBpbnRlcnBvbGF0ZSBiZXR3ZWVuIHRoZSB0d28gcG9p
bnRzIGluIHRoZSBjdXJ2ZS4KKyAgICAgICAgZG91YmxlIHZpcnR1YWxJbmRleCA9IDAuNSAqIChp
bnB1dCArIDEpICogY3VydmVMZW5ndGg7CisgICAgICAgIGludCBpbmRleDEgPSBzdGF0aWNfY2Fz
dDxpbnQ+KHZpcnR1YWxJbmRleCk7CisgICAgICAgIGludCBpbmRleDIgPSBpbmRleDEgKyAxOwor
ICAgICAgICBkb3VibGUgaW50ZXJwb2xhdGlvbkZhY3RvciA9IHZpcnR1YWxJbmRleCAtIGluZGV4
MTsKIAogICAgICAgICAvLyBDbGlwIGluZGV4IHRvIHRoZSBpbnB1dCByYW5nZSBvZiB0aGUgY3Vy
dmUuCiAgICAgICAgIC8vIFRoaXMgdGFrZXMgY2FyZSBvZiBpbnB1dCBvdXRzaWRlIG9mIG5vbWlu
YWwgcmFuZ2UgLTEgLT4gKzEKLSAgICAgICAgaW5kZXggPSBtYXgoaW5kZXgsIDApOwotICAgICAg
ICBpbmRleCA9IG1pbihpbmRleCwgY3VydmVMZW5ndGggLSAxKTsKLSAgICAgICAgZGVzdGluYXRp
b25baV0gPSBjdXJ2ZURhdGFbaW5kZXhdOworICAgICAgICBpbmRleDEgPSBtYXgoaW5kZXgxLCAw
KTsKKyAgICAgICAgaW5kZXgxID0gbWluKGluZGV4MSwgY3VydmVMZW5ndGggLSAxKTsKKyAgICAg
ICAgaW5kZXgyID0gbWF4KGluZGV4MiwgMCk7CisgICAgICAgIGluZGV4MiA9IG1pbihpbmRleDIs
IGN1cnZlTGVuZ3RoIC0gMSk7CisKKyAgICAgICAgZG91YmxlIHZhbHVlMSA9IGN1cnZlRGF0YVtp
bmRleDFdOworICAgICAgICBkb3VibGUgdmFsdWUyID0gY3VydmVEYXRhW2luZGV4Ml07CisKKyAg
ICAgICAgZG91YmxlIG91dHB1dCA9ICgxLjAgLSBpbnRlcnBvbGF0aW9uRmFjdG9yKSAqIHZhbHVl
MSArIGludGVycG9sYXRpb25GYWN0b3IgKiB2YWx1ZTI7CisgICAgICAgIGRlc3RpbmF0aW9uW2ld
ID0gb3V0cHV0OwogICAgIH0KIH0KIAordm9pZCBXYXZlU2hhcGVyRFNQS2VybmVsOjpwcm9jZXNz
Q3VydmUyeChjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHNpemVfdCBm
cmFtZXNUb1Byb2Nlc3MpCit7CisgICAgYm9vbCBpc1NhZmUgPSBmcmFtZXNUb1Byb2Nlc3MgPT0g
UmVuZGVyaW5nUXVhbnR1bTsKKyAgICBBU1NFUlQoaXNTYWZlKTsKKyAgICBpZiAoIWlzU2FmZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgZmxvYXQqIHRlbXBQID0gbV90ZW1wQnVmZmVyLT5kYXRh
KCk7CisKKyAgICBtX3VwU2FtcGxlci0+cHJvY2Vzcyhzb3VyY2UsIHRlbXBQLCBmcmFtZXNUb1By
b2Nlc3MpOworCisgICAgLy8gUHJvY2VzcyBhdCAyeCB1cC1zYW1wbGVkIHJhdGUuCisgICAgcHJv
Y2Vzc0N1cnZlKHRlbXBQLCB0ZW1wUCwgZnJhbWVzVG9Qcm9jZXNzICogMik7CisKKyAgICBtX2Rv
d25TYW1wbGVyLT5wcm9jZXNzKHRlbXBQLCBkZXN0aW5hdGlvbiwgZnJhbWVzVG9Qcm9jZXNzICog
Mik7Cit9CisKK3ZvaWQgV2F2ZVNoYXBlckRTUEtlcm5lbDo6cHJvY2Vzc0N1cnZlNHgoY29uc3Qg
ZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNz
KQoreworICAgIGJvb2wgaXNTYWZlID0gZnJhbWVzVG9Qcm9jZXNzID09IFJlbmRlcmluZ1F1YW50
dW07CisgICAgQVNTRVJUKGlzU2FmZSk7CisgICAgaWYgKCFpc1NhZmUpCisgICAgICAgIHJldHVy
bjsKKworICAgIGZsb2F0KiB0ZW1wUCA9IG1fdGVtcEJ1ZmZlci0+ZGF0YSgpOworICAgIGZsb2F0
KiB0ZW1wUDIgPSBtX3RlbXBCdWZmZXIyLT5kYXRhKCk7CisKKyAgICBtX3VwU2FtcGxlci0+cHJv
Y2Vzcyhzb3VyY2UsIHRlbXBQLCBmcmFtZXNUb1Byb2Nlc3MpOworICAgIG1fdXBTYW1wbGVyMi0+
cHJvY2Vzcyh0ZW1wUCwgdGVtcFAyLCBmcmFtZXNUb1Byb2Nlc3MgKiAyKTsKKworICAgIC8vIFBy
b2Nlc3MgYXQgNHggdXAtc2FtcGxlZCByYXRlLgorICAgIHByb2Nlc3NDdXJ2ZSh0ZW1wUDIsIHRl
bXBQMiwgZnJhbWVzVG9Qcm9jZXNzICogNCk7CisKKyAgICBtX2Rvd25TYW1wbGVyMi0+cHJvY2Vz
cyh0ZW1wUDIsIHRlbXBQLCBmcmFtZXNUb1Byb2Nlc3MgKiA0KTsKKyAgICBtX2Rvd25TYW1wbGVy
LT5wcm9jZXNzKHRlbXBQLCBkZXN0aW5hdGlvbiwgZnJhbWVzVG9Qcm9jZXNzICogMik7Cit9CisK
K3ZvaWQgV2F2ZVNoYXBlckRTUEtlcm5lbDo6cmVzZXQoKQoreworICAgIGlmIChtX3VwU2FtcGxl
cikgeworICAgICAgICBtX3VwU2FtcGxlci0+cmVzZXQoKTsKKyAgICAgICAgbV9kb3duU2FtcGxl
ci0+cmVzZXQoKTsKKyAgICAgICAgbV91cFNhbXBsZXIyLT5yZXNldCgpOworICAgICAgICBtX2Rv
d25TYW1wbGVyMi0+cmVzZXQoKTsKKyAgICB9Cit9CisKK2RvdWJsZSBXYXZlU2hhcGVyRFNQS2Vy
bmVsOjpsYXRlbmN5VGltZSgpIGNvbnN0Cit7CisgICAgc2l6ZV90IGxhdGVuY3lGcmFtZXMgPSAw
OworICAgIFdhdmVTaGFwZXJEU1BLZXJuZWwqIGtlcm5lbCA9IGNvbnN0X2Nhc3Q8V2F2ZVNoYXBl
ckRTUEtlcm5lbCo+KHRoaXMpOworCisgICAgc3dpdGNoIChrZXJuZWwtPndhdmVTaGFwZXJQcm9j
ZXNzb3IoKS0+b3ZlcnNhbXBsZSgpKSB7CisgICAgY2FzZSBXYXZlU2hhcGVyUHJvY2Vzc29yOjpP
dmVyU2FtcGxlTm9uZToKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXYXZlU2hhcGVyUHJvY2Vz
c29yOjpPdmVyU2FtcGxlMng6CisgICAgICAgIGxhdGVuY3lGcmFtZXMgKz0gbV91cFNhbXBsZXIt
PmxhdGVuY3lGcmFtZXMoKTsKKyAgICAgICAgbGF0ZW5jeUZyYW1lcyArPSBtX2Rvd25TYW1wbGVy
LT5sYXRlbmN5RnJhbWVzKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2F2ZVNoYXBlclBy
b2Nlc3Nvcjo6T3ZlclNhbXBsZTR4OgorICAgICAgICB7CisgICAgICAgICAgICAvLyBBY2NvdW50
IGZvciBmaXJzdCBzdGFnZSB1cHNhbXBsaW5nLgorICAgICAgICAgICAgbGF0ZW5jeUZyYW1lcyAr
PSBtX3VwU2FtcGxlci0+bGF0ZW5jeUZyYW1lcygpOworICAgICAgICAgICAgbGF0ZW5jeUZyYW1l
cyArPSBtX2Rvd25TYW1wbGVyLT5sYXRlbmN5RnJhbWVzKCk7CisKKyAgICAgICAgICAgIC8vIEFj
Y291bnQgZm9yIHNlY29uZCBzdGFnZSB1cHNhbXBsaW5nLgorICAgICAgICAgICAgLy8gYW5kIGRp
dmlkZSBieSAyIHRvIGdldCBiYWNrIGRvd24gdG8gdGhlIHJlZ3VsYXIgc2FtcGxlLXJhdGUuCisg
ICAgICAgICAgICBzaXplX3QgbGF0ZW5jeUZyYW1lczIgPSAobV91cFNhbXBsZXIyLT5sYXRlbmN5
RnJhbWVzKCkgKyBtX2Rvd25TYW1wbGVyMi0+bGF0ZW5jeUZyYW1lcygpKSAvIDI7CisgICAgICAg
ICAgICBsYXRlbmN5RnJhbWVzICs9IGxhdGVuY3lGcmFtZXMyOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICB9CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihsYXRlbmN5RnJhbWVzKSAv
IHNhbXBsZVJhdGUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmgKaW5kZXggNTIzMjJhZjc1YWVkMjIwM2VhZWU3OGRj
OTBkYTQ1ODVmNjY0YTk1Ni4uYzE4OGM1NzFmNTYyMDk1YmU5NGU5M2Q1NWI3MzA0MTFmODlkOWIx
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVy
RFNQS2VybmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hh
cGVyRFNQS2VybmVsLmgKQEAgLTI1LDggKzI1LDEyIEBACiAjaWZuZGVmIFdhdmVTaGFwZXJEU1BL
ZXJuZWxfaAogI2RlZmluZSBXYXZlU2hhcGVyRFNQS2VybmVsX2gKIAorI2luY2x1ZGUgIkF1ZGlv
QXJyYXkuaCIKICNpbmNsdWRlICJBdWRpb0RTUEtlcm5lbC5oIgorI2luY2x1ZGUgIkRvd25TYW1w
bGVyLmgiCisjaW5jbHVkZSAiVXBTYW1wbGVyLmgiCiAjaW5jbHVkZSAiV2F2ZVNoYXBlclByb2Nl
c3Nvci5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC0zNSwyMCArMzksMzUgQEAgY2xhc3MgV2F2ZVNoYXBlclByb2Nlc3NvcjsKIC8vIFdhdmVT
aGFwZXJEU1BLZXJuZWwgaXMgYW4gQXVkaW9EU1BLZXJuZWwgYW5kIGlzIHJlc3BvbnNpYmxlIGZv
ciBub24tbGluZWFyIGRpc3RvcnRpb24gb24gb25lIGNoYW5uZWwuCiAKIGNsYXNzIFdhdmVTaGFw
ZXJEU1BLZXJuZWwgOiBwdWJsaWMgQXVkaW9EU1BLZXJuZWwgewotcHVibGljOiAgCi0gICAgZXhw
bGljaXQgV2F2ZVNoYXBlckRTUEtlcm5lbChXYXZlU2hhcGVyUHJvY2Vzc29yKiBwcm9jZXNzb3Ip
Ci0gICAgOiBBdWRpb0RTUEtlcm5lbChwcm9jZXNzb3IpCi0gICAgewotICAgIH0KLSAgICAKK3B1
YmxpYzoKKyAgICBleHBsaWNpdCBXYXZlU2hhcGVyRFNQS2VybmVsKFdhdmVTaGFwZXJQcm9jZXNz
b3IqKTsKKwogICAgIC8vIEF1ZGlvRFNQS2VybmVsCiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3Mo
Y29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3QsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3Mp
OwotICAgIHZpcnR1YWwgdm9pZCByZXNldCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZXNldCgp
OwogICAgIHZpcnR1YWwgZG91YmxlIHRhaWxUaW1lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
MDsgfQotICAgIHZpcnR1YWwgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gMDsgfQotICAgIAorICAgIHZpcnR1YWwgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qg
T1ZFUlJJREU7CisKKyAgICAvLyBPdmVyc2FtcGxpbmcgcmVxdWlyZXMgbW9yZSByZXNvdXJjZXMs
IHNvIGxldCdzIG9ubHkgYWxsb2NhdGUgdGhlbSBpZiBuZWVkZWQuCisgICAgdm9pZCBsYXp5SW5p
dGlhbGl6ZU92ZXJzYW1wbGluZygpOworCiBwcm90ZWN0ZWQ6CisgICAgLy8gQXBwbHkgdGhlIHNo
YXBpbmcgY3VydmUuCisgICAgdm9pZCBwcm9jZXNzQ3VydmUoY29uc3QgZmxvYXQqIHNvdXJjZSwg
ZmxvYXQqIGRlc3QsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOworCisgICAgLy8gVXNlIHVwLXNh
bXBsaW5nLCBwcm9jZXNzIGF0IHRoZSBoaWdoZXIgc2FtcGxlLXJhdGUsIHRoZW4gZG93bi1zYW1w
bGUuCisgICAgdm9pZCBwcm9jZXNzQ3VydmUyeChjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCog
ZGVzdCwgc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgdm9pZCBwcm9jZXNzQ3VydmU0eChj
b25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdCwgc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7
CisKICAgICBXYXZlU2hhcGVyUHJvY2Vzc29yKiB3YXZlU2hhcGVyUHJvY2Vzc29yKCkgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8V2F2ZVNoYXBlclByb2Nlc3Nvcio+KHByb2Nlc3NvcigpKTsgfQorCisg
ICAgLy8gT3ZlcnNhbXBsaW5nLgorICAgIE93blB0cjxBdWRpb0Zsb2F0QXJyYXk+IG1fdGVtcEJ1
ZmZlcjsKKyAgICBPd25QdHI8QXVkaW9GbG9hdEFycmF5PiBtX3RlbXBCdWZmZXIyOworICAgIE93
blB0cjxVcFNhbXBsZXI+IG1fdXBTYW1wbGVyOworICAgIE93blB0cjxEb3duU2FtcGxlcj4gbV9k
b3duU2FtcGxlcjsKKyAgICBPd25QdHI8VXBTYW1wbGVyPiBtX3VwU2FtcGxlcjI7CisgICAgT3du
UHRyPERvd25TYW1wbGVyPiBtX2Rvd25TYW1wbGVyMjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNo
YXBlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVy
Tm9kZS5jcHAKaW5kZXggMDM1MDRlNzc3NjA1ZjcyYTIxODI2ZjlhMWIzZmEwMTQwNGNkYTcwZC4u
ODg1ODMyNzg0ZTljNDk5OTI2MDYwNjY2OWRhOGYwNjk4NzYzZWE1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAKQEAgLTI3LDYg
KzI3LDggQEAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQogCiAjaW5jbHVkZSAiV2F2ZVNoYXBlck5v
ZGUuaCIKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNiw2ICszOCw4IEBAIFdhdmVTaGFw
ZXJOb2RlOjpXYXZlU2hhcGVyTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgbV9w
cm9jZXNzb3IgPSBhZG9wdFB0cihuZXcgV2F2ZVNoYXBlclByb2Nlc3Nvcihjb250ZXh0LT5zYW1w
bGVSYXRlKCksIDEpKTsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZVdhdmVTaGFwZXIpOworCisg
ICAgaW5pdGlhbGl6ZSgpOwogfQogCiB2b2lkIFdhdmVTaGFwZXJOb2RlOjpzZXRDdXJ2ZShGbG9h
dDMyQXJyYXkqIGN1cnZlKQpAQCAtNDksNiArNTMsMzggQEAgRmxvYXQzMkFycmF5KiBXYXZlU2hh
cGVyTm9kZTo6Y3VydmUoKQogICAgIHJldHVybiB3YXZlU2hhcGVyUHJvY2Vzc29yKCktPmN1cnZl
KCk7CiB9CiAKK3ZvaWQgV2F2ZVNoYXBlck5vZGU6OnNldE92ZXJzYW1wbGUoY29uc3QgU3RyaW5n
JiB0eXBlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworCisgICAgLy8gU3luY2hyb25pemUgd2l0aCBhbnkgZ3JhcGggY2hhbmdlcyBvciBjaGFuZ2Vz
IHRvIGNoYW5uZWwgY29uZmlndXJhdGlvbi4KKyAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIg
Y29udGV4dExvY2tlcihjb250ZXh0KCkpOworCisgICAgaWYgKHR5cGUgPT0gIm5vbmUiKQorICAg
ICAgICB3YXZlU2hhcGVyUHJvY2Vzc29yKCktPnNldE92ZXJzYW1wbGUoV2F2ZVNoYXBlclByb2Nl
c3Nvcjo6T3ZlclNhbXBsZU5vbmUpOworICAgIGVsc2UgaWYgKHR5cGUgPT0gIjJ4IikKKyAgICAg
ICAgd2F2ZVNoYXBlclByb2Nlc3NvcigpLT5zZXRPdmVyc2FtcGxlKFdhdmVTaGFwZXJQcm9jZXNz
b3I6Ok92ZXJTYW1wbGUyeCk7CisgICAgZWxzZSBpZiAodHlwZSA9PSAiNHgiKQorICAgICAgICB3
YXZlU2hhcGVyUHJvY2Vzc29yKCktPnNldE92ZXJzYW1wbGUoV2F2ZVNoYXBlclByb2Nlc3Nvcjo6
T3ZlclNhbXBsZTR4KTsKKyAgICBlbHNlCisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7
Cit9CisKK1N0cmluZyBXYXZlU2hhcGVyTm9kZTo6b3ZlcnNhbXBsZSgpIGNvbnN0Cit7CisgICAg
c3dpdGNoIChjb25zdF9jYXN0PFdhdmVTaGFwZXJOb2RlKj4odGhpcyktPndhdmVTaGFwZXJQcm9j
ZXNzb3IoKS0+b3ZlcnNhbXBsZSgpKSB7CisgICAgY2FzZSBXYXZlU2hhcGVyUHJvY2Vzc29yOjpP
dmVyU2FtcGxlTm9uZToKKyAgICAgICAgcmV0dXJuICJub25lIjsKKyAgICBjYXNlIFdhdmVTaGFw
ZXJQcm9jZXNzb3I6Ok92ZXJTYW1wbGUyeDoKKyAgICAgICAgcmV0dXJuICIyeCI7CisgICAgY2Fz
ZSBXYXZlU2hhcGVyUHJvY2Vzc29yOjpPdmVyU2FtcGxlNHg6CisgICAgICAgIHJldHVybiAiNHgi
OworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm4gIm5vbmUiOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2F2ZVNoYXBlck5vZGUuaAppbmRleCBmMmVmNmRhMjIxNjc2Y2FhYzdjZTBjNGQyZTcx
MmI2NWMwN2VlMDU4Li5jYjY1MzcyYTE3MTY4NTQ3MjEzMjdhYmNiODVhMzFmNGMwOWE2NWU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5o
CkBAIC00Myw2ICs0MywxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDdXJ2ZShGbG9hdDMyQXJy
YXkqKTsKICAgICBGbG9hdDMyQXJyYXkqIGN1cnZlKCk7CiAKKyAgICB2b2lkIHNldE92ZXJzYW1w
bGUoY29uc3QgU3RyaW5nJiAsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBTdHJpbmcgb3ZlcnNhbXBs
ZSgpIGNvbnN0OworCisgICAgZG91YmxlIGxhdGVuY3koKSBjb25zdCB7IHJldHVybiBsYXRlbmN5
VGltZSgpOyB9CisKIHByaXZhdGU6ICAgIAogICAgIGV4cGxpY2l0IFdhdmVTaGFwZXJOb2RlKEF1
ZGlvQ29udGV4dCopOyAgICAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1dhdmVTaGFwZXJOb2RlLmlkbAppbmRleCAzNTc0MGIxN2YxNGQ2MTBiNDgzODRkOGQ5ZGQ4
YjQ4ZGMxYzE4YTEzLi44YTM3NzUzNmNmNTdiMGVjMzZhN2JiN2EyZWEwYTU4OTI3OWRjMjg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2Rl
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2Rl
LmlkbApAQCAtMjIsOSArMjIsMTYgQEAKICAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKK2VudW0gT3ZlclNhbXBsZVR5
cGUgeworICAgICJub25lIiwKKyAgICAiMngiLAorICAgICI0eCIKK307CisKIFsKICAgICBDb25k
aXRpb25hbD1XRUJfQVVESU8sCiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QKIF0gaW50ZXJmYWNl
IFdhdmVTaGFwZXJOb2RlIDogQXVkaW9Ob2RlIHsKICAgICBhdHRyaWJ1dGUgRmxvYXQzMkFycmF5
IGN1cnZlOworICAgIFtTZXR0ZXJSYWlzZXNFeGNlcHRpb25dIGF0dHJpYnV0ZSBPdmVyU2FtcGxl
VHlwZSBvdmVyc2FtcGxlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCmluZGV4IDVjYWYzNmExNTIwYWUwYWE3
M2U3ZDBmMDQyZTgyZjU1NjcyM2FjNzguLjZjYTVkYzU4NTE0MjEzNGE0NDlhM2Q2ZGViNmE5NzY1
NjY3YTY5YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2
ZVNoYXBlclByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgCiBXYXZlU2hhcGVyUHJvY2Vzc29yOjpXYXZlU2hhcGVyUHJvY2Vzc29yKGZs
b2F0IHNhbXBsZVJhdGUsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzKQogICAgIDogQXVkaW9EU1BL
ZXJuZWxQcm9jZXNzb3Ioc2FtcGxlUmF0ZSwgbnVtYmVyT2ZDaGFubmVscykKKyAgICAsIG1fb3Zl
cnNhbXBsZShPdmVyU2FtcGxlTm9uZSkKIHsKIH0KIApAQCAtNTYsNiArNTcsMjEgQEAgdm9pZCBX
YXZlU2hhcGVyUHJvY2Vzc29yOjpzZXRDdXJ2ZShGbG9hdDMyQXJyYXkqIGN1cnZlKQogICAgIG1f
Y3VydmUgPSBjdXJ2ZTsKIH0KIAordm9pZCBXYXZlU2hhcGVyUHJvY2Vzc29yOjpzZXRPdmVyc2Ft
cGxlKE92ZXJTYW1wbGVUeXBlIG92ZXJzYW1wbGUpCit7CisgICAgLy8gVGhpcyBzeW5jaHJvbml6
ZXMgd2l0aCBwcm9jZXNzKCkuCisgICAgTXV0ZXhMb2NrZXIgcHJvY2Vzc0xvY2tlcihtX3Byb2Nl
c3NMb2NrKTsKKworICAgIG1fb3ZlcnNhbXBsZSA9IG92ZXJzYW1wbGU7CisKKyAgICBpZiAob3Zl
cnNhbXBsZSAhPSBPdmVyU2FtcGxlTm9uZSkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9rZXJuZWxzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBXYXZlU2hhcGVyRFNQ
S2VybmVsKiBrZXJuZWwgPSBzdGF0aWNfY2FzdDxXYXZlU2hhcGVyRFNQS2VybmVsKj4obV9rZXJu
ZWxzW2ldLmdldCgpKTsKKyAgICAgICAgICAgIGtlcm5lbC0+bGF6eUluaXRpYWxpemVPdmVyc2Ft
cGxpbmcoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwogdm9pZCBXYXZlU2hhcGVyUHJvY2Vzc29y
Ojpwcm9jZXNzKGNvbnN0IEF1ZGlvQnVzKiBzb3VyY2UsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwg
c2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKIHsKICAgICBpZiAoIWlzSW5pdGlhbGl6ZWQoKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJv
Y2Vzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9j
ZXNzb3IuaAppbmRleCA0NzM1ZWZkYTI1ZjcyMzNhMmExNzQ5ZDNjYTU0NTBmMjI0NzlkY2IyLi41
NTk3YTk0YzFlNzI3NDNhZGY3Zjg0YWJmMjhmMjc0ZGNmMzkwOTc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuaApAQCAt
MzgsNiArMzgsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXYXZlU2hhcGVyUHJv
Y2Vzc29yIDogcHVibGljIEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yIHsKIHB1YmxpYzoKKyAgICBl
bnVtIE92ZXJTYW1wbGVUeXBlIHsKKyAgICAgICAgT3ZlclNhbXBsZU5vbmUsCisgICAgICAgIE92
ZXJTYW1wbGUyeCwKKyAgICAgICAgT3ZlclNhbXBsZTR4CisgICAgfTsKKwogICAgIFdhdmVTaGFw
ZXJQcm9jZXNzb3IoZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMpOwog
CiAgICAgdmlydHVhbCB+V2F2ZVNoYXBlclByb2Nlc3NvcigpOwpAQCAtNDksMTAgKzU1LDE1IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldEN1cnZlKEZsb2F0MzJBcnJheSopOwogICAgIEZsb2F0MzJB
cnJheSogY3VydmUoKSB7IHJldHVybiBtX2N1cnZlLmdldCgpOyB9CiAKKyAgICB2b2lkIHNldE92
ZXJzYW1wbGUoT3ZlclNhbXBsZVR5cGUpOworICAgIE92ZXJTYW1wbGVUeXBlIG92ZXJzYW1wbGUo
KSBjb25zdCB7IHJldHVybiBtX292ZXJzYW1wbGU7IH0KKwogcHJpdmF0ZToKICAgICAvLyBtX2N1
cnZlIHJlcHJlc2VudHMgdGhlIG5vbi1saW5lYXIgc2hhcGluZyBjdXJ2ZS4KICAgICBSZWZQdHI8
RmxvYXQzMkFycmF5PiBtX2N1cnZlOwogCisgICAgT3ZlclNhbXBsZVR5cGUgbV9vdmVyc2FtcGxl
OworCiAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgcHJvY2VzcygpIHdpdGggc2V0Q3VydmUoKS4K
ICAgICBtdXRhYmxlIE11dGV4IG1fcHJvY2Vzc0xvY2s7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGMyMTY5YjhjOTU0YzRh
MGEwMGZiYWQxZjAzNjFiZWQ3MjlmYTY5ZTguLjQ2NWJjY2FmNGQxNDA5NjQ4ZDc0OWM0N2RiNjQ1
ZWMzZTE3NjhkNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTU3NTAsNiArNTc1MCwxMCBAQAogCQlGRDA2REZBNjEzNEE0REVG
MDA2RjVEN0QgLyogRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDA2REZBNDEzNEE0REVGMDA2RjVEN0Qg
LyogRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmggKi87IH07CiAJCUZEMTY2MEE1MTM3ODdD
NkQwMDFGRkE3QiAvKiBEZW5vcm1hbERpc2FibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDE2NjBBNDEzNzg3QzZEMDAxRkZBN0IgLyogRGVub3Jt
YWxEaXNhYmxlci5oICovOyB9OwogCQlGRDFBRjE1MDE2NTZGMTUxMDBDNkQ0RjcgLyogU2hhcGVW
YWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQx
QUYxNEUxNjU2RjEyMTAwQzZENEY3IC8qIFNoYXBlVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRDE3NjJERjE3NjY4NkQ5MDBEODM2QTgg
LyogVXBTYW1wbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZEMTc2MkREMTc2Njg2RDkwMEQ4MzZBOCAvKiBVcFNhbXBsZXIuY3BwICovOyB9Owor
CQlGRDE3NjJFMDE3NjY4NkQ5MDBEODM2QTggLyogVXBTYW1wbGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDE3NjJERTE3NjY4NkQ5MDBEODM2QTgg
LyogVXBTYW1wbGVyLmggKi87IH07CisJCUZEMTc2MkUzMTc2Njg2RUEwMEQ4MzZBOCAvKiBEb3du
U2FtcGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRDE3NjJFMTE3NjY4NkVBMDBEODM2QTggLyogRG93blNhbXBsZXIuY3BwICovOyB9OworCQlG
RDE3NjJFNDE3NjY4NkVBMDBEODM2QTggLyogRG93blNhbXBsZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMTc2MkUyMTc2Njg2RUEwMEQ4MzZBOCAv
KiBEb3duU2FtcGxlci5oICovOyB9OwogCQlGRDIzQTEyNTEzRjVGQTU5MDBGNjcwMDEgLyogSlNN
ZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkQyM0ExMjMxM0Y1RkE1OTAwRjY3MDAxIC8qIEpTTWVkaWFF
bGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcCAqLzsgfTsKIAkJRkQyM0ExMjYxM0Y1RkE1OTAwRjY3
MDAxIC8qIEpTTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRDIzQTEyNDEzRjVGQTU5MDBGNjcwMDEgLyog
SlNNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuaCAqLzsgfTsKIAkJRkQyREJGMTIxMkIwNDhB
MzAwRUQ5OEM2IC8qIEFjY2VsZXJhdGUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQyREJGMEUxMkIwNDhBMzAwRUQ5OEM2IC8qIEFj
Y2VsZXJhdGUuZnJhbWV3b3JrICovOyB9OwpAQCAtMTI2MjMsNiArMTI2MjcsMTAgQEAKIAkJRkQw
OEE4ODcxNzVEMzkyNjAwMkNEMzYwIC8qIFNoYXBlT3V0c2lkZUluZm8uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcGVPdXRzaWRlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRDE2NjBBNDEzNzg3QzZEMDAxRkZBN0IgLyogRGVub3JtYWxEaXNhYmxl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZW5vcm1hbERpc2FibGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZEMUFGMTRFMTY1NkYxMjEwMEM2RDRGNyAv
KiBTaGFwZVZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNoYXBlVmFs
dWUuaDsgcGF0aCA9IHN0eWxlL1NoYXBlVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRkQxNzYyREQxNzY2ODZEOTAwRDgzNkE4IC8qIFVwU2FtcGxlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVcFNhbXBsZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGRDE3NjJERTE3NjY4NkQ5MDBEODM2QTggLyogVXBTYW1wbGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVwU2FtcGxlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGRDE3NjJFMTE3NjY4NkVBMDBEODM2QTggLyogRG93blNhbXBs
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG93blNhbXBsZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRDE3NjJFMjE3NjY4NkVBMDBEODM2
QTggLyogRG93blNhbXBsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG93
blNhbXBsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQyM0ExMjMxM0Y1RkE1
OTAwRjY3MDAxIC8qIEpTTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2Rl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQyM0ExMjQxM0Y1RkE1OTAwRjY3
MDAxIC8qIEpTTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZEMkRCRjBFMTJCMDQ4QTMwMEVEOThDNiAvKiBBY2NlbGVy
YXRlLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQWNjZWxlcmF0ZS5mcmFtZXdvcms7IHBh
dGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BY2NlbGVyYXRlLmZyYW1ld29yazsgc291
cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKQEAgLTIwNzg3LDYgKzIwNzk1LDggQEAKIAkJCQlG
REFGMTk5NzE1MTNEMTMxMDA4REIwQzMgLyogRGlyZWN0Q29udm9sdmVyLmggKi8sCiAJCQkJRkQz
MTYwNUExMkIwMjZGNzAwQzFBMzU5IC8qIERpc3RhbmNlLmNwcCAqLywKIAkJCQlGRDMxNjA1QjEy
QjAyNkY3MDBDMUEzNTkgLyogRGlzdGFuY2UuaCAqLywKKwkJCQlGRDE3NjJFMTE3NjY4NkVBMDBE
ODM2QTggLyogRG93blNhbXBsZXIuY3BwICovLAorCQkJCUZEMTc2MkUyMTc2Njg2RUEwMEQ4MzZB
OCAvKiBEb3duU2FtcGxlci5oICovLAogCQkJCUZENkVEMkM1MTM2QjhFNjYwMDNDRjA3MiAvKiBE
eW5hbWljc0NvbXByZXNzb3IuY3BwICovLAogCQkJCUZENkVEMkM2MTM2QjhFNjYwMDNDRjA3MiAv
KiBEeW5hbWljc0NvbXByZXNzb3IuaCAqLywKIAkJCQlGRDUzNzM1NDEzN0I2NTNCMDAwMDhEQ0Ug
LyogRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcCAqLywKQEAgLTIwODIzLDYgKzIwODMzLDgg
QEAKIAkJCQlGRDMxNjA3NzEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJiSW5wdXRCdWZmZXIuaCAq
LywKIAkJCQlGRDAwRDdBMjE0QTNGNjE5MDA3MzQwMTEgLyogU2luY1Jlc2FtcGxlci5jcHAgKi8s
CiAJCQkJRkQwMEQ3QTMxNEEzRjYxOTAwNzM0MDExIC8qIFNpbmNSZXNhbXBsZXIuaCAqLywKKwkJ
CQlGRDE3NjJERDE3NjY4NkQ5MDBEODM2QTggLyogVXBTYW1wbGVyLmNwcCAqLywKKwkJCQlGRDE3
NjJERTE3NjY4NkQ5MDBEODM2QTggLyogVXBTYW1wbGVyLmggKi8sCiAJCQkJRkQzMTYwNzgxMkIw
MjZGNzAwQzFBMzU5IC8qIFZlY3Rvck1hdGguY3BwICovLAogCQkJCUZEMzE2MDc5MTJCMDI2Rjcw
MEMxQTM1OSAvKiBWZWN0b3JNYXRoLmggKi8sCiAJCQkJRkQ1MzczNTAxMzdCNjUxODAwMDA4RENF
IC8qIFplcm9Qb2xlLmNwcCAqLywKQEAgLTI0MDY4LDYgKzI0MDgwLDggQEAKIAkJCQk4M0MxRDQz
NDE3OEQ1QUI1MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4M0MxRDQzNTE3OEQ1QUI1MDAxNDFFNjggLyogU1ZHUGF0aFNlZ01vdmV0
b0Ficy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDMUQ0MzYxNzhENUFCNTAwMTQxRTY4IC8qIFNW
R1BhdGhTZWdNb3ZldG9SZWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUZEMTc2MkUwMTc2Njg2RDkw
MEQ4MzZBOCAvKiBVcFNhbXBsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUZEMTc2MkU0MTc2Njg2
RUEwMEQ4MzZBOCAvKiBEb3duU2FtcGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNzA0Myw2ICsy
NzA1Nyw4IEBACiAJCQkJOTc3RTJFMEUxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3RTJFMEUxMkYwRkM5QzAwQzEzMzgwIC8qIFhTU0F1ZGl0
b3JEZWxlZ2F0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDUzNzM1MjEzN0I2NTE4MDAwMDhE
Q0UgLyogWmVyb1BvbGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkQxNzYyREYxNzY2ODZEOTAw
RDgzNkE4IC8qIFVwU2FtcGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRDE3NjJFMzE3NjY4
NkVBMDBEODM2QTggLyogRG93blNhbXBsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Eb3duU2FtcGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Eb3duU2FtcGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTVjMjgz
MjY5ZjQ2ZGNkZThiNWY2ZmU5MjMwZGVkMzkwNDgwZDBhYQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rvd25TYW1wbGVyLmNwcApAQCAtMCwwICsxLDE0
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBw
bGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKKyNp
bmNsdWRlICJEb3duU2FtcGxlci5oIgorCisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitEb3duU2FtcGxlcjo6RG93blNhbXBsZXIoc2l6ZV90IGlu
cHV0QmxvY2tTaXplKQorICAgIDogbV9pbnB1dEJsb2NrU2l6ZShpbnB1dEJsb2NrU2l6ZSkKKyAg
ICAsIG1fcmVkdWNlZEtlcm5lbChEZWZhdWx0S2VybmVsU2l6ZSAvIDIpCisgICAgLCBtX2NvbnZv
bHZlcihpbnB1dEJsb2NrU2l6ZSAvIDIpIC8vIHJ1bnMgYXQgMS8yIHNvdXJjZSBzYW1wbGUtcmF0
ZQorICAgICwgbV90ZW1wQnVmZmVyKGlucHV0QmxvY2tTaXplIC8gMikKKyAgICAsIG1faW5wdXRC
dWZmZXIoaW5wdXRCbG9ja1NpemUgKiAyKQoreworICAgIGluaXRpYWxpemVLZXJuZWwoKTsKK30K
Kwordm9pZCBEb3duU2FtcGxlcjo6aW5pdGlhbGl6ZUtlcm5lbCgpCit7CisgICAgLy8gQmxhY2tt
YW4gd2luZG93IHBhcmFtZXRlcnMuCisgICAgZG91YmxlIGFscGhhID0gMC4xNjsKKyAgICBkb3Vi
bGUgYTAgPSAwLjUgKiAoMS4wIC0gYWxwaGEpOworICAgIGRvdWJsZSBhMSA9IDAuNTsKKyAgICBk
b3VibGUgYTIgPSAwLjUgKiBhbHBoYTsKKworICAgIGludCBuID0gRGVmYXVsdEtlcm5lbFNpemU7
CisgICAgaW50IGhhbGZTaXplID0gbiAvIDI7CisKKyAgICAvLyBIYWxmLWJhbmQgZmlsdGVyLgor
ICAgIGRvdWJsZSBzaW5jU2NhbGVGYWN0b3IgPSAwLjU7CisKKyAgICAvLyBDb21wdXRlIG9ubHkg
dGhlIG9kZCB0ZXJtcyBiZWNhdXNlIHRoZSBldmVuIG9uZXMgYXJlIHplcm8sIGV4Y2VwdAorICAg
IC8vIHJpZ2h0IGluIHRoZSBtaWRkbGUgYXQgaGFsZlNpemUsIHdoaWNoIGlzIDAuNSBhbmQgd2Un
bGwgaGFuZGxlIHNwZWNpYWxseSBkdXJpbmcgcHJvY2Vzc2luZworICAgIC8vIGFmdGVyIGRvaW5n
IHRoZSBtYWluIGNvbnZvbHV0aW9uIHVzaW5nIG1fcmVkdWNlZEtlcm5lbC4KKyAgICBmb3IgKGlu
dCBpID0gMTsgaSA8IG47IGkgKz0gMikgeworICAgICAgICAvLyBDb21wdXRlIHRoZSBzaW5jKCkg
d2l0aCBvZmZzZXQuCisgICAgICAgIGRvdWJsZSBzID0gc2luY1NjYWxlRmFjdG9yICogcGlEb3Vi
bGUgKiAoaSAtIGhhbGZTaXplKTsKKyAgICAgICAgZG91YmxlIHNpbmMgPSAhcyA/IDEuMCA6IHNp
bihzKSAvIHM7CisgICAgICAgIHNpbmMgKj0gc2luY1NjYWxlRmFjdG9yOworCisgICAgICAgIC8v
IENvbXB1dGUgQmxhY2ttYW4gd2luZG93LCBtYXRjaGluZyB0aGUgb2Zmc2V0IG9mIHRoZSBzaW5j
KCkuCisgICAgICAgIGRvdWJsZSB4ID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihpKSAvIG47CisgICAg
ICAgIGRvdWJsZSB3aW5kb3cgPSBhMCAtIGExICogY29zKDIuMCAqIHBpRG91YmxlICogeCkgKyBh
MiAqIGNvcyg0LjAgKiBwaURvdWJsZSAqIHgpOworCisgICAgICAgIC8vIFdpbmRvdyB0aGUgc2lu
YygpIGZ1bmN0aW9uLgorICAgICAgICAvLyBUaGVuIHN0b3JlIG9ubHkgdGhlIG9kZCB0ZXJtcyBp
biB0aGUga2VybmVsLgorICAgICAgICAvLyBJbiBhIHNlbnNlLCB0aGlzIGlzIHNoaWZ0aW5nIGZv
cndhcmQgaW4gdGltZSBieSBvbmUgc2FtcGxlLWZyYW1lIGF0IHRoZSBkZXN0aW5hdGlvbiBzYW1w
bGUtcmF0ZS4KKyAgICAgICAgbV9yZWR1Y2VkS2VybmVsWyhpIC0gMSkgLyAyXSA9IHNpbmMgKiB3
aW5kb3c7CisgICAgfQorfQorCit2b2lkIERvd25TYW1wbGVyOjpwcm9jZXNzKGNvbnN0IGZsb2F0
KiBzb3VyY2VQLCBmbG9hdCogZGVzdFAsIHNpemVfdCBzb3VyY2VGcmFtZXNUb1Byb2Nlc3MpCit7
CisgICAgYm9vbCBpc0lucHV0QmxvY2tTaXplR29vZCA9IHNvdXJjZUZyYW1lc1RvUHJvY2VzcyA9
PSBtX2lucHV0QmxvY2tTaXplOworICAgIEFTU0VSVChpc0lucHV0QmxvY2tTaXplR29vZCk7Cisg
ICAgaWYgKCFpc0lucHV0QmxvY2tTaXplR29vZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2l6
ZV90IGRlc3RGcmFtZXNUb1Byb2Nlc3MgPSBzb3VyY2VGcmFtZXNUb1Byb2Nlc3MgLyAyOworCisg
ICAgYm9vbCBpc1RlbXBCdWZmZXJHb29kID0gZGVzdEZyYW1lc1RvUHJvY2VzcyA9PSBtX3RlbXBC
dWZmZXIuc2l6ZSgpOworICAgIEFTU0VSVChpc1RlbXBCdWZmZXJHb29kKTsKKyAgICBpZiAoIWlz
VGVtcEJ1ZmZlckdvb2QpCisgICAgICAgIHJldHVybjsKKworICAgIGJvb2wgaXNSZWR1Y2VkS2Vy
bmVsR29vZCA9IG1fcmVkdWNlZEtlcm5lbC5zaXplKCkgPT0gRGVmYXVsdEtlcm5lbFNpemUgLyAy
OworICAgIEFTU0VSVChpc1JlZHVjZWRLZXJuZWxHb29kKTsKKyAgICBpZiAoIWlzUmVkdWNlZEtl
cm5lbEdvb2QpCisgICAgICAgIHJldHVybjsKKworICAgIHNpemVfdCBoYWxmU2l6ZSA9IERlZmF1
bHRLZXJuZWxTaXplIC8gMjsKKworICAgIC8vIENvcHkgc291cmNlIHNhbXBsZXMgdG8gMm5kIGhh
bGYgb2YgaW5wdXQgYnVmZmVyLgorICAgIGJvb2wgaXNJbnB1dEJ1ZmZlckdvb2QgPSBtX2lucHV0
QnVmZmVyLnNpemUoKSA9PSBzb3VyY2VGcmFtZXNUb1Byb2Nlc3MgKiAyICYmIGhhbGZTaXplIDw9
IHNvdXJjZUZyYW1lc1RvUHJvY2VzczsKKyAgICBBU1NFUlQoaXNJbnB1dEJ1ZmZlckdvb2QpOwor
ICAgIGlmICghaXNJbnB1dEJ1ZmZlckdvb2QpCisgICAgICAgIHJldHVybjsKKworICAgIGZsb2F0
KiBpbnB1dFAgPSBtX2lucHV0QnVmZmVyLmRhdGEoKSArIHNvdXJjZUZyYW1lc1RvUHJvY2VzczsK
KyAgICBtZW1jcHkoaW5wdXRQLCBzb3VyY2VQLCBzaXplb2YoZmxvYXQpICogc291cmNlRnJhbWVz
VG9Qcm9jZXNzKTsKKworICAgIC8vIENvcHkgdGhlIG9kZCBzYW1wbGUtZnJhbWVzIGZyb20gc291
cmNlUCwgZGVsYXllZCBieSBvbmUgc2FtcGxlLWZyYW1lIChkZXN0aW5hdGlvbiBzYW1wbGUtcmF0
ZSkKKyAgICAvLyB0byBtYXRjaCBzaGlmdGluZyBmb3J3YXJkIGluIHRpbWUgaW4gbV9yZWR1Y2Vk
S2VybmVsLgorICAgIGZsb2F0KiBvZGRTYW1wbGVzUCA9IG1fdGVtcEJ1ZmZlci5kYXRhKCk7Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRlc3RGcmFtZXNUb1Byb2Nlc3M7ICsraSkKKyAg
ICAgICAgb2RkU2FtcGxlc1BbaV0gPSAqKChpbnB1dFAgLSAxKSArIGkgKiAyKTsKKworICAgIC8v
IEFjdHVhbGx5IHByb2Nlc3Mgb2RkU2FtcGxlc1Agd2l0aCBtX3JlZHVjZWRLZXJuZWwgZm9yIGVm
ZmljaWVuY3kuCisgICAgLy8gVGhlIHRoZW9yZXRpY2FsIGtlcm5lbCBpcyBkb3VibGUgdGhpcyBz
aXplIHdpdGggMCB2YWx1ZXMgZm9yIGV2ZW4gdGVybXMgKGV4Y2VwdCBjZW50ZXIpLgorICAgIG1f
Y29udm9sdmVyLnByb2Nlc3MoJm1fcmVkdWNlZEtlcm5lbCwgb2RkU2FtcGxlc1AsIGRlc3RQLCBk
ZXN0RnJhbWVzVG9Qcm9jZXNzKTsKKworICAgIC8vIE5vdywgYWNjb3VudCBmb3IgdGhlIDAuNSB0
ZXJtIHJpZ2h0IGluIHRoZSBtaWRkbGUgb2YgdGhlIGtlcm5lbC4KKyAgICAvLyBUaGlzIGFtb3Vu
dHMgdG8gYSBkZWxheS1saW5lIG9mIGxlbmd0aCBoYWxmU2l6ZSAoYXQgdGhlIHNvdXJjZSBzYW1w
bGUtcmF0ZSksCisgICAgLy8gc2NhbGVkIGJ5IDAuNS4KKworICAgIC8vIFN1bSBpbnRvIHRoZSBk
ZXN0aW5hdGlvbi4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGVzdEZyYW1lc1RvUHJv
Y2VzczsgKytpKQorICAgICAgICBkZXN0UFtpXSArPSAwLjUgKiAqKChpbnB1dFAgLSBoYWxmU2l6
ZSkgKyBpICogMik7CisKKyAgICAvLyBDb3B5IDJuZCBoYWxmIG9mIGlucHV0IGJ1ZmZlciB0byAx
c3QgaGFsZi4KKyAgICBtZW1jcHkobV9pbnB1dEJ1ZmZlci5kYXRhKCksIGlucHV0UCwgc2l6ZW9m
KGZsb2F0KSAqIHNvdXJjZUZyYW1lc1RvUHJvY2Vzcyk7Cit9CisKK3ZvaWQgRG93blNhbXBsZXI6
OnJlc2V0KCkKK3sKKyAgICBtX2NvbnZvbHZlci5yZXNldCgpOworICAgIG1faW5wdXRCdWZmZXIu
emVybygpOworfQorCitzaXplX3QgRG93blNhbXBsZXI6OmxhdGVuY3lGcmFtZXMoKSBjb25zdAor
eworICAgIC8vIERpdmlkZSBieSB0d28gc2luY2UgdGhpcyBpcyBhIGxpbmVhciBwaGFzZSBrZXJu
ZWwgYW5kIHRoZSBkZWxheSBpcyBhdCB0aGUgY2VudGVyIG9mIHRoZSBrZXJuZWwuCisgICAgcmV0
dXJuIG1fcmVkdWNlZEtlcm5lbC5zaXplKCkgLyAyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vRG93blNhbXBsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0Rvd25TYW1wbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI2MDQzNTlmNjUyMDk2MDYwZjYy
MzRjM2RmOTRhZjY5YTUxMDVhZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0Rvd25TYW1wbGVyLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
KCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRG93
blNhbXBsZXJfaAorI2RlZmluZSBEb3duU2FtcGxlcl9oCisKKyNpbmNsdWRlICJBdWRpb0FycmF5
LmgiCisjaW5jbHVkZSAiRGlyZWN0Q29udm9sdmVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworLy8gRG93blNhbXBsZXIgZG93bi1zYW1wbGVzIHRoZSBzb3VyY2Ugc3RyZWFtIGJ5IGEgZmFj
dG9yIG9mIDJ4LgorCitjbGFzcyBEb3duU2FtcGxlciB7CitwdWJsaWM6CisgICAgRG93blNhbXBs
ZXIoc2l6ZV90IGlucHV0QmxvY2tTaXplKTsKKworICAgIC8vIFRoZSBkZXN0aW5hdGlvbiBidWZm
ZXIgfGRlc3RQfCBpcyBvZiBzaXplIHNvdXJjZUZyYW1lc1RvUHJvY2VzcyAvIDIuCisgICAgdm9p
ZCBwcm9jZXNzKGNvbnN0IGZsb2F0KiBzb3VyY2VQLCBmbG9hdCogZGVzdFAsIHNpemVfdCBzb3Vy
Y2VGcmFtZXNUb1Byb2Nlc3MpOworCisgICAgdm9pZCByZXNldCgpOworCisgICAgLy8gTGF0ZW5j
eSBiYXNlZCBvbiB0aGUgZGVzdGluYXRpb24gc2FtcGxlLXJhdGUuCisgICAgc2l6ZV90IGxhdGVu
Y3lGcmFtZXMoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBlbnVtIHsgRGVmYXVsdEtlcm5lbFNp
emUgPSAyNTYgfTsKKworICAgIHNpemVfdCBtX2lucHV0QmxvY2tTaXplOworCisgICAgLy8gQ29t
cHV0ZXMgaWRlYWwgYmFuZC1saW1pdGVkIGhhbGYtYmFuZCBmaWx0ZXIgY29lZmZpY2llbnRzLgor
ICAgIC8vIEluIG90aGVyIHdvcmRzLCBmaWx0ZXIgb3V0IGFsbCBmcmVxdWVuY2llcyBoaWdoZXIg
dGhhbiAwLjI1ICogTnlxdWlzdC4KKyAgICB2b2lkIGluaXRpYWxpemVLZXJuZWwoKTsKKyAgICBB
dWRpb0Zsb2F0QXJyYXkgbV9yZWR1Y2VkS2VybmVsOworCisgICAgLy8gSGFsZi1iYW5kIGZpbHRl
ci4KKyAgICBEaXJlY3RDb252b2x2ZXIgbV9jb252b2x2ZXI7CisKKyAgICBBdWRpb0Zsb2F0QXJy
YXkgbV90ZW1wQnVmZmVyOworCisgICAgLy8gVXNlZCBhcyBkZWxheS1saW5lIChGSVIgZmlsdGVy
IGhpc3RvcnkpIGZvciB0aGUgaW5wdXQgc2FtcGxlcyB0byBhY2NvdW50IGZvciB0aGUgMC41IHRl
cm0gcmlnaHQgaW4gdGhlIG1pZGRsZSBvZiB0aGUga2VybmVsLgorICAgIEF1ZGlvRmxvYXRBcnJh
eSBtX2lucHV0QnVmZmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRG93blNhbXBsZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vVXBTYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1VwU2FtcGxl
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODdkZWZlM2I1YWU0ZTI5MTVlNGZhMzcyZDM0YzMzZjMxMzQ4OWYz
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1VwU2Ft
cGxlci5jcHAKQEAgLTAsMCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhl
IG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBF
TkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSAiVXBTYW1wbGVyLmgiCisKKyNpbmNsdWRlIDx3
dGYvTWF0aEV4dHJhcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1VwU2FtcGxlcjo6VXBT
YW1wbGVyKHNpemVfdCBpbnB1dEJsb2NrU2l6ZSkKKyAgICA6IG1faW5wdXRCbG9ja1NpemUoaW5w
dXRCbG9ja1NpemUpCisgICAgLCBtX2tlcm5lbChEZWZhdWx0S2VybmVsU2l6ZSkKKyAgICAsIG1f
Y29udm9sdmVyKGlucHV0QmxvY2tTaXplKQorICAgICwgbV90ZW1wQnVmZmVyKGlucHV0QmxvY2tT
aXplKQorICAgICwgbV9pbnB1dEJ1ZmZlcihpbnB1dEJsb2NrU2l6ZSAqIDIpCit7CisgICAgaW5p
dGlhbGl6ZUtlcm5lbCgpOworfQorCit2b2lkIFVwU2FtcGxlcjo6aW5pdGlhbGl6ZUtlcm5lbCgp
Cit7CisgICAgLy8gQmxhY2ttYW4gd2luZG93IHBhcmFtZXRlcnMuCisgICAgZG91YmxlIGFscGhh
ID0gMC4xNjsKKyAgICBkb3VibGUgYTAgPSAwLjUgKiAoMS4wIC0gYWxwaGEpOworICAgIGRvdWJs
ZSBhMSA9IDAuNTsKKyAgICBkb3VibGUgYTIgPSAwLjUgKiBhbHBoYTsKKworICAgIGludCBuID0g
bV9rZXJuZWwuc2l6ZSgpOworICAgIGludCBoYWxmU2l6ZSA9IG4gLyAyOworICAgIGRvdWJsZSBz
dWJzYW1wbGVPZmZzZXQgPSAtMC41OworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kp
IHsKKyAgICAgICAgLy8gQ29tcHV0ZSB0aGUgc2luYygpIHdpdGggb2Zmc2V0LgorICAgICAgICBk
b3VibGUgcyA9IHBpRG91YmxlICogKGkgLSBoYWxmU2l6ZSAtIHN1YnNhbXBsZU9mZnNldCk7Cisg
ICAgICAgIGRvdWJsZSBzaW5jID0gIXMgPyAxLjAgOiBzaW4ocykgLyBzOworCisgICAgICAgIC8v
IENvbXB1dGUgQmxhY2ttYW4gd2luZG93LCBtYXRjaGluZyB0aGUgb2Zmc2V0IG9mIHRoZSBzaW5j
KCkuCisgICAgICAgIGRvdWJsZSB4ID0gKGkgLSBzdWJzYW1wbGVPZmZzZXQpIC8gbjsKKyAgICAg
ICAgZG91YmxlIHdpbmRvdyA9IGEwIC0gYTEgKiBjb3MoMi4wICogcGlEb3VibGUgKiB4KSArIGEy
ICogY29zKDQuMCAqIHBpRG91YmxlICogeCk7CisKKyAgICAgICAgLy8gV2luZG93IHRoZSBzaW5j
KCkgZnVuY3Rpb24uCisgICAgICAgIG1fa2VybmVsW2ldID0gc2luYyAqIHdpbmRvdzsKKyAgICB9
Cit9CisKK3ZvaWQgVXBTYW1wbGVyOjpwcm9jZXNzKGNvbnN0IGZsb2F0KiBzb3VyY2VQLCBmbG9h
dCogZGVzdFAsIHNpemVfdCBzb3VyY2VGcmFtZXNUb1Byb2Nlc3MpCit7CisgICAgYm9vbCBpc0lu
cHV0QmxvY2tTaXplR29vZCA9IHNvdXJjZUZyYW1lc1RvUHJvY2VzcyA9PSBtX2lucHV0QmxvY2tT
aXplOworICAgIEFTU0VSVChpc0lucHV0QmxvY2tTaXplR29vZCk7CisgICAgaWYgKCFpc0lucHV0
QmxvY2tTaXplR29vZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9vbCBpc1RlbXBCdWZmZXJH
b29kID0gc291cmNlRnJhbWVzVG9Qcm9jZXNzID09IG1fdGVtcEJ1ZmZlci5zaXplKCk7CisgICAg
QVNTRVJUKGlzVGVtcEJ1ZmZlckdvb2QpOworICAgIGlmICghaXNUZW1wQnVmZmVyR29vZCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYm9vbCBpc0tlcm5lbEdvb2QgPSBtX2tlcm5lbC5zaXplKCkg
PT0gRGVmYXVsdEtlcm5lbFNpemU7CisgICAgQVNTRVJUKGlzS2VybmVsR29vZCk7CisgICAgaWYg
KCFpc0tlcm5lbEdvb2QpCisgICAgICAgIHJldHVybjsKKworICAgIHNpemVfdCBoYWxmU2l6ZSA9
IG1fa2VybmVsLnNpemUoKSAvIDI7CisKKyAgICAvLyBDb3B5IHNvdXJjZSBzYW1wbGVzIHRvIDJu
ZCBoYWxmIG9mIGlucHV0IGJ1ZmZlci4KKyAgICBib29sIGlzSW5wdXRCdWZmZXJHb29kID0gbV9p
bnB1dEJ1ZmZlci5zaXplKCkgPT0gc291cmNlRnJhbWVzVG9Qcm9jZXNzICogMiAmJiBoYWxmU2l6
ZSA8PSBzb3VyY2VGcmFtZXNUb1Byb2Nlc3M7CisgICAgQVNTRVJUKGlzSW5wdXRCdWZmZXJHb29k
KTsKKyAgICBpZiAoIWlzSW5wdXRCdWZmZXJHb29kKQorICAgICAgICByZXR1cm47CisKKyAgICBm
bG9hdCogaW5wdXRQID0gbV9pbnB1dEJ1ZmZlci5kYXRhKCkgKyBzb3VyY2VGcmFtZXNUb1Byb2Nl
c3M7CisgICAgbWVtY3B5KGlucHV0UCwgc291cmNlUCwgc2l6ZW9mKGZsb2F0KSAqIHNvdXJjZUZy
YW1lc1RvUHJvY2Vzcyk7CisKKyAgICAvLyBDb3B5IGV2ZW4gc2FtcGxlLWZyYW1lcyAwLDIsNCw2
Li4uIChkZWxheWVkIGJ5IHRoZSBsaW5lYXIgcGhhc2UgZGVsYXkpIGRpcmVjdGx5IGludG8gZGVz
dFAuCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNvdXJjZUZyYW1lc1RvUHJvY2Vzczsg
KytpKQorICAgICAgICBkZXN0UFtpICogMl0gPSAqKChpbnB1dFAgLSBoYWxmU2l6ZSkgKyBpKTsK
KworICAgIC8vIENvbXB1dGUgb2RkIHNhbXBsZS1mcmFtZXMgMSwzLDUsNy4uLgorICAgIGZsb2F0
KiBvZGRTYW1wbGVzUCA9IG1fdGVtcEJ1ZmZlci5kYXRhKCk7CisgICAgbV9jb252b2x2ZXIucHJv
Y2VzcygmbV9rZXJuZWwsIHNvdXJjZVAsIG9kZFNhbXBsZXNQLCBzb3VyY2VGcmFtZXNUb1Byb2Nl
c3MpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNvdXJjZUZyYW1lc1RvUHJvY2Vz
czsgKytpKQorICAgICAgICBkZXN0UFtpICogMiArIDFdID0gb2RkU2FtcGxlc1BbaV07CisKKyAg
ICAvLyBDb3B5IDJuZCBoYWxmIG9mIGlucHV0IGJ1ZmZlciB0byAxc3QgaGFsZi4KKyAgICBtZW1j
cHkobV9pbnB1dEJ1ZmZlci5kYXRhKCksIGlucHV0UCwgc2l6ZW9mKGZsb2F0KSAqIHNvdXJjZUZy
YW1lc1RvUHJvY2Vzcyk7Cit9CisKK3ZvaWQgVXBTYW1wbGVyOjpyZXNldCgpCit7CisgICAgbV9j
b252b2x2ZXIucmVzZXQoKTsKKyAgICBtX2lucHV0QnVmZmVyLnplcm8oKTsKK30KKworc2l6ZV90
IFVwU2FtcGxlcjo6bGF0ZW5jeUZyYW1lcygpIGNvbnN0Cit7CisgICAgLy8gRGl2aWRlIGJ5IHR3
byBzaW5jZSB0aGlzIGlzIGEgbGluZWFyIHBoYXNlIGtlcm5lbCBhbmQgdGhlIGRlbGF5IGlzIGF0
IHRoZSBjZW50ZXIgb2YgdGhlIGtlcm5lbC4KKyAgICByZXR1cm4gbV9rZXJuZWwuc2l6ZSgpIC8g
MjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9B
VURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1VwU2FtcGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vVXBTYW1wbGVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOWE4NjFjMmYyYzk4YTFlN2U3Yjk1Njk2ZjI0OTY1ZmVhMzg1ZDIzNAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1VwU2FtcGxlci5oCkBAIC0wLDAg
KzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFVwU2FtcGxlcl9oCisjZGVmaW5lIFVwU2FtcGxlcl9oCisKKyNp
bmNsdWRlICJBdWRpb0FycmF5LmgiCisjaW5jbHVkZSAiRGlyZWN0Q29udm9sdmVyLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworLy8gVXBTYW1wbGVyIHVwLXNhbXBsZXMgdGhlIHNvdXJjZSBz
dHJlYW0gYnkgYSBmYWN0b3Igb2YgMnguCisKK2NsYXNzIFVwU2FtcGxlciB7CitwdWJsaWM6Cisg
ICAgVXBTYW1wbGVyKHNpemVfdCBpbnB1dEJsb2NrU2l6ZSk7CisKKyAgICAvLyBUaGUgZGVzdGlu
YXRpb24gYnVmZmVyIHxkZXN0UHwgaXMgb2Ygc2l6ZSBzb3VyY2VGcmFtZXNUb1Byb2Nlc3MgKiAy
LgorICAgIHZvaWQgcHJvY2Vzcyhjb25zdCBmbG9hdCogc291cmNlUCwgZmxvYXQqIGRlc3RQLCBz
aXplX3Qgc291cmNlRnJhbWVzVG9Qcm9jZXNzKTsKKworICAgIHZvaWQgcmVzZXQoKTsKKworICAg
IC8vIExhdGVuY3kgYmFzZWQgb24gdGhlIHNvdXJjZSBzYW1wbGUtcmF0ZS4KKyAgICBzaXplX3Qg
bGF0ZW5jeUZyYW1lcygpIGNvbnN0OworCitwcml2YXRlOgorICAgIGVudW0geyBEZWZhdWx0S2Vy
bmVsU2l6ZSA9IDEyOCB9OworCisgICAgc2l6ZV90IG1faW5wdXRCbG9ja1NpemU7CisKKyAgICAv
LyBDb21wdXRlcyBpZGVhbCBiYW5kLWxpbWl0ZWQgZmlsdGVyIGNvZWZmaWNpZW50cyB0byBzYW1w
bGUgaW4gYmV0d2VlbiBlYWNoIHNvdXJjZSBzYW1wbGUtZnJhbWUuCisgICAgLy8gVGhpcyBmaWx0
ZXIgd2lsbCBiZSB1c2VkIHRvIGNvbXB1dGUgdGhlIG9kZCBzYW1wbGUtZnJhbWVzIG9mIHRoZSBv
dXRwdXQuCisgICAgdm9pZCBpbml0aWFsaXplS2VybmVsKCk7CisgICAgQXVkaW9GbG9hdEFycmF5
IG1fa2VybmVsOworCisgICAgLy8gQ29tcHV0ZXMgdGhlIG9kZCBzYW1wbGUtZnJhbWVzIG9mIHRo
ZSBvdXRwdXQuCisgICAgRGlyZWN0Q29udm9sdmVyIG1fY29udm9sdmVyOworCisgICAgQXVkaW9G
bG9hdEFycmF5IG1fdGVtcEJ1ZmZlcjsKKworICAgIC8vIERlbGF5IGxpbmUgZm9yIGdlbmVyYXRp
bmcgdGhlIGV2ZW4gc2FtcGxlLWZyYW1lcyBvZiB0aGUgb3V0cHV0LgorICAgIC8vIFRoZSBzb3Vy
Y2Ugc2FtcGxlcyBhcmUgZGVsYXllZCBleGFjdGx5IHRvIG1hdGNoIHRoZSBsaW5lYXIgcGhhc2Ug
ZGVsYXkgb2YgdGhlIEZJUiBmaWx0ZXIgKGNvbnZvbHV0aW9uKQorICAgIC8vIHVzZWQgdG8gZ2Vu
ZXJhdGUgdGhlIG9kZCBzYW1wbGUtZnJhbWVzIG9mIHRoZSBvdXRwdXQuCisgICAgQXVkaW9GbG9h
dEFycmF5IG1faW5wdXRCdWZmZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBVcFNhbXBsZXJfaApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDgxM2VlMGU1Njk3OTg2YzA3MjRjZDc4ZWU3MzQ0
N2Q0Njk3MGVlZDMuLmZlYmJhNjRmNWUzZTg5OGIyNmZkMDcwZDQwMWU2NjIxNzgzNGQxZjkgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMy0wNy0xNSAgQ2hyaXMgUm9nZXJzICA8Y3JvZ2Vyc0Bn
b29nbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBXYXZlU2hhcGVyTm9kZS5vdmVy
c2FtcGxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTc0MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHdlYmF1ZGlvL3Jlc291cmNlcy93YXZlc2hhcGVyLXRlc3RpbmcuanM6IEFkZGVkLgorICAgICAg
ICAoVDApOgorICAgICAgICAoVDEpOgorICAgICAgICAoVDIpOgorICAgICAgICAoVDMpOgorICAg
ICAgICAoVDQpOgorICAgICAgICAoZ2VuZXJhdGVXYXZlU2hhcGluZ0N1cnZlKToKKyAgICAgICAg
KGNoZWNrU2hhcGVkQ3VydmUpOgorICAgICAgICAoY3JlYXRlSW1wdWxzZUJ1ZmZlcik6CisgICAg
ICAgIChydW5XYXZlU2hhcGVyT3ZlcnNhbXBsaW5nVGVzdCk6CisgICAgICAgICogd2ViYXVkaW8v
d2F2ZXNoYXBlci1vdmVyc2FtcGxlLTJ4LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
d2ViYXVkaW8vd2F2ZXNoYXBlci1vdmVyc2FtcGxlLTJ4Lmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHdlYmF1ZGlvL3dhdmVzaGFwZXItb3ZlcnNhbXBsZS00eC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHdlYmF1ZGlvL3dhdmVzaGFwZXItb3ZlcnNhbXBsZS00eC5odG1sOiBBZGRlZC4K
KwogMjAxMy0wNy0xNSAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAg
ICAgIFRleHQgd2l0aCAidGV4dC1vdmVyZmxvdzplbGxpcHNpcyIgYW5kIGFuIFNWRyBmb250IGRv
IG5vdCByZW5kZXIgY29ycmVjdGx5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9y
ZXNvdXJjZXMvd2F2ZXNoYXBlci10ZXN0aW5nLmpzIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vcmVz
b3VyY2VzL3dhdmVzaGFwZXItdGVzdGluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZjkwZTc1MGRhMzhjNTRj
NWIxY2FkYjFhMWUzZWNjMjU3ZTZiNmMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViYXVkaW8vcmVzb3VyY2VzL3dhdmVzaGFwZXItdGVzdGluZy5qcwpAQCAtMCwwICsxLDE3NSBA
QAordmFyIGNvbnRleHQ7Cit2YXIgbGVuZ3RoSW5TZWNvbmRzID0gMjsKKworLy8gU2tpcCB0aGlz
IG1hbnkgZnJhbWVzIGJlZm9yZSBjb21wYXJpbmcgYWdhaW5zdCByZWZlcmVuY2UgdG8gYWxsb3cK
Ky8vIGEgc3RlYWR5LXN0YXRlIHRvIGJlIHJlYWNoZWQgaW4gdGhlIHVwLXNhbXBsaW5nIGZpbHRl
cnMuCit2YXIgZmlsdGVyU3RhYmlsaXplU2tpcEZyYW1lcyA9IDIwNDg7CisKK3ZhciBudW1iZXJP
ZkN1cnZlRnJhbWVzID0gNjU1MzY7Cit2YXIgd2F2ZVNoYXBpbmdDdXJ2ZTsKKwordmFyIHdhdmVz
aGFwZXI7CisKKy8vIEZJWE1FOiB0ZXN0IGF0IG1vcmUgZnJlcXVlbmNpZXMuCisvLyBXaGVuIHVz
aW5nIHRoZSB1cC1zYW1wbGluZyBmaWx0ZXJzICgyeCwgNHgpIGFueSBzaWduaWZpY2FudCBhbGlh
c2luZyBjb21wb25lbnRzCisvLyBzaG91bGQgYmUgYXQgdmVyeSBoaWdoIGZyZXF1ZW5jaWVzIG5l
YXIgTnlxdWlzdC4gIFRoZXNlIHRlc3RzIGNvdWxkIGJlIGltcHJvdmVkCisvLyB0byBhbGxvdyBm
b3IgYSBoaWdoZXIgYWNjZXB0YWJsZSBhbW91bnQgb2YgYWxpYXNpbmcgbmVhciBOeXF1aXN0LCBi
dXQgdGhlbgorLy8gYmVjb21lIG1vcmUgc3RyaW5nZW50IGZvciBsb3dlciBmcmVxdWVuY2llcy4K
KworLy8gVGhlc2UgdGVzdCBwYXJhbWV0ZXJzIGFyZSBzZXQgaW4gcnVuV2F2ZVNoYXBlck92ZXJz
YW1wbGluZ1Rlc3QoKS4KK3ZhciBzYW1wbGVSYXRlOwordmFyIG55cXVpc3Q7Cit2YXIgb3ZlcnNh
bXBsZTsKK3ZhciBmdW5kYW1lbnRhbEZyZXF1ZW5jeTsKK3ZhciBhY2NlcHRhYmxlQWxpYXNpbmdU
aHJlc2hvbGREZWNpYmVsczsKKwordmFyIGtTY2FsZSA9IDAuMjU7CisKKy8vIENoZWJ5c2hldiBQ
b2x5bm9taWFscy4KKy8vIEdpdmVuIGFuIGlucHV0IHNpbnVzb2lkLCByZXR1cm5zIGFuIG91dHB1
dCBzaW51c29pZCBvZiB0aGUgZ2l2ZW4gZnJlcXVlbmN5IG11bHRpcGxlLgorZnVuY3Rpb24gVDAo
eCkgeyByZXR1cm4gMTsgfQorZnVuY3Rpb24gVDEoeCkgeyByZXR1cm4geDsgfQorZnVuY3Rpb24g
VDIoeCkgeyByZXR1cm4gMip4KnggLSAxOyB9CitmdW5jdGlvbiBUMyh4KSB7IHJldHVybiA0Kngq
eCp4IC0gMyp4OyB9CitmdW5jdGlvbiBUNCh4KSB7IHJldHVybiA4KngqeCp4KnggLSA4KngqeCAr
IDE7IH0KKworZnVuY3Rpb24gZ2VuZXJhdGVXYXZlU2hhcGluZ0N1cnZlKCkgeworICAgIHZhciBu
ID0gNjU1MzY7CisgICAgdmFyIG4yID0gbiAvIDI7CisgICAgdmFyIGN1cnZlID0gbmV3IEZsb2F0
MzJBcnJheShuKTsKKworICAgIC8vIFRoZSBzaGFwaW5nIGN1cnZlIHVzZXMgQ2hlYnlzaGV2IFBv
bHlub21pYWwgc3VjaCB0aGF0IGFuIGlucHV0IHNpbnVzb2lkCisgICAgLy8gYXQgZnJlcXVlbmN5
IGYgd2lsbCBnZW5lcmF0ZSBhbiBvdXRwdXQgb2YgZm91ciBzaW51c29pZHMgb2YgZnJlcXVlbmNp
ZXM6CisgICAgLy8gZiwgMipmLCAzKmYsIDQqZgorICAgIC8vIGVhY2ggb2Ygd2hpY2ggaXMgc2Nh
bGVkLgorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSB7CisgICAgICAgIHZhciB4ID0g
KGkgLSBuMikgLyBuMjsKKyAgICAgICAgdmFyIHkgPSBrU2NhbGUgKiAoVDEoeCkgKyBUMih4KSAr
IFQzKHgpICsgVDQoeCkpOworICAgICAgICBjdXJ2ZVtpXSA9IHk7CisgICAgfQorCisgICAgcmV0
dXJuIGN1cnZlOworfQorCitmdW5jdGlvbiBjaGVja1NoYXBlZEN1cnZlKGV2ZW50KSB7CisgICAg
dmFyIGJ1ZmZlciA9IGV2ZW50LnJlbmRlcmVkQnVmZmVyOworCisgICAgdmFyIG91dHB1dERhdGEg
PSBidWZmZXIuZ2V0Q2hhbm5lbERhdGEoMCk7CisgICAgdmFyIG4gPSBidWZmZXIubGVuZ3RoOwor
CisgICAgLy8gVGhlIFdhdmVTaGFwZXJOb2RlIHdpbGwgaGF2ZSBhIHByb2Nlc3NpbmcgbGF0ZW5j
eSBpZiBvdmVyc2FtcGxpbmcgaXMgdXNlZCwKKyAgICAvLyBzbyB3ZSBzaG91bGQgYWNjb3VudCBm
b3IgaXQuCisKKyAgICAvLyBGSVhNRTogLmxhdGVuY3kgc2hvdWxkIGJlIGV4cG9zZWQgYXMgYW4g
YXR0cmlidXRlIG9mIHRoZSBub2RlCisgICAgLy8gdmFyIHdhdmVTaGFwZXJMYXRlbmN5RnJhbWVz
ID0gd2F2ZXNoYXBlci5sYXRlbmN5ICogc2FtcGxlUmF0ZTsKKyAgICAvLyBCdXQgZm9yIG5vdyB3
ZSdsbCB1c2UgdGhlIGhhcmQtY29kZWQgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFjdHVh
bCBsYXRlbmNpZXM6CisgICAgdmFyIHdhdmVTaGFwZXJMYXRlbmN5RnJhbWVzID0gMDsKKyAgICBp
ZiAob3ZlcnNhbXBsZSA9PSAiMngiKQorICAgICAgICB3YXZlU2hhcGVyTGF0ZW5jeUZyYW1lcyA9
IDEyODsKKyAgICBlbHNlIGlmIChvdmVyc2FtcGxlID09ICI0eCIpCisgICAgICAgIHdhdmVTaGFw
ZXJMYXRlbmN5RnJhbWVzID0gMTkyOworCisgICAgdmFyIHdvcnN0RGVsdGFJbkRlY2liZWxzID0g
LTEwMDA7CisKKyAgICBmb3IgKHZhciBpID0gd2F2ZVNoYXBlckxhdGVuY3lGcmFtZXM7IGkgPCBu
OyArK2kpIHsKKyAgICAgICAgdmFyIGFjdHVhbCA9IG91dHB1dERhdGFbaV07CisKKyAgICAgICAg
Ly8gQWNjb3VudCBmb3IgdGhlIGV4cGVjdGVkIHByb2Nlc3NpbmcgbGF0ZW5jeS4KKyAgICAgICAg
dmFyIGogPSBpIC0gd2F2ZVNoYXBlckxhdGVuY3lGcmFtZXM7CisKKyAgICAgICAgLy8gQ29tcHV0
ZSByZWZlcmVuY2Ugc2ludXNvaWRzLgorICAgICAgICB2YXIgcGhhc2VJbmMgPSAyICogTWF0aC5Q
SSAqIGZ1bmRhbWVudGFsRnJlcXVlbmN5IC8gc2FtcGxlUmF0ZTsKKworICAgICAgICAvLyBHZW5l
cmF0ZSBhbiBpZGVhbGl6ZWQgcmVmZXJlbmNlIGJhc2VkIG9uIHRoZSBmb3VyIGdlbmVyYXRlZCBm
cmVxdWVuY2llcyB0cnVuY2F0ZWQKKyAgICAgICAgLy8gdG8gdGhlIE55cXVpc3QgcmF0ZS4gIElk
ZWFsbHksIHdlJ2QgbGlrZSB0aGUgd2F2ZXNoYXBlcidzIG92ZXJzYW1wbGluZyB0byBwZXJmZWN0
bHkKKyAgICAgICAgLy8gcmVtb3ZlIGFsbCBmcmVxdWVuY2llcyBhYm92ZSBOeXF1aXN0IHRvIGF2
b2lkIGFsaWFzaW5nLiAgSW4gcmVhbGl0eSB0aGUgb3ZlcnNhbXBsaW5nIGZpbHRlcnMgYXJlIG5v
dAorICAgICAgICAvLyBxdWl0ZSBwZXJmZWN0LCBzbyB0aGVyZSB3aWxsIGJlIGEgKGhvcGVmdWxs
eSBzbWFsbCkgYW1vdW50IG9mIGFsaWFzaW5nLiAgV2Ugc2hvdWxkCisgICAgICAgIC8vIGJlIGNs
b3NlIHRvIHRoZSBpZGVhbC4KKyAgICAgICAgdmFyIHJlZmVyZW5jZSA9IDA7CisKKyAgICAgICAg
Ly8gU3VtIGluIGZ1bmRhbWVudGFsIGZyZXF1ZW5jeS4KKyAgICAgICAgaWYgKGZ1bmRhbWVudGFs
RnJlcXVlbmN5IDwgbnlxdWlzdCkKKyAgICAgICAgICAgIHJlZmVyZW5jZSArPSBNYXRoLnNpbihw
aGFzZUluYyAqIGopOworCisgICAgICAgIC8vIE5vdGUgdGhhdCB0aGUgcGhhc2Ugb2YgZWFjaCBv
ZiB0aGUgZXhwZWN0ZWQgZ2VuZXJhdGVkIGhhcm1vbmljcyBpcyBkaWZmZXJlbnQuCisgICAgICAg
IGlmIChmdW5kYW1lbnRhbEZyZXF1ZW5jeSAqIDIgPCBueXF1aXN0KQorICAgICAgICAgICAgcmVm
ZXJlbmNlICs9IC1NYXRoLmNvcyhwaGFzZUluYyAqIGogKiAyKTsKKyAgICAgICAgaWYgKGZ1bmRh
bWVudGFsRnJlcXVlbmN5ICogMyA8IG55cXVpc3QpCisgICAgICAgICAgICByZWZlcmVuY2UgKz0g
LU1hdGguc2luKHBoYXNlSW5jICogaiAqIDMpOworICAgICAgICBpZiAoZnVuZGFtZW50YWxGcmVx
dWVuY3kgKiA0IDwgbnlxdWlzdCkKKyAgICAgICAgICAgIHJlZmVyZW5jZSArPSBNYXRoLmNvcyhw
aGFzZUluYyAqIGogKiA0KTsKKworICAgICAgICAvLyBTY2FsZSB0aGUgcmVmZXJlbmNlIHRoZSBz
YW1lIGFzIHRoZSB3YXZlc2hhcGluZyBjdXJ2ZSBpdHNlbGYuCisgICAgICAgIHJlZmVyZW5jZSAq
PSBrU2NhbGU7CisKKyAgICAgICAgdmFyIGRlbHRhID0gTWF0aC5hYnMoYWN0dWFsIC0gcmVmZXJl
bmNlKTsKKyAgICAgICAgdmFyIGRlbHRhSW5EZWNpYmVscyA9IGRlbHRhID4gMCA/IDIwICogTWF0
aC5sb2coZGVsdGEpL01hdGgubG9nKDEwKSA6IC0yMDA7CisKKyAgICAgICAgaWYgKGogPj0gZmls
dGVyU3RhYmlsaXplU2tpcEZyYW1lcykgeworICAgICAgICAgICAgaWYgKGRlbHRhSW5EZWNpYmVs
cyA+IHdvcnN0RGVsdGFJbkRlY2liZWxzKSB7CisgICAgICAgICAgICAgICAgd29yc3REZWx0YUlu
RGVjaWJlbHMgPSBkZWx0YUluRGVjaWJlbHM7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICAvLyBjb25zb2xlLmxvZygid29yc3REZWx0YUluRGVjaWJlbHM6ICIgKyB3b3Jz
dERlbHRhSW5EZWNpYmVscyk7CisKKyAgICB2YXIgc3VjY2VzcyA9IHdvcnN0RGVsdGFJbkRlY2li
ZWxzIDwgYWNjZXB0YWJsZUFsaWFzaW5nVGhyZXNob2xkRGVjaWJlbHM7CisKKyAgICBpZiAoc3Vj
Y2VzcykgeworICAgICAgICB0ZXN0UGFzc2VkKG92ZXJzYW1wbGUgKyAiIFdhdmVTaGFwZXJOb2Rl
IG92ZXJzYW1wbGluZyB3aXRoaW4gYWNjZXB0YWJsZSB0b2xlcmFuY2UuIik7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgdGVzdEZhaWxlZChvdmVyc2FtcGxlICsgIiBXYXZlU2hhcGVyTm9kZSBvdmVy
c2FtcGxpbmcgbm90IHdpdGhpbiBhY2NlcHRhYmxlIHRvbGVyYW5jZS4gIEVycm9yID0gIiArIHdv
cnN0RGVsdGFJbkRlY2liZWxzICsgIiBkQkZTIik7CisgICAgfQorCisgICAgZmluaXNoSlNUZXN0
KCk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUltcHVsc2VCdWZmZXIoY29udGV4dCwgc2FtcGxlRnJh
bWVMZW5ndGgpIHsKKyAgICB2YXIgYXVkaW9CdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUJ1ZmZlcigx
LCBzYW1wbGVGcmFtZUxlbmd0aCwgY29udGV4dC5zYW1wbGVSYXRlKTsKKyAgICB2YXIgbiA9IGF1
ZGlvQnVmZmVyLmxlbmd0aDsKKyAgICB2YXIgZGF0YUwgPSBhdWRpb0J1ZmZlci5nZXRDaGFubmVs
RGF0YSgwKTsKKworICAgIGZvciAodmFyIGsgPSAwOyBrIDwgbjsgKytrKQorICAgICAgICBkYXRh
TFtrXSA9IDA7CisKKyAgICBkYXRhTFswXSA9IDE7CisKKyAgICByZXR1cm4gYXVkaW9CdWZmZXI7
Cit9CisKK2Z1bmN0aW9uIHJ1bldhdmVTaGFwZXJPdmVyc2FtcGxpbmdUZXN0KHRlc3RQYXJhbXMp
IHsKKyAgICBzYW1wbGVSYXRlID0gdGVzdFBhcmFtcy5zYW1wbGVSYXRlOworICAgIG55cXVpc3Qg
PSAwLjUgKiBzYW1wbGVSYXRlOworICAgIG92ZXJzYW1wbGUgPSB0ZXN0UGFyYW1zLm92ZXJzYW1w
bGU7CisgICAgZnVuZGFtZW50YWxGcmVxdWVuY3kgPSB0ZXN0UGFyYW1zLmZ1bmRhbWVudGFsRnJl
cXVlbmN5OworICAgIGFjY2VwdGFibGVBbGlhc2luZ1RocmVzaG9sZERlY2liZWxzID0gdGVzdFBh
cmFtcy5hY2NlcHRhYmxlQWxpYXNpbmdUaHJlc2hvbGREZWNpYmVsczsKKworICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgfQorCisgICAgd2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOworCisgICAgLy8gQ3JlYXRlIG9mZmxpbmUgYXVkaW8gY29udGV4dC4K
KyAgICB2YXIgbnVtYmVyT2ZSZW5kZXJGcmFtZXMgPSBzYW1wbGVSYXRlICogbGVuZ3RoSW5TZWNv
bmRzOworICAgIGNvbnRleHQgPSBuZXcgd2Via2l0T2ZmbGluZUF1ZGlvQ29udGV4dCgxLCBudW1i
ZXJPZlJlbmRlckZyYW1lcywgc2FtcGxlUmF0ZSk7CisKKyAgICAvLyBzb3VyY2UgLT4gd2F2ZXNo
YXBlciAtPiBkZXN0aW5hdGlvbgorICAgIHZhciBzb3VyY2UgPSBjb250ZXh0LmNyZWF0ZUJ1ZmZl
clNvdXJjZSgpOworICAgIHNvdXJjZS5idWZmZXIgPSBjcmVhdGVUb25lQnVmZmVyKGNvbnRleHQs
IGZ1bmRhbWVudGFsRnJlcXVlbmN5LCBsZW5ndGhJblNlY29uZHMsIDEpOworCisgICAgLy8gQXBw
bHkgYSBub24tbGluZWFyIGRpc3RvcnRpb24gY3VydmUuCisgICAgd2F2ZXNoYXBlciA9IGNvbnRl
eHQuY3JlYXRlV2F2ZVNoYXBlcigpOworICAgIHdhdmVzaGFwZXIuY3VydmUgPSBnZW5lcmF0ZVdh
dmVTaGFwaW5nQ3VydmUoKTsKKyAgICB3YXZlc2hhcGVyLm92ZXJzYW1wbGUgPSBvdmVyc2FtcGxl
OworCisgICAgc291cmNlLmNvbm5lY3Qod2F2ZXNoYXBlcik7CisgICAgd2F2ZXNoYXBlci5jb25u
ZWN0KGNvbnRleHQuZGVzdGluYXRpb24pOworCisgICAgc291cmNlLnN0YXJ0KDApOworCisgICAg
Y29udGV4dC5vbmNvbXBsZXRlID0gY2hlY2tTaGFwZWRDdXJ2ZTsKKyAgICBjb250ZXh0LnN0YXJ0
UmVuZGVyaW5nKCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby93YXZlc2hh
cGVyLW92ZXJzYW1wbGUtMngtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vd2F2
ZXNoYXBlci1vdmVyc2FtcGxlLTJ4LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZmEzZWFiNDdk
MTliNjhlZjZjOGIyZmM5MzBjZTkxYjRjMWEwNWEzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViYXVkaW8vd2F2ZXNoYXBlci1vdmVyc2FtcGxlLTJ4LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDkgQEAKK1Rlc3RzIDJ4IFdhdmVTaGFwZXJOb2RlIG92ZXJzYW1wbGluZy4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIDJ4IFdhdmVTaGFwZXJOb2RlIG92ZXJzYW1w
bGluZyB3aXRoaW4gYWNjZXB0YWJsZSB0b2xlcmFuY2UuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
YXVkaW8vd2F2ZXNoYXBlci1vdmVyc2FtcGxlLTJ4Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJhdWRp
by93YXZlc2hhcGVyLW92ZXJzYW1wbGUtMnguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NmJjNmMwNDUyNDM4
MzkwZGNmNWRjYmMxZWI0NGQ1ZjhkNGQ5YjdlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViYXVkaW8vd2F2ZXNoYXBlci1vdmVyc2FtcGxlLTJ4Lmh0bWwKQEAgLTAsMCArMSwzNCBA
QAorPCFET0NUWVBFIGh0bWw+CisKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0icmVzb3VyY2VzL2F1ZGlvLXRlc3RpbmcuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0icmVzb3VyY2VzL21peC10ZXN0
aW5nLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InJl
c291cmNlcy93YXZlc2hhcGVyLXRlc3RpbmcuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9k
eT4KKworPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgMnggV2F2ZVNoYXBlck5vZGUgb3Zl
cnNhbXBsaW5nLiIpOworCit2YXIgdGVzdFBhcmFtcyA9IHsKKyAgICAic2FtcGxlUmF0ZSI6IDQ0
MTAwLAorICAgICJvdmVyc2FtcGxlIjogIjJ4IiwKKworICAgIC8vIFNob3VsZCBnZW5lcmF0ZSBo
YXJtb25pY3MgYXQgOTAwMCwgMTgwMDAsIDI3MDAwLCAzNjAwMAorICAgIC8vIFRoZSBsYXN0IHR3
byBzaG91bGQgYmUgZmlsdGVyZWQgb3V0IHdpdGggdGhlIDJ4IG92ZXJzYW1wbGluZy4KKyAgICAi
ZnVuZGFtZW50YWxGcmVxdWVuY3kiOiA5MDAwLAorICAgICJhY2NlcHRhYmxlQWxpYXNpbmdUaHJl
c2hvbGREZWNpYmVscyI6IC04NQorfTsKK3J1bldhdmVTaGFwZXJPdmVyc2FtcGxpbmdUZXN0KHRl
c3RQYXJhbXMpOworCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby93YXZlc2hhcGVyLW92ZXJzYW1wbGUtNHgtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vd2F2ZXNoYXBlci1vdmVyc2FtcGxlLTR4LWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNjdkODIxNTU3ZGM4NDYwMjZkOGVjOTQ4YTQ4NmM5NmFi
MWJhN2U1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vd2F2ZXNoYXBl
ci1vdmVyc2FtcGxlLTR4LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKK1Rlc3RzIDR4IFdh
dmVTaGFwZXJOb2RlIG92ZXJzYW1wbGluZy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CitQQVNTIDR4IFdhdmVTaGFwZXJOb2RlIG92ZXJzYW1wbGluZyB3aXRoaW4gYWNjZXB0YWJsZSB0
b2xlcmFuY2UuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vd2F2ZXNoYXBlci1vdmVyc2Ft
cGxlLTR4Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby93YXZlc2hhcGVyLW92ZXJzYW1wbGUt
NHguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43MDg1MWJkOGRjODM4ZWFiZTRhZWMyMGE5MDYxZWJkNmJjMTk5
MDYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vd2F2ZXNoYXBlci1v
dmVyc2FtcGxlLTR4Lmh0bWwKQEAgLTAsMCArMSwzNCBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0icmVz
b3VyY2VzL2F1ZGlvLXRlc3RpbmcuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiIHNyYz0icmVzb3VyY2VzL21peC10ZXN0aW5nLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InJlc291cmNlcy93YXZlc2hhcGVyLXRlc3Rp
bmcuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKworPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlw
dGlvbigiVGVzdHMgNHggV2F2ZVNoYXBlck5vZGUgb3ZlcnNhbXBsaW5nLiIpOworCit2YXIgdGVz
dFBhcmFtcyA9IHsKKyAgICAic2FtcGxlUmF0ZSI6IDQ0MTAwLAorICAgICJvdmVyc2FtcGxlIjog
IjR4IiwKKworICAgIC8vIFNob3VsZCBnZW5lcmF0ZSBoYXJtb25pY3MgYXQgMTgwMDAsIDM2MDAw
LCA1NDAwMCwgNzIwMDAKKyAgICAvLyBBbGwgZXhjZXB0IGZvciAxODAwMCBzaG91bGQgYmUgZmls
dGVyZWQgb3V0IHdpdGggdGhlIDR4IG92ZXJzYW1wbGluZy4KKyAgICAiZnVuZGFtZW50YWxGcmVx
dWVuY3kiOiAxODAwMCwKKyAgICAiYWNjZXB0YWJsZUFsaWFzaW5nVGhyZXNob2xkRGVjaWJlbHMi
OiAtODUKK307CitydW5XYXZlU2hhcGVyT3ZlcnNhbXBsaW5nVGVzdCh0ZXN0UGFyYW1zKTsKKwor
PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>