<?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>236305</bug_id>
          
          <creation_ts>2022-02-08 08:31:04 -0800</creation_ts>
          <short_desc>ImageBuffer::get/putPixelBuffer should not go through DisplayList</short_desc>
          <delta_ts>2022-06-09 00:46:21 -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>Canvas</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=240802</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>236744</dependson>
    
    <dependson>240802</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>dino</cc>
    
    <cc>ggaren</cc>
    
    <cc>jonlee</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1838688</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-08 08:31:04 -0800</bug_when>
    <thetext>ImageBuffer::get/putPixelBuffer should not go through DisplayList</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838701</commentid>
    <comment_count>1</comment_count>
      <attachid>451256</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-08 08:59:20 -0800</bug_when>
    <thetext>Created attachment 451256
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838747</commentid>
    <comment_count>2</comment_count>
      <attachid>451256</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2022-02-08 10:06:29 -0800</bug_when>
    <thetext>Comment on attachment 451256
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        Remove GetPixelBuffer / PutPixelBuffer from display list implementation.
&gt; +        Display lists are about GraphicsContext commands.

Awesome!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838748</commentid>
    <comment_count>3</comment_count>
      <attachid>451256</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-02-08 10:16:29 -0800</bug_when>
    <thetext>Comment on attachment 451256
Patch

r=me

Any way to add a test for the inverted references case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838776</commentid>
    <comment_count>4</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-02-08 11:05:13 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #3)
&gt; Comment on attachment 451256 [details]
&gt; Patch
&gt; 
&gt; r=me
&gt; 
&gt; Any way to add a test for the inverted references case?

Currently there&apos;s no such things, as read and write references are not tracked in that way. I&apos;m working on adding these after https://bugs.webkit.org/show_bug.cgi?id=236099</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839531</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-09 22:10:39 -0800</bug_when>
    <thetext>&lt;rdar://problem/88735790&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839977</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-10 14:50:13 -0800</bug_when>
    <thetext>Committed r289580 (247097@main): &lt;https://commits.webkit.org/247097@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 451256.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451256</attachid>
            <date>2022-02-08 08:59:20 -0800</date>
            <delta_ts>2022-02-10 14:50:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236305-20220208185918.patch</filename>
            <type>text/plain</type>
            <size>52473</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTMyOGU0ZWMwNTc2ZGE3
M2RjY2NjODBlMTE2MjQwYmUwMGU3NGUyZC4uOWEwZjFhYmFmMTY4NTc0OWIzNDlkN2EyNzIzZWRm
NTVlNGY2Njk0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIyLTAyLTA4ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1hZ2VCdWZmZXI6
OmdldC9wdXRQaXhlbEJ1ZmZlciBzaG91bGQgbm90IGdvIHRocm91Z2ggRGlzcGxheUxpc3QKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjMwNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBHZXRQ
aXhlbEJ1ZmZlciAvIFB1dFBpeGVsQnVmZmVyIGZyb20gZGlzcGxheSBsaXN0IGltcGxlbWVudGF0
aW9uLgorICAgICAgICBEaXNwbGF5IGxpc3RzIGFyZSBhYm91dCBHcmFwaGljc0NvbnRleHQgY29t
bWFuZHMuCisgICAgICAgIEdldFBpeGVsQnVmZmVyIGFuZCBQdXRQaXhlbEJ1ZmZlciBhcmUgSW1h
Z2VCdWZmZXIgb3BlcmF0aW9ucy4KKyAgICAgICAgRXNwZWNpYWxseSBHZXRQaXhlbEJ1ZmZlciBk
b2VzIG5vdCBtYWtlIHNlbnNlIGFzIGEgZGlzcGxheSBsaXN0IGl0ZW0sCisgICAgICAgIGFuZCBp
biBpdHMgY3VycmVudCBmb3JtIGl0IGRvZXMgbm90IGhhdmUgcGFyYW1ldGVycyB0byBwcm9wYWdh
dGUgdGhlIGluZm9ybWF0aW9uCisgICAgICAgIG90aGVyIHRoYW4gdG8gYSBnbG9iYWwgdmFyaWFi
bGVzLCBsaWtlIHRoZSBXZWJLaXQgc2lkZSBHUFVQIGltcGxlbWVudGF0aW9uIGRvZXMuCisgICAg
ICAgIEl0IGlzIHVuZGVmaW5lZCB3aGF0IHdvdWxkIHR3byBHZXRQaXhlbEJ1ZmZlciBjb21tYW5k
cyBvbmUgYWZ0ZXIgYW5vdGhlciBtZWFuCisgICAgICAgIGluIGEgZGlzcGxheSBsaXN0LgorCisg
ICAgICAgIFRoZSBvcGVyYXRpb25zIGluIHRoZSB3cm9uZyBsYXllciBtYWtlIHRoZSBjb3JyZWN0
IGltcGxlbWVudGF0aW9uIGhhcmRlciB0aGFuCisgICAgICAgIG5lY2Nlc3NhcnkuIEluIHRoaXMg
Y2FzZSwgR2V0UGl4ZWxCdWZmZXIgaXMgYSByZWFkIG9wZXJhdGlvbiwgYnV0IGluIGN1cnJlbnQK
KyAgICAgICAgaW1wbGVtZW50YXRpb24gaXQgd2FzIGludm9rZWQgYnkgRmx1c2gsIGUuZy4gR2V0
UGl4ZWxCdWZmZXIgd291bGQgYmUgaW5zaWRlCisgICAgICAgIGEgc2VjdGlvbiBvZiBjb21tYW5k
cyBiZWluZyBmbHVzaGVkLiBGbHVzaCBpcyBhIHdyaXRlIG9wZXJhdGlvbi4gQXMgc3VjaAorICAg
ICAgICBpdCB3b3VsZCBjcmVhdGUgYSBnZXQgb2YgdW5mbHVzaGVkIGNvbnRlbnQuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjphcHBlbmQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OmFwcGx5KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjpkZXN0cm95KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjpzYWZlQ29weSBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OnNpemVPZkl0ZW1JbkJ5
dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojppc0RyYXdpbmdJdGVtKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojppc0lubGluZUl0ZW0pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Om9wZXJhdG9yPDwpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlckltcGwuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oOgorCiAyMDIyLTAyLTA4ICBLaW1tbyBLaW5udW5l
biAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzcGxheUxpc3RSZWNvcmRlciBp
bXBsZW1lbnRhdGlvbnMgYXJlIG5vdCBhYmxlIHRvIG9idGFpbiBleHRyYSBpbmZvcm1hdGlvbiBv
dXQgb2Ygc291cmNlIEltYWdlQml0bWFwcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwMWMzYjkwNGY4NzMzNzU5YWYw
ZGFjY2FkMjVkYTJiMTlmYjRkODM1Li4wMmJhMmNjMGVjYjdlZjFiNDNlNTdmMWEyNDJjZmEzMzNh
YmQ0ZWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIyLTAyLTA4ICBLaW1tbyBLaW5u
dW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1hZ2VCdWZmZXI6OmdldC9w
dXRQaXhlbEJ1ZmZlciBzaG91bGQgbm90IGdvIHRocm91Z2ggRGlzcGxheUxpc3QKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjMwNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgY29kZSB0aGF0IGNh
cnJpZXMgb3V0IFJlbW90ZUltYWdlQnVmZmVyUHJveHkgR2V0UGl4ZWxCdWZmZXIsIFB1dFBpeGVs
QnVmZmVyCisgICAgICAgIGZyb20gdGhlIGRpc3BsYXkgbGlzdCBwbGF5YmFjayB0byBSZW1vdGVJ
bWFnZUJ1ZmZlciBpbXBsZW1lbnRhdGlvbgorICAgICAgICBpbiBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLCB0aGUgc2FtZSBwbGFjZSB0aGF0IGhvc3RzIG90aGVyCisgICAgICAgIFJlbW90ZUltYWdl
QnVmZmVyIGZ1bmN0aW9uIGludm9jYXRpb25zLgorCisgICAgICAgIFRoaXMgbWFrZXMgaXQgcG9z
c2libGUgaW4gdGhlIGZ1dHVyZSB0byBtYXJrIEdldFBpeGVsQnVmZmVyIGFzIGEgcmVhZCBvcGVy
YXRpb24KKyAgICAgICAgZGVwZW5kaW5nIG9uIHRoZSBwcmV2aW91cyB3cml0ZSBvcGVyYXRpb25z
LiBQcmV2aW91c2x5IEdldFBpeGVsQnVmZmVyIHdhcyByZWNvcmRlZAorICAgICAgICB0byB0aGUg
ZGlzcGxheSBsaXN0IGJlZm9yZSB0aGUgZGlzcGxheSBsaXN0IHdhcyBmbHVzaGVkLCB3aGljaCBp
cyBzZW1hbnRpY2FsbHkgd3JvbmcKKyAgICAgICAgYW5kIGluIHByYWN0aWNlIHdvdWxkIGNhdXNl
IGludmVydGVkIHJlZmVyZW5jZXMuCisKKyAgICAgICAgU2ltcGxpZnkgdGhlIHByb3RvY29sIHRv
IGltcGxlbWVudCB0aGUgR2V0UGl4ZWxCdWZmZXIuIFByZXZpb3VzbHkgaXQgd2FzOgorICAgICAg
ICAgLSBJZiBHUFVQIGRvZXMgbm90IGhhdmUgdGhlIHNlbWFwaG9yZSBhbmQgdGhlIHNobSwgYXNr
IGZvciBHUFVQIHRvIHNlbmQgdGhlbSwgIHN5bmMKKyAgICAgICAgIC0gRWxzZSBpZiBHUFVQIGRv
ZXMgbm90IGhhdmUgdGhlIHNlbWFwaG9yZSwgYXNrIGZvciBHUFVQIHRvIHNlbmQgaXQsIHN5bmMK
KyAgICAgICAgIC0gRWxzZSBpZiBHUFVQIGRvZXMgbm90IGhhdmUgdGhlIHNobSBzZW5kLCBhc2sg
Zm9yIEdQVVAgdG8gc2VuZCBpdCwgc3luYworICAgICAgICAgLSBTZW5kIHRoZSBHZXRQaXhlbEJ1
ZmZlciBtZXNzYWdlIHZpYSBzdHJlYW0gYXN5bmMKKyAgICAgICAgIC0gV2FpdCBmb3IgdGhlIHNl
bWFwaG9yZQorCisgICAgICAgIEFmdGVyIGl0IGlzOgorICAgICAgICAgLSBJZiBHUFVQIGRvZXMg
bm90IGhhdmUgdGhlIHNobSBzZW5kIEdldFBpeGVsQnVmZmVyIHdpdGggdGhlIHNobSwgc3luYwor
ICAgICAgICAgLSBFbHNlIHNlbmQgdGhlIEdldFBpeGVsQnVmZmVyIHZpYSBzdHJlYW0gc3luYwor
CisgICAgICAgIFRoZXJlJ3Mgbm8gcG9pbnQgaW4gc2VuZGluZyBhIHNlbWFwaG9yZSwgdGhlIHN0
cmVhbSBzeW5jIG1lc3NhZ2UgaXMKKyAgICAgICAganVzdCBhIHdhaXQgb24gdGhlIHN0cmVhbSBz
ZW1hcGhvcmUuIEFsc28sIHNpbmNlIHNlbWFwaG9yZXMKKyAgICAgICAgbWlnaHQgaGF2ZSBzcHVy
aW91cyB3YWtldXBzLCBpdCBpcyBub3QgZW5vdWdoIG9mIGEgcHJvdG9jb2wgdG8gd2FpdCBhCisg
ICAgICAgIHBsYWluIHNlbWFwaG9yZS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldFBpeGVsQnVmZmVyRm9ySW1hZ2VC
dWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpnZXRQaXhl
bEJ1ZmZlckZvckltYWdlQnVmZmVyV2l0aE5ld01lbW9yeSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnB1dFBpeGVsQnVmZmVyRm9ySW1hZ2VCdWZmZXIpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlz
dFJlY29yZGVyUHJveHkuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdwdVByb2Nlc3NDb25uZWN0aW9u
RGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OmdldFBpeGVsQnVmZmVyRm9ySW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OnB1dFBpeGVsQnVmZmVyRm9ySW1hZ2VCdWZmZXIpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnVwZGF0ZVNoYXJlZE1l
bW9yeUZvckdldFBpeGVsQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpkZXN0cm95R2V0UGl4ZWxCdWZmZXJTaGFyZWRNZW1vcnkpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5o
OgorCiAyMDIyLTAyLTA4ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgRGlzcGxheUxpc3RSZWNvcmRlciBpbXBsZW1lbnRhdGlvbnMgYXJlIG5vdCBhYmxl
IHRvIG9idGFpbiBleHRyYSBpbmZvcm1hdGlvbiBvdXQgb2Ygc291cmNlIEltYWdlQml0bWFwcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKaW5kZXggZDliMGVkZGMyNjhjMjk1YjczZDliNjYxZWU4
YzE1NmRiYTNkYjk3Ni4uMjNkNjQwYTEwOGIyMjNlY2E5ZDU4N2Y5NTJiZTgxMzhkMWNjM2JlNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCkBAIC0yOTgsMTAgKzI5OCw2IEBAIHZvaWQgRGlz
cGxheUxpc3Q6OmFwcGVuZChJdGVtSGFuZGxlIGl0ZW0pCiAgICAgICAgIHJldHVybiBhcHBlbmQ8
RmlsbEVsbGlwc2U+KGl0ZW0uZ2V0PEZpbGxFbGxpcHNlPigpKTsKICAgICBjYXNlIEl0ZW1UeXBl
OjpGbHVzaENvbnRleHQ6CiAgICAgICAgIHJldHVybiBhcHBlbmQ8Rmx1c2hDb250ZXh0PihpdGVt
LmdldDxGbHVzaENvbnRleHQ+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkdldFBpeGVsQnVmZmVy
OgotICAgICAgICByZXR1cm4gYXBwZW5kPEdldFBpeGVsQnVmZmVyPihpdGVtLmdldDxHZXRQaXhl
bEJ1ZmZlcj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UHV0UGl4ZWxCdWZmZXI6Ci0gICAgICAg
IHJldHVybiBhcHBlbmQ8UHV0UGl4ZWxCdWZmZXI+KGl0ZW0uZ2V0PFB1dFBpeGVsQnVmZmVyPigp
KTsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1l
ZGlhOgogICAgICAgICByZXR1cm4gYXBwZW5kPFBhaW50RnJhbWVGb3JNZWRpYT4oaXRlbS5nZXQ8
UGFpbnRGcmFtZUZvck1lZGlhPigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bUJ1ZmZlci5jcHAKaW5kZXggNDYzYjEzNDZkYzM3MjM0NWE0OWNiOGE1YjU2MjJkMjZkNzg2MTQx
OC4uMTM1YWVhMjhkZGU5YTM2NWQ2NTNkYzAxMWMzODVkZmI3ZDI5MzFiZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKQEAgLTE5NSwxMSArMTk1LDYgQEAg
dm9pZCBJdGVtSGFuZGxlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgY2Fz
ZSBJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OgogICAgICAgICBnZXQ8Rmx1c2hDb250ZXh0PigpLmFw
cGx5KGNvbnRleHQpOwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBJdGVtVHlwZTo6R2V0UGl4
ZWxCdWZmZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6UHV0UGl4ZWxCdWZmZXI6Ci0gICAgICAgIC8v
IFNob3VsZCBhbHJlYWR5IGJlIGhhbmRsZWQgYnkgdGhlIGRlbGVnYXRlLgotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwogI2lmIEVOQUJMRShWSURFTykKICAg
ICBjYXNlIEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6CiAgICAgICAgIGdldDxQYWludEZy
YW1lRm9yTWVkaWE+KCkuYXBwbHkoY29udGV4dCk7CkBAIC0yOTYsMTIgKzI5MSw2IEBAIHZvaWQg
SXRlbUhhbmRsZTo6ZGVzdHJveSgpCiAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJvdW5kZWRSZWN0
OgogICAgICAgICBnZXQ8RmlsbFJvdW5kZWRSZWN0PigpLn5GaWxsUm91bmRlZFJlY3QoKTsKICAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgSXRlbVR5cGU6OkdldFBpeGVsQnVmZmVyOgotICAgICAg
ICBnZXQ8R2V0UGl4ZWxCdWZmZXI+KCkufkdldFBpeGVsQnVmZmVyKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICBjYXNlIEl0ZW1UeXBlOjpQdXRQaXhlbEJ1ZmZlcjoKLSAgICAgICAgZ2V0PFB1dFBp
eGVsQnVmZmVyPigpLn5QdXRQaXhlbEJ1ZmZlcigpOwotICAgICAgICByZXR1cm47CiAgICAgY2Fz
ZSBJdGVtVHlwZTo6U2V0TGluZURhc2g6CiAgICAgICAgIGdldDxTZXRMaW5lRGFzaD4oKS5+U2V0
TGluZURhc2goKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTI4LDEwICs1MTcsNiBAQCBib29sIEl0
ZW1IYW5kbGU6OnNhZmVDb3B5KEl0ZW1UeXBlIGl0ZW1UeXBlLCBJdGVtSGFuZGxlIGRlc3RpbmF0
aW9uKSBjb25zdAogICAgICAgICByZXR1cm4gY29weUludG88RmlsbFJlY3RXaXRoUm91bmRlZEhv
bGU+KGl0ZW1PZmZzZXQsICp0aGlzKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUm91bmRlZFJl
Y3Q6CiAgICAgICAgIHJldHVybiBjb3B5SW50bzxGaWxsUm91bmRlZFJlY3Q+KGl0ZW1PZmZzZXQs
ICp0aGlzKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpHZXRQaXhlbEJ1ZmZlcjoKLSAgICAgICAgcmV0
dXJuIGNvcHlJbnRvPEdldFBpeGVsQnVmZmVyPihpdGVtT2Zmc2V0LCAqdGhpcyk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6UHV0UGl4ZWxCdWZmZXI6Ci0gICAgICAgIHJldHVybiBjb3B5SW50bzxQdXRQ
aXhlbEJ1ZmZlcj4oaXRlbU9mZnNldCwgKnRoaXMpOwogICAgIGNhc2UgSXRlbVR5cGU6OlNldExp
bmVEYXNoOgogICAgICAgICByZXR1cm4gY29weUludG88U2V0TGluZURhc2g+KGl0ZW1PZmZzZXQs
ICp0aGlzKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1U
eXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1UeXBlLmNwcAppbmRleCBkZmExZTc0ZmIyNDg2YzM0YTA5YzFmYTFiYTJj
YmRlNzQ5MDA0ZGRiLi5iMWE5YjMxOTFkOGM4NzE1M2I3ZmJjZjFlMjU1N2U5NDdmMGU5NmVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwCkBAIC0xMzQsMTAgKzEz
NCw2IEBAIHN0YXRpYyBzaXplX3Qgc2l6ZU9mSXRlbUluQnl0ZXMoSXRlbVR5cGUgdHlwZSkKICAg
ICAgICAgcmV0dXJuIHNpemVvZihGaWxsRWxsaXBzZSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6Rmx1
c2hDb250ZXh0OgogICAgICAgICByZXR1cm4gc2l6ZW9mKEZsdXNoQ29udGV4dCk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6R2V0UGl4ZWxCdWZmZXI6Ci0gICAgICAgIHJldHVybiBzaXplb2YoR2V0UGl4
ZWxCdWZmZXIpOwotICAgIGNhc2UgSXRlbVR5cGU6OlB1dFBpeGVsQnVmZmVyOgotICAgICAgICBy
ZXR1cm4gc2l6ZW9mKFB1dFBpeGVsQnVmZmVyKTsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgY2Fz
ZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgogICAgICAgICByZXR1cm4gc2l6ZW9mKFBh
aW50RnJhbWVGb3JNZWRpYSk7CkBAIC0yMTIsNyArMjA4LDYgQEAgYm9vbCBpc0RyYXdpbmdJdGVt
KEl0ZW1UeXBlIHR5cGUpCiAgICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6CiAgICAgY2FzZSBJ
dGVtVHlwZTo6U2V0U3Ryb2tlVGhpY2tuZXNzOgogICAgIGNhc2UgSXRlbVR5cGU6OlRyYW5zbGF0
ZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpHZXRQaXhlbEJ1ZmZlcjoKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6CiAgICAgY2Fz
ZSBJdGVtVHlwZTo6Q2xlYXJSZWN0OgpAQCAtMjQ3LDcgKzI0Miw2IEBAIGJvb2wgaXNEcmF3aW5n
SXRlbShJdGVtVHlwZSB0eXBlKQogI2lmIEVOQUJMRShWSURFTykKICAgICBjYXNlIEl0ZW1UeXBl
OjpQYWludEZyYW1lRm9yTWVkaWE6CiAjZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpQdXRQaXhl
bEJ1ZmZlcjoKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VFbGxpcHNlOgogI2lmIEVOQUJMRShJ
TkxJTkVfUEFUSF9EQVRBKQogICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUFyYzoKQEAgLTMwNCw4
ICsyOTgsNiBAQCBib29sIGlzSW5saW5lSXRlbShJdGVtVHlwZSB0eXBlKQogICAgIGNhc2UgSXRl
bVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50OgogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0
V2l0aFJvdW5kZWRIb2xlOgogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpHZXRQaXhlbEJ1ZmZlcjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpQdXRQ
aXhlbEJ1ZmZlcjoKICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lRGFzaDoKICAgICBjYXNlIEl0
ZW1UeXBlOjpTZXRTdGF0ZToKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VQYXRoOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmgKaW5kZXggOTFmM2Y1ZjUyODhiYzdlYjJkYWQ2
ZTQyZGRmYjNkYmYxOTgwYzc4My4uYTM4ZmZjOTFlODUyMGNkM2FhNTBiMzgxMDViNGQ2OTY3NjY1
NmFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oCkBAIC04MCw4ICs4
MCw2IEBAIGVudW0gY2xhc3MgSXRlbVR5cGUgOiB1aW50OF90IHsKICAgICBGaWxsUGF0aCwKICAg
ICBGaWxsRWxsaXBzZSwKICAgICBGbHVzaENvbnRleHQsCi0gICAgR2V0UGl4ZWxCdWZmZXIsCi0g
ICAgUHV0UGl4ZWxCdWZmZXIsCiAjaWYgRU5BQkxFKFZJREVPKQogICAgIFBhaW50RnJhbWVGb3JN
ZWRpYSwKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IGEz
NzVkYzI2MjU4YzdhNGViZjRlMGYxNTcwMGM5YTQwY2NiM2E2ZGMuLmY4ZWE5NzlkNDIwOTBlOTcz
ZmEyODg3Njk5M2Y2MGM1ZjZiM2YwY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5jcHAKQEAgLTc1OSw2MSArNzU5LDYgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZpbGxFbGxpcHNlJiBpdGVtKQogICAgIHJldHVybiB0czsK
IH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IEdldFBpeGVsQnVmZmVyJiBpdGVtKQotewotICAgIHRzLmR1bXBQcm9wZXJ0eSgib3V0cHV0Rm9y
bWF0IiwgaXRlbS5vdXRwdXRGb3JtYXQoKSk7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJzcmNSZWN0
IiwgaXRlbS5zcmNSZWN0KCkpOwotICAgIHJldHVybiB0czsKLX0KLQotUHV0UGl4ZWxCdWZmZXI6
OlB1dFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyJiBwaXhlbEJ1ZmZlciwgY29uc3QgSW50
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbiBkZXN0Rm9ybWF0KQotICAgIDogbV9zcmNSZWN0KHNyY1JlY3QpCi0gICAgLCBtX2Rl
c3RQb2ludChkZXN0UG9pbnQpCi0gICAgLCBtX3BpeGVsQnVmZmVyKHBpeGVsQnVmZmVyLmRlZXBD
bG9uZSgpKSAvLyBUaGlzIGNvcHkgaXMgYWN0dWFsbHkgcmVxdWlyZWQgdG8gcHJlc2VydmUgdGhl
IHNlbWFudGljcyBvZiBwdXRQaXhlbEJ1ZmZlcigpLgotICAgICwgbV9kZXN0Rm9ybWF0KGRlc3RG
b3JtYXQpCi17Ci19Ci0KLVB1dFBpeGVsQnVmZmVyOjpQdXRQaXhlbEJ1ZmZlcihQaXhlbEJ1ZmZl
ciYmIHBpeGVsQnVmZmVyLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYg
ZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpCi0gICAgOiBtX3Ny
Y1JlY3Qoc3JjUmVjdCkKLSAgICAsIG1fZGVzdFBvaW50KGRlc3RQb2ludCkKLSAgICAsIG1fcGl4
ZWxCdWZmZXIoV1RGTW92ZShwaXhlbEJ1ZmZlcikpCi0gICAgLCBtX2Rlc3RGb3JtYXQoZGVzdEZv
cm1hdCkKLXsKLX0KLQotUHV0UGl4ZWxCdWZmZXI6OlB1dFBpeGVsQnVmZmVyKGNvbnN0IFB1dFBp
eGVsQnVmZmVyJiBvdGhlcikKLSAgICA6IG1fc3JjUmVjdChvdGhlci5tX3NyY1JlY3QpCi0gICAg
LCBtX2Rlc3RQb2ludChvdGhlci5tX2Rlc3RQb2ludCkKLSAgICAsIG1fcGl4ZWxCdWZmZXIob3Ro
ZXIubV9waXhlbEJ1ZmZlci5kZWVwQ2xvbmUoKSkKLSAgICAsIG1fZGVzdEZvcm1hdChvdGhlci5t
X2Rlc3RGb3JtYXQpCi17Ci19Ci0KLVB1dFBpeGVsQnVmZmVyJiBQdXRQaXhlbEJ1ZmZlcjo6b3Bl
cmF0b3I9KGNvbnN0IFB1dFBpeGVsQnVmZmVyJiBvdGhlcikKLXsKLSAgICBQdXRQaXhlbEJ1ZmZl
ciBjb3B5IHsgb3RoZXIgfTsKLSAgICBzd2FwKGNvcHkpOwotICAgIHJldHVybiAqdGhpczsKLX0K
LQotdm9pZCBQdXRQaXhlbEJ1ZmZlcjo6c3dhcChQdXRQaXhlbEJ1ZmZlciYgb3RoZXIpCi17Ci0g
ICAgc3RkOjpzd2FwKG1fc3JjUmVjdCwgb3RoZXIubV9zcmNSZWN0KTsKLSAgICBzdGQ6OnN3YXAo
bV9kZXN0UG9pbnQsIG90aGVyLm1fZGVzdFBvaW50KTsKLSAgICBzdGQ6OnN3YXAobV9waXhlbEJ1
ZmZlciwgb3RoZXIubV9waXhlbEJ1ZmZlcik7Ci0gICAgc3RkOjpzd2FwKG1fZGVzdEZvcm1hdCwg
b3RoZXIubV9kZXN0Rm9ybWF0KTsKLX0KLQotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IFB1dFBpeGVsQnVmZmVyJiBpdGVtKQotewotICAgIHRzLmR1
bXBQcm9wZXJ0eSgicGl4ZWxCdWZmZXJTaXplIiwgaXRlbS5waXhlbEJ1ZmZlcigpLnNpemUoKSk7
Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJzcmNSZWN0IiwgaXRlbS5zcmNSZWN0KCkpOwotICAgIHRz
LmR1bXBQcm9wZXJ0eSgiZGVzdFBvaW50IiwgaXRlbS5kZXN0UG9pbnQoKSk7Ci0gICAgdHMuZHVt
cFByb3BlcnR5KCJkZXN0Rm9ybWF0IiwgaXRlbS5kZXN0Rm9ybWF0KCkpOwotICAgIHJldHVybiB0
czsKLX0KLQogI2lmIEVOQUJMRShWSURFTykKIFBhaW50RnJhbWVGb3JNZWRpYTo6UGFpbnRGcmFt
ZUZvck1lZGlhKE1lZGlhUGxheWVyJiBwbGF5ZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24pCiAgICAgOiBtX2lkZW50aWZpZXIocGxheWVyLmlkZW50aWZpZXIoKSkKQEAgLTExMDYsOCAr
MTA1MSw2IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBJ
dGVtVHlwZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRoOiB0cyA8PCAiZmlsbC1w
YXRoIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbEVsbGlwc2U6IHRzIDw8ICJmaWxs
LWVsbGlwc2UiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6IHRzIDw8
ICJmbHVzaC1jb250ZXh0IjsgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6R2V0UGl4ZWxCdWZm
ZXI6IHRzIDw8ICJnZXQtcGl4ZWwtYnVmZmVyIjsgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
UHV0UGl4ZWxCdWZmZXI6IHRzIDw8ICJwdXQtcGl4ZWwtYnVmZmVyIjsgYnJlYWs7CiAjaWYgRU5B
QkxFKFZJREVPKQogICAgIGNhc2UgSXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYTogdHMgPDwg
InBhaW50LWZyYW1lLWZvci1tZWRpYSI7IGJyZWFrOwogI2VuZGlmCkBAIC0xMjc4LDEyICsxMjIx
LDYgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgSXRlbUhhbmRsZSBp
dGVtKQogICAgIGNhc2UgSXRlbVR5cGU6OkZsdXNoQ29udGV4dDoKICAgICAgICAgdHMgPDwgaXRl
bS5nZXQ8Rmx1c2hDb250ZXh0PigpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpHZXRQaXhlbEJ1ZmZlcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8R2V0UGl4ZWxCdWZmZXI+
KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlB1dFBpeGVsQnVmZmVyOgot
ICAgICAgICB0cyA8PCBpdGVtLmdldDxQdXRQaXhlbEJ1ZmZlcj4oKTsKLSAgICAgICAgYnJlYWs7
CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGNhc2UgSXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRp
YToKICAgICAgICAgdHMgPDwgaXRlbS5nZXQ8UGFpbnRGcmFtZUZvck1lZGlhPigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggZWY0ODA3OGQ2ZmFjNWZmNjVkMTFmMzA0OTYw
MzY1NTE0MTI4Nzc2OC4uOWJlNDE1Y2ZmMjNiMjU2NWQ1ZTQ5M2M3MWY5NTdiNTcxNmI2MTE0NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC0xOTY4LDEyNyArMTk2OCw2IEBA
IHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fcmVjdDsKIH07CiAKLWNsYXNzIEdldFBpeGVsQnVm
ZmVyIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3RleHByIEl0ZW1UeXBlIGl0ZW1UeXBlID0g
SXRlbVR5cGU6OkdldFBpeGVsQnVmZmVyOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lu
bGluZUl0ZW0gPSBmYWxzZTsKLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRl
bSA9IGZhbHNlOwotCi0gICAgR2V0UGl4ZWxCdWZmZXIoUGl4ZWxCdWZmZXJGb3JtYXQgb3V0cHV0
Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KQotICAgICAgICA6IG1fc3JjUmVjdChzcmNS
ZWN0KQotICAgICAgICAsIG1fb3V0cHV0Rm9ybWF0KFdURk1vdmUob3V0cHV0Rm9ybWF0KSkKLSAg
ICB7Ci0gICAgfQotCi0gICAgLy8gRXhwbGljaXQgZGVzdHJ1Y3RvciBhZGRlZCB0byBmb3JjZSBu
b24tdHJpdmlhbCBkZXN0cnVjdG9yIG9uIGFsbCBwbGF0Zm9ybXMKLSAgICAvLyBhcyB0aGUgZW5j
b2RpbmcgbG9naWMgY3VycmVudGx5IGhhcmRjb2RlcyB3aGljaCBkaXNwbGF5IGxpc3QgaXRlbSB0
eXBlcyBuZWVkCi0gICAgLy8gb3V0IG9mIGxpbmUgdHJlYXRtZW50IHJhdGhlciB0aGFuIHVzaW5n
IHRoZSBpc0lubGluZUl0ZW0gY29uc3RhbnQuCi0gICAgfkdldFBpeGVsQnVmZmVyKCkgeyB9Ci0K
LSAgICBjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0KCkgY29uc3QgeyByZXR1
cm4gbV9vdXRwdXRGb3JtYXQ7IH0KLSAgICBJbnRSZWN0IHNyY1JlY3QoKSBjb25zdCB7IHJldHVy
biBtX3NyY1JlY3Q7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxHZXRQaXhlbEJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKLQotcHJpdmF0ZToK
LSAgICBJbnRSZWN0IG1fc3JjUmVjdDsKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBtX291dHB1dEZv
cm1hdDsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEVuY29kZXI+Ci12b2lkIEdldFBpeGVsQnVmZmVy
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IG1fc3Jj
UmVjdDsKLSAgICBlbmNvZGVyIDw8IG1fb3V0cHV0Rm9ybWF0OwotfQotCi10ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgotc3RkOjpvcHRpb25hbDxHZXRQaXhlbEJ1ZmZlcj4gR2V0UGl4ZWxCdWZmZXI6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIHN0ZDo6b3B0aW9uYWw8SW50UmVjdD4g
c3JjUmVjdDsKLSAgICBkZWNvZGVyID4+IHNyY1JlY3Q7Ci0gICAgaWYgKCFzcmNSZWN0KQotICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZl
ckZvcm1hdD4gb3V0cHV0Rm9ybWF0OwotICAgIGRlY29kZXIgPj4gb3V0cHV0Rm9ybWF0OwotICAg
IGlmICghb3V0cHV0Rm9ybWF0KQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAg
cmV0dXJuIHt7IFdURk1vdmUoKm91dHB1dEZvcm1hdCksICpzcmNSZWN0IH19OwotfQotCi1jbGFz
cyBQdXRQaXhlbEJ1ZmZlciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBJdGVtVHlw
ZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpQdXRQaXhlbEJ1ZmZlcjsKLSAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgaXNJbmxpbmVJdGVtID0gZmFsc2U7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGlzRHJhd2luZ0l0ZW0gPSB0cnVlOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgUHV0UGl4ZWxCdWZm
ZXIoY29uc3QgUGl4ZWxCdWZmZXImLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQ
b2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpOwotICAg
IFdFQkNPUkVfRVhQT1JUIFB1dFBpeGVsQnVmZmVyKFBpeGVsQnVmZmVyJiYsIGNvbnN0IEludFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIEFscGhhUHJlbXVsdGlwbGlj
YXRpb24gZGVzdEZvcm1hdCk7Ci0KLSAgICBQdXRQaXhlbEJ1ZmZlcihjb25zdCBQdXRQaXhlbEJ1
ZmZlciYpOwotICAgIFB1dFBpeGVsQnVmZmVyKFB1dFBpeGVsQnVmZmVyJiYpID0gZGVmYXVsdDsK
LSAgICBQdXRQaXhlbEJ1ZmZlciYgb3BlcmF0b3I9KGNvbnN0IFB1dFBpeGVsQnVmZmVyJik7Ci0g
ICAgUHV0UGl4ZWxCdWZmZXImIG9wZXJhdG9yPShQdXRQaXhlbEJ1ZmZlciYmKSA9IGRlZmF1bHQ7
Ci0KLSAgICB2b2lkIHN3YXAoUHV0UGl4ZWxCdWZmZXImKTsKLQotICAgIGNvbnN0IFBpeGVsQnVm
ZmVyJiBwaXhlbEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fcGl4ZWxCdWZmZXI7IH0KLSAgICBJ
bnRSZWN0IHNyY1JlY3QoKSBjb25zdCB7IHJldHVybiBtX3NyY1JlY3Q7IH0KLSAgICBJbnRQb2lu
dCBkZXN0UG9pbnQoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RQb2ludDsgfQotICAgIEFscGhhUHJl
bXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdEZvcm1hdDsg
fQotCi0gICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQotICAgIHN0ZDo6b3B0
aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiB7eyBtX2Rlc3RQ
b2ludCwgbV9zcmNSZWN0LnNpemUoKSB9fTsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFB1dFBpeGVsQnVmZmVyPiBkZWNvZGUoRGVjb2RlciYp
OwotCi1wcml2YXRlOgotICAgIEludFJlY3QgbV9zcmNSZWN0OwotICAgIEludFBvaW50IG1fZGVz
dFBvaW50OwotICAgIFBpeGVsQnVmZmVyIG1fcGl4ZWxCdWZmZXI7Ci0gICAgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbiBtX2Rlc3RGb3JtYXQ7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgot
dm9pZCBQdXRQaXhlbEJ1ZmZlcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0g
ICAgZW5jb2RlciA8PCBtX3BpeGVsQnVmZmVyOwotICAgIGVuY29kZXIgPDwgbV9zcmNSZWN0Owot
ICAgIGVuY29kZXIgPDwgbV9kZXN0UG9pbnQ7Ci0gICAgZW5jb2RlciA8PCBtX2Rlc3RGb3JtYXQ7
Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1zdGQ6Om9wdGlvbmFsPFB1dFBpeGVsQnVm
ZmVyPiBQdXRQaXhlbEJ1ZmZlcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCi17Ci0gICAgc3Rk
OjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gcGl4ZWxCdWZmZXI7Ci0gICAgc3RkOjpvcHRpb25hbDxJ
bnRSZWN0PiBzcmNSZWN0OwotICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGRlc3RQb2ludDsK
LSAgICBzdGQ6Om9wdGlvbmFsPEFscGhhUHJlbXVsdGlwbGljYXRpb24+IGRlc3RGb3JtYXQ7Ci0K
LSAgICBkZWNvZGVyID4+IHBpeGVsQnVmZmVyOwotICAgIGlmICghcGl4ZWxCdWZmZXIpCi0gICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBkZWNvZGVyID4+IHNyY1JlY3Q7Ci0gICAg
aWYgKCFzcmNSZWN0KQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgZGVjb2Rl
ciA+PiBkZXN0UG9pbnQ7Ci0gICAgaWYgKCFkZXN0UG9pbnQpCi0gICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Ci0KLSAgICBkZWNvZGVyID4+IGRlc3RGb3JtYXQ7Ci0gICAgaWYgKCFkZXN0Rm9y
bWF0KQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIHt7IFdURk1v
dmUoKnBpeGVsQnVmZmVyKSwgKnNyY1JlY3QsICpkZXN0UG9pbnQsICpkZXN0Rm9ybWF0IH19Owot
fQotCiAjaWYgRU5BQkxFKFZJREVPKQogY2xhc3MgUGFpbnRGcmFtZUZvck1lZGlhIHsKIHB1Ymxp
YzoKQEAgLTI0MjMsOCArMjMwMiw2IEBAIHVzaW5nIERpc3BsYXlMaXN0SXRlbSA9IHN0ZDo6dmFy
aWFudAogICAgICwgRmlsbFJlY3RXaXRoUm91bmRlZEhvbGUKICAgICAsIEZpbGxSb3VuZGVkUmVj
dAogICAgICwgRmx1c2hDb250ZXh0Ci0gICAgLCBHZXRQaXhlbEJ1ZmZlcgotICAgICwgUHV0UGl4
ZWxCdWZmZXIKICAgICAsIFJlc3RvcmUKICAgICAsIFJvdGF0ZQogICAgICwgU2F2ZQpAQCAtMjUy
Nyw4ICsyNDA0LDYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbVR5cGU+IHsKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkZpbGxQYXRoLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbEVsbGlw
c2UsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGbHVzaENvbnRleHQsCi0g
ICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpHZXRQaXhlbEJ1ZmZlciwKLSAgICBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlB1dFBpeGVsQnVmZmVyLAogI2lmIEVOQUJM
RShWSURFTykKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlBhaW50RnJhbWVG
b3JNZWRpYSwKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5k
ZXggMjZjNGVmYzk2MDRjNjQwMWRiY2VhODkxOWI5MTliODFhOGY1OGI5ZC4uMTIwNTdjMDUxYzgy
YmIyM2RkZWM3ZjlhNTYyMWY3MGU2NmY0MzQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5oCkBAIC0zNiwxOCArMzYsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1lbnVtIGNsYXNzIEFscGhhUHJlbXVsdGlwbGljYXRpb24gOiB1aW50OF90OwotCi1jbGFzcyBG
bG9hdFBvaW50OwogY2xhc3MgRmxvYXRQb2ludDsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEZv
bnQ7CiBjbGFzcyBHbHlwaEJ1ZmZlcjsKIGNsYXNzIEltYWdlOwotY2xhc3MgUGl4ZWxCdWZmZXI7
CiBjbGFzcyBTb3VyY2VJbWFnZTsKIAotc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlOwogc3Ry
dWN0IEltYWdlUGFpbnRpbmdPcHRpb25zOwogCiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewpAQCAt
NTksOCArNTQsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVjb3JkZXIoY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mLCBEcmF3R2x5cGhzUmVjb3JkZXI6OkRlY29uc3RydWN0RHJhd0ds
eXBocyA9IERyYXdHbHlwaHNSZWNvcmRlcjo6RGVjb25zdHJ1Y3REcmF3R2x5cGhzOjpZZXMpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflJlY29yZGVyKCk7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwdXRQaXhl
bEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlciYsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEludFBvaW50JiBkZXN0UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBjb252ZXJ0VG9MdW1pbmFuY2VNYXNrKCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCB0cmFuc2Zvcm1Ub0NvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmbHVzaENvbnRleHQoR3JhcGhpY3NDb250
ZXh0Rmx1c2hJZGVudGlmaWVyKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXJJbXBsLmNwcAppbmRleCAxZDdmZDI1MDAyNmUzZTAyOTNhZDc3NDRjOTQ4YjdjNWY2
ODRjNTc3Li41YjA2NzY4NzQyNTBmODZhYWJlOTYxM2JlNzVlOWZiNDZlYTM5MzE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAKQEAgLTYzLDE2ICs2
Myw2IEBAIFJlY29yZGVySW1wbDo6flJlY29yZGVySW1wbCgpCiAgICAgICAgIExPRyhEaXNwbGF5
TGlzdHMsICJSZWNvcmRlZCBkaXNwbGF5IGxpc3Q6XG4lcyIsIG1fZGlzcGxheUxpc3QuZGVzY3Jp
cHRpb24oKS5kYXRhKCkpOwogfQogCi12b2lkIFJlY29yZGVySW1wbDo6Z2V0UGl4ZWxCdWZmZXIo
Y29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCkKLXsKLSAgICBhcHBlbmQ8R2V0UGl4ZWxCdWZmZXI+KG91dHB1dEZvcm1hdCwgc291
cmNlUmVjdCk7Ci19Ci0KLXZvaWQgUmVjb3JkZXJJbXBsOjpwdXRQaXhlbEJ1ZmZlcihjb25zdCBQ
aXhlbEJ1ZmZlciYgcGl4ZWxCdWZmZXIsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IElu
dFBvaW50JiBkZXN0UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCkKLXsK
LSAgICBhcHBlbmQ8UHV0UGl4ZWxCdWZmZXI+KHBpeGVsQnVmZmVyLCBzcmNSZWN0LCBkZXN0UG9p
bnQsIGRlc3RGb3JtYXQpOwotfQotCiBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBS
ZWNvcmRlckltcGw6OmNyZWF0ZU5lc3RlZENvbnRleHQoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFs
Q2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNKQogewogICAgIHJldHVybiBt
YWtlVW5pcXVlPFJlY29yZGVySW1wbD4oKnRoaXMsIEdyYXBoaWNzQ29udGV4dFN0YXRlIHsgfSwg
aW5pdGlhbENsaXAsIGluaXRpYWxDVE0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlckltcGwuaAppbmRleCAwNmY5OTExZTkxNWNkZWJmOWQ2YTFmOGIzYjgzMTg4YmQ5OTNj
ZTE1Li41YzQwNWVlMjJhMTQwOTVmZGI1OTNiNmY0NTViMjhmODdlNmEwNjdiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaApAQCAtNDIsOCArNDIsNiBAQCBw
dWJsaWM6CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlMaXN0
LmlzRW1wdHkoKTsgfQogCi0gICAgdm9pZCBnZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZl
ckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KSBmaW5hbDsK
LSAgICB2b2lkIHB1dFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyJiwgY29uc3QgSW50UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiBkZXN0Rm9ybWF0KSBmaW5hbDsKICAgICB2b2lkIGNvbnZlcnRUb0x1bWluYW5jZU1hc2so
KSBmaW5hbCB7IH0KICAgICB2b2lkIHRyYW5zZm9ybVRvQ29sb3JTcGFjZShjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmKSBmaW5hbCB7IH0KICAgICB2b2lkIGZsdXNoQ29udGV4dChHcmFwaGlj
c0NvbnRleHRGbHVzaElkZW50aWZpZXIgaWRlbnRpZmllcikgZmluYWwgeyBhcHBlbmQ8Rmx1c2hD
b250ZXh0PihpZGVudGlmaWVyKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4
IDRhMjhiZDQ2ZmExNzcwNTNlNTdjMzEyNWYxZWVhZDEwZmNlZDY1ZTcuLmMxODYxMjE4NzM4Nzhk
NjkyNGEyZGUwNDg4MzQ2NzcwNmYzNGFkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5j
cHAKQEAgLTQzMSwxNiArNDMxLDYgQEAgdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpm
aWxsRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgaGFuZGxlSXRlbShEaXNwbGF5
TGlzdDo6RmlsbEVsbGlwc2UocmVjdCkpOwogfQogCi12b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXI6OmdldFBpeGVsQnVmZmVyKGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IFBpeGVs
QnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQpCi17Ci0gICAgbV9yZW5kZXJpbmdCYWNrZW5kLT5w
b3B1bGF0ZUdldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5KG1faW1hZ2VCdWZmZXItPmdldFBpeGVs
QnVmZmVyKG91dHB1dEZvcm1hdCwgc3JjUmVjdCkpOwotfQotCi12b2lkIFJlbW90ZURpc3BsYXlM
aXN0UmVjb3JkZXI6OnB1dFBpeGVsQnVmZmVyKGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEludFBvaW50JiBkZXN0UG9pbnQsIGNvbnN0IFBpeGVsQnVmZmVyJiBwaXhlbEJ1ZmZlciwgQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KQotewotICAgIG1faW1hZ2VCdWZmZXItPnB1
dFBpeGVsQnVmZmVyKHBpeGVsQnVmZmVyLCBzcmNSZWN0LCBkZXN0UG9pbnQsIGRlc3RGb3JtYXQp
OwotfQotCiB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmNvbnZlcnRUb0x1bWluYW5j
ZU1hc2soKQogewogICAgIG1faW1hZ2VCdWZmZXItPmNvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNw
bGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IGUxNjhlNWFlYTIxNGE4MzAwYjQxMzQxN2Y4
OTg1YjRkOTFkMzRmOWUuLmE5Nzc2YjZhNDVlMTllMWUzNmNhNjU1ODcxMjk2OWM5YmY1NzA5YWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNw
bGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtMTA5LDggKzEwOSw2IEBAIHB1YmxpYzoK
ICNlbmRpZgogICAgIHZvaWQgZmlsbFBhdGgoY29uc3QgV2ViQ29yZTo6UGF0aCYpOwogICAgIHZv
aWQgZmlsbEVsbGlwc2UoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7Ci0gICAgdm9pZCBnZXRQ
aXhlbEJ1ZmZlcihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3Jl
OjpQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0KTsKLSAgICB2b2lkIHB1dFBpeGVsQnVm
ZmVyKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBkZXN0UG9pbnQsIGNvbnN0IFdlYkNvcmU6OlBpeGVsQnVmZmVyJiwgV2ViQ29yZTo6QWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KTsKICAgICB2b2lkIGNvbnZlcnRUb0x1bWlu
YW5jZU1hc2soKTsKICAgICB2b2lkIHRyYW5zZm9ybVRvQ29sb3JTcGFjZShjb25zdCBXZWJDb3Jl
OjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKICAgICB2b2lkIHBhaW50RnJhbWVGb3JNZWRpYShX
ZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYg
ZGVzdGluYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5tZXNzYWdlcy5p
bgppbmRleCBlMjNlYWNjYTU3MmY3NWY3MTUxMjJkYTYzNmYzMzEwYzY5ODVhNzY0Li5lYzBjYTk3
YTZmOWNkOWRmZTAzODg4YWNlYTYxNjJkMmY1YjBhZGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxh
eUxpc3RSZWNvcmRlci5tZXNzYWdlcy5pbgpAQCAtNzUsOCArNzUsNiBAQCBtZXNzYWdlcyAtPiBS
ZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsKICNlbmRpZgog
ICAgIEZpbGxQYXRoKFdlYkNvcmU6OlBhdGggcGF0aCkKICAgICBGaWxsRWxsaXBzZShXZWJDb3Jl
OjpGbG9hdFJlY3QgcmVjdCkKLSAgICBHZXRQaXhlbEJ1ZmZlcihXZWJDb3JlOjpJbnRSZWN0IHNy
Y1JlY3QsIHN0cnVjdCBXZWJDb3JlOjpQaXhlbEJ1ZmZlckZvcm1hdCBvdXRwdXRGb3JtYXQpCi0g
ICAgUHV0UGl4ZWxCdWZmZXIoV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJDb3JlOjpJbnRQ
b2ludCBkZXN0UG9pbnQsIFdlYkNvcmU6OlBpeGVsQnVmZmVyIHBpeGVsQnVmZmVyLCBlbnVtOnVp
bnQ4X3QgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KQogICAgIENv
bnZlcnRUb0x1bWluYW5jZU1hc2soKQogICAgIFRyYW5zZm9ybVRvQ29sb3JTcGFjZShXZWJDb3Jl
OjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSkKICAgICBQYWludEZyYW1lRm9yTWVk
aWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZs
b2F0UmVjdCBkZXN0aW5hdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCA3MzZkZTQ1
YmVlYzczM2Y4Y2FiYTAwNDZmMjYxMzdmNzkwNmM0NTVlLi4wOTA1YTRjNWZhZWRkOTdlNWIwMDQw
NDRmOWQ4M2I3Zjk0NGRkZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0xOTUsNDcg
KzE5NSwyOSBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVy
V2l0aFF1YWxpZmllZElkZW50aWZpZXIoY29uc3QgRmxvYQogICAgIHVwZGF0ZVJlbmRlcmluZ1Jl
c291cmNlUmVxdWVzdCgpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFNoYXJlZE1lbW9yeTo6SVBDSGFu
ZGxlPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp1cGRhdGVTaGFyZWRNZW1vcnlGb3JHZXRQaXhl
bEJ1ZmZlckhlbHBlcihzaXplX3QgYnl0ZUNvdW50KQotewotICAgIE1FU1NBR0VfQ0hFQ0tfV0lU
SF9SRVRVUk5fVkFMVUUoIW1fZ2V0UGl4ZWxCdWZmZXJTaGFyZWRNZW1vcnkgfHwgYnl0ZUNvdW50
ID4gbV9nZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeS0+c2l6ZSgpLCBzdGQ6Om51bGxvcHQsICJU
aGUgZXhpc3RpbmcgU2htZW0gZm9yIGdldFBpeGVsQnVmZmVyKCkgaXMgYWxyZWFkeSBiaWcgZW5v
dWdoIHRvIGhhbmRsZSB0aGUgcmVxdWVzdCIpOwotCi0gICAgaWYgKGJ5dGVDb3VudCA+IEhUTUxD
YW52YXNFbGVtZW50OjptYXhBY3RpdmVQaXhlbE1lbW9yeSgpKSB7Ci0gICAgICAgIC8vIEp1c3Qg
YSBzYW5pdHkgY2hlY2suCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit2b2lkIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldFBpeGVsQnVmZmVyRm9ySW1hZ2VCdWZmZXIoUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVyLCBXZWJDb3JlOjpQaXhlbEJ1ZmZlckZvcm1h
dCYmIGRlc3RpbmF0aW9uRm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0JiYgc3JjUmVjdCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIE1FU1NBR0Vf
Q0hFQ0sobV9nZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeSwgIk5vIHNoYXJlZCBtZW1vcnkgZm9y
IGdldFBpeGVsQnVmZmVyRm9ySW1hZ2VCdWZmZXIiKTsKKyAgICBRdWFsaWZpZWRSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcXVhbGlmaWVkSW1hZ2VCdWZmZXIgeyBpbWFnZUJ1ZmZlciwgbV9n
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT53ZWJQcm9jZXNzSWRlbnRpZmllcigpIH07CisgICAg
aWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VC
dWZmZXIocXVhbGlmaWVkSW1hZ2VCdWZmZXIpKSB7CisgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXIg
PSBpbWFnZUJ1ZmZlci0+Z2V0UGl4ZWxCdWZmZXIoZGVzdGluYXRpb25Gb3JtYXQsIHNyY1JlY3Qp
OworICAgICAgICBpZiAocGl4ZWxCdWZmZXIpIHsKKyAgICAgICAgICAgIE1FU1NBR0VfQ0hFQ0so
cGl4ZWxCdWZmZXItPmRhdGEoKS5ieXRlTGVuZ3RoKCkgPD0gbV9nZXRQaXhlbEJ1ZmZlclNoYXJl
ZE1lbW9yeS0+c2l6ZSgpLCAiU2htZW0gZm9yIHJldHVybiBvZiBnZXRQaXhlbEJ1ZmZlciBpcyB0
b28gc21hbGwiKTsKKyAgICAgICAgICAgIG1lbWNweShtX2dldFBpeGVsQnVmZmVyU2hhcmVkTWVt
b3J5LT5kYXRhKCksIHBpeGVsQnVmZmVyLT5kYXRhKCkuZGF0YSgpLCBwaXhlbEJ1ZmZlci0+ZGF0
YSgpLmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbWVtc2V0KG1f
Z2V0UGl4ZWxCdWZmZXJTaGFyZWRNZW1vcnktPmRhdGEoKSwgMCwgbV9nZXRQaXhlbEJ1ZmZlclNo
YXJlZE1lbW9yeS0+c2l6ZSgpKTsKICAgICB9Ci0KLSAgICBkZXN0cm95R2V0UGl4ZWxCdWZmZXJT
aGFyZWRNZW1vcnkoKTsKLSAgICBtX2dldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5ID0gU2hhcmVk
TWVtb3J5OjphbGxvY2F0ZShieXRlQ291bnQpOwotICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhh
bmRsZTsKLSAgICBpZiAobV9nZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeSkKLSAgICAgICAgbV9n
ZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeS0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVt
b3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7Ci0gICAgcmV0dXJuIFNoYXJlZE1lbW9yeTo6SVBD
SGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBtX2dldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5ID8g
bV9nZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeS0+c2l6ZSgpIDogMCB9OworICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6dXBkYXRlU2hh
cmVkTWVtb3J5Rm9yR2V0UGl4ZWxCdWZmZXIodWludDMyX3QgYnl0ZUNvdW50LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmdldFBpeGVsQnVmZmVyRm9y
SW1hZ2VCdWZmZXJXaXRoTmV3TWVtb3J5KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFn
ZUJ1ZmZlciwgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJiBoYW5kbGUsIFdlYkNvcmU6OlBpeGVs
QnVmZmVyRm9ybWF0JiYgZGVzdGluYXRpb25Gb3JtYXQsIFdlYkNvcmU6OkludFJlY3QmJiBzcmNS
ZWN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBpZiAoYXV0byBoYW5kbGUgPSB1
cGRhdGVTaGFyZWRNZW1vcnlGb3JHZXRQaXhlbEJ1ZmZlckhlbHBlcihieXRlQ291bnQpKQotICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRsZS52YWx1ZSgpKSk7Ci0gICAgZWxz
ZQotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwotfQotCi12b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OnNlbWFwaG9yZUZvckdldFBpeGVsQnVmZmVyKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgSVBDOjpTZW1hcGhvcmUmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihtX2dl
dFBpeGVsQnVmZmVyU2VtYXBob3JlKTsKLX0KLQotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
Ojp1cGRhdGVTaGFyZWRNZW1vcnlBbmRTZW1hcGhvcmVGb3JHZXRQaXhlbEJ1ZmZlcih1aW50MzJf
dCBieXRlQ291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJ
UENIYW5kbGUmLCBjb25zdCBJUEM6OlNlbWFwaG9yZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQot
ewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgaWYgKGF1dG8gaGFuZGxl
ID0gdXBkYXRlU2hhcmVkTWVtb3J5Rm9yR2V0UGl4ZWxCdWZmZXJIZWxwZXIoYnl0ZUNvdW50KSkK
LSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGUudmFsdWUoKSksIG1fZ2V0
UGl4ZWxCdWZmZXJTZW1hcGhvcmUpOwotICAgIGVsc2UKLSAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoeyB9LCBtX2dldFBpeGVsQnVmZmVyU2VtYXBob3JlKTsKKyAgICBtX2dldFBpeGVsQnVmZmVy
U2hhcmVkTWVtb3J5ID0gbnVsbHB0cjsKKyAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IFdlYktpdDo6
U2hhcmVkTWVtb3J5OjptYXAoaGFuZGxlLmhhbmRsZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OlBy
b3RlY3Rpb246OlJlYWRXcml0ZSk7CisgICAgTUVTU0FHRV9DSEVDSyhzaGFyZWRNZW1vcnksICJT
aGFyZWQgbWVtb3J5IGNvdWxkIG5vdCBiZSBtYXBwZWQuIik7CisgICAgTUVTU0FHRV9DSEVDSyhz
aGFyZWRNZW1vcnktPnNpemUoKSA8PSBIVE1MQ2FudmFzRWxlbWVudDo6bWF4QWN0aXZlUGl4ZWxN
ZW1vcnkoKSwgIlNoYXJlZCBtZW1vcnkgdG9vIGJpZy4iKTsKKyAgICBtX2dldFBpeGVsQnVmZmVy
U2hhcmVkTWVtb3J5ID0gV1RGTW92ZShzaGFyZWRNZW1vcnkpOworICAgIGdldFBpeGVsQnVmZmVy
Rm9ySW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIFdURk1vdmUoZGVzdGluYXRpb25Gb3JtYXQpLCBX
VEZNb3ZlKHNyY1JlY3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVzdHJveUdldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5
KCkKQEAgLTI0MywxNyArMjI1LDExIEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVz
dHJveUdldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5KCkKICAgICBtX2dldFBpeGVsQnVmZmVyU2hh
cmVkTWVtb3J5ID0gbnVsbHB0cjsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpw
b3B1bGF0ZUdldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
UGl4ZWxCdWZmZXI+JiYgcGl4ZWxCdWZmZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OnB1dFBpeGVsQnVmZmVyRm9ySW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIGltYWdlQnVmZmVyLCBXZWJDb3JlOjpQaXhlbEJ1ZmZlciYmIHBpeGVsQnVmZmVy
LCBXZWJDb3JlOjpJbnRSZWN0JiYgc3JjUmVjdCwgV2ViQ29yZTo6SW50UG9pbnQmJiBkZXN0UG9p
bnQsIFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCkKIHsKLSAgICBN
RVNTQUdFX0NIRUNLKG1fZ2V0UGl4ZWxCdWZmZXJTaGFyZWRNZW1vcnksICJXZSBjYW4ndCBydW4g
Z2V0UGl4ZWxCdWZmZXIgd2l0aG91dCBhIGJ1ZmZlciB0byB3cml0ZSBpbnRvIik7Ci0KLSAgICBp
ZiAocGl4ZWxCdWZmZXIpIHsKLSAgICAgICAgTUVTU0FHRV9DSEVDSyhwaXhlbEJ1ZmZlci0+ZGF0
YSgpLmJ5dGVMZW5ndGgoKSA8PSBtX2dldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5LT5zaXplKCks
ICJTaG1lbSBmb3IgcmV0dXJuIG9mIGdldFBpeGVsQnVmZmVyIGlzIHRvbyBzbWFsbCIpOwotICAg
ICAgICBtZW1jcHkobV9nZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeS0+ZGF0YSgpLCBwaXhlbEJ1
ZmZlci0+ZGF0YSgpLmRhdGEoKSwgcGl4ZWxCdWZmZXItPmRhdGEoKS5ieXRlTGVuZ3RoKCkpOwot
ICAgIH0gZWxzZQotICAgICAgICBtZW1zZXQobV9nZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeS0+
ZGF0YSgpLCAwLCBtX2dldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5LT5zaXplKCkpOwotCi0gICAg
bV9nZXRQaXhlbEJ1ZmZlclNlbWFwaG9yZS5zaWduYWwoKTsKKyAgICBRdWFsaWZpZWRSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgcXVhbGlmaWVkSW1hZ2VCdWZmZXIgeyBpbWFnZUJ1ZmZlciwg
bV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT53ZWJQcm9jZXNzSWRlbnRpZmllcigpIH07Cisg
ICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1h
Z2VCdWZmZXIocXVhbGlmaWVkSW1hZ2VCdWZmZXIpKQorICAgICAgICBpbWFnZUJ1ZmZlci0+cHV0
UGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIsIHNyY1JlY3QsIGRlc3RQb2ludCwgZGVzdEZvcm1hdCk7
CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Z2V0RGF0YVVSTEZvckltYWdlQnVm
ZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5
LCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uLCBXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IDZjNjAzNjUwZmU4NjY2MmE3ODdiMGQwMzYxMDVlNjRm
NjFjYTZiYzguLmFhNjYwNGYzODI0OTBmMTFjNzIzOTk5NzEzNzRkNDM0ODlmYmNkYmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuaApAQCAtODMsOCArODMsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRD
cmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBRdWFsaWZp
ZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIm
KTsKICAgICB2b2lkIGRpZEZsdXNoKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEZsdXNoSWRlbnRp
ZmllciwgUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAotICAgIHZvaWQg
cG9wdWxhdGVHZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlBpeGVsQnVmZmVyPiYmKTsKLQogICAgIGJvb2wgYWxsb3dzRXhpdFVuZGVyTWVtb3J5UHJlc3N1
cmUoKSBjb25zdDsKIAogICAgIC8vIFJ1bnMgRnVuY3Rpb24gaW4gUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZCB0YXNrIHF1ZXVlLgpAQCAtMTA2LDEwICsxMDQsMTAgQEAgcHJpdmF0ZToKIAogICAgIC8v
IE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgogICAgIHZvaWQgY3JlYXRlSW1hZ2VCdWZmZXIoY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9k
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKLSAgICB2b2lkIHVwZGF0ZVNoYXJlZE1lbW9yeUZvckdldFBpeGVsQnVmZmVy
KHVpbnQzMl90IGJ5dGVDb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRN
ZW1vcnk6OklQQ0hhbmRsZSYpPiYmKTsKLSAgICB2b2lkIHNlbWFwaG9yZUZvckdldFBpeGVsQnVm
ZmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTZW1hcGhvcmUmKT4mJik7Ci0g
ICAgdm9pZCB1cGRhdGVTaGFyZWRNZW1vcnlBbmRTZW1hcGhvcmVGb3JHZXRQaXhlbEJ1ZmZlcih1
aW50MzJfdCBieXRlQ291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkTWVt
b3J5OjpJUENIYW5kbGUmLCBjb25zdCBJUEM6OlNlbWFwaG9yZSYpPiYmKTsKKyAgICB2b2lkIGdl
dFBpeGVsQnVmZmVyRm9ySW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyLCBXZWJDb3JlOjpQaXhlbEJ1ZmZlckZvcm1hdCYmLCBXZWJDb3JlOjpJbnRSZWN0JiYg
c3JjUmVjdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGdldFBpeGVs
QnVmZmVyRm9ySW1hZ2VCdWZmZXJXaXRoTmV3TWVtb3J5KFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciwgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJiwgV2ViQ29yZTo6UGl4ZWxC
dWZmZXJGb3JtYXQmJiBkZXN0aW5hdGlvbkZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCYmIHNyY1Jl
Y3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkZXN0cm95R2V0UGl4
ZWxCdWZmZXJTaGFyZWRNZW1vcnkoKTsKKyAgICB2b2lkIHB1dFBpeGVsQnVmZmVyRm9ySW1hZ2VC
dWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpQaXhl
bEJ1ZmZlciYmLCBXZWJDb3JlOjpJbnRSZWN0JiYgc3JjUmVjdCwgV2ViQ29yZTo6SW50UG9pbnQm
JiBkZXN0UG9pbnQsIFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCk7
CiAgICAgdm9pZCBnZXREYXRhVVJMRm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1
dGlvbiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7CiAgICAgdm9pZCBnZXREYXRhRm9ySW1hZ2VCdWZmZXIo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8dWludDhfdD4mJik+JiYpOwogICAgIHZvaWQgZ2V0U2hhcmVhYmxlQml0bWFwRm9y
SW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3Jl
OjpQcmVzZXJ2ZVJlc29sdXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVhYmxlQml0
bWFwOjpIYW5kbGUmJik+JiYpOwpAQCAtMTM2LDcgKzEzNCw2IEBAIHByaXZhdGU6CiAgICAgUmVm
PEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsK
ICAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpdHkgbV9yZXNvdXJjZU93bmVyOwogICAgIFJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXI7Ci0gICAg
SVBDOjpTZW1hcGhvcmUgbV9nZXRQaXhlbEJ1ZmZlclNlbWFwaG9yZTsKICAgICBSZWZQdHI8U2hh
cmVkTWVtb3J5PiBtX2dldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5OwogICAgIFNjb3BlZFJlbmRl
cmluZ1Jlc291cmNlc1JlcXVlc3QgbV9yZW5kZXJpbmdSZXNvdXJjZXNSZXF1ZXN0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCmluZGV4IGE5YWViNGI2MGViMDIwZWI0
YmEzNDZiM2ZhMzNkODM2YWU4ZWM3ZDguLmZkNDIwNzAwMDY3NTRkMDYyMzM4MTAzNmNhNGY3YTIx
ODE2ZTEwMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCkBAIC0y
NCwxMCArMjQsMTAgQEAKIAogbWVzc2FnZXMgLT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBOb3RS
ZWZDb3VudGVkIFN0cmVhbSB7CiAgICAgQ3JlYXRlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6RmxvYXRT
aXplIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9y
U3BhY2UsIGVudW06dWludDhfdCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcikKLSAgICBVcGRhdGVTaGFyZWRNZW1vcnlGb3JHZXRQaXhlbEJ1ZmZlcih1aW50MzJfdCBi
eXRlQ291bnQpIC0+IChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGhhbmRsZSkgU3lu
Y2hyb25vdXMgTm90U3RyZWFtRW5jb2RhYmxlUmVwbHkKLSAgICBTZW1hcGhvcmVGb3JHZXRQaXhl
bEJ1ZmZlcigpIC0+IChJUEM6OlNlbWFwaG9yZSBzZW1hcGhvcmUpIFN5bmNocm9ub3VzIE5vdFN0
cmVhbUVuY29kYWJsZVJlcGx5Ci0gICAgVXBkYXRlU2hhcmVkTWVtb3J5QW5kU2VtYXBob3JlRm9y
R2V0UGl4ZWxCdWZmZXIodWludDMyX3QgYnl0ZUNvdW50KSAtPiAoV2ViS2l0OjpTaGFyZWRNZW1v
cnk6OklQQ0hhbmRsZSBoYW5kbGUsIElQQzo6U2VtYXBob3JlIHNlbWFwaG9yZSkgU3luY2hyb25v
dXMgTm90U3RyZWFtRW5jb2RhYmxlUmVwbHkKKyAgICBHZXRQaXhlbEJ1ZmZlckZvckltYWdlQnVm
ZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlciwgc3Ry
dWN0IFdlYkNvcmU6OlBpeGVsQnVmZmVyRm9ybWF0IG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50
UmVjdCBzcmNSZWN0KSAtPiAoKSBTeW5jaHJvbm91cworICAgIEdldFBpeGVsQnVmZmVyRm9ySW1h
Z2VCdWZmZXJXaXRoTmV3TWVtb3J5KFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciBpbWFnZUJ1ZmZlciwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBoYW5kbGUsIHN0
cnVjdCBXZWJDb3JlOjpQaXhlbEJ1ZmZlckZvcm1hdCBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6Oklu
dFJlY3Qgc3JjUmVjdCkgLT4gKCkgU3luY2hyb25vdXMgTm90U3RyZWFtRW5jb2RhYmxlCiAgICAg
RGVzdHJveUdldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5KCkKKyAgICBQdXRQaXhlbEJ1ZmZlckZv
ckltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1
ZmZlciwgV2ViQ29yZTo6UGl4ZWxCdWZmZXIgcGl4ZWxCdWZmZXIsICBXZWJDb3JlOjpJbnRSZWN0
IHNyY1JlY3QsIFdlYkNvcmU6OkludFBvaW50IGRlc3RQb2ludCwgZW51bTp1aW50OF90IFdlYkNv
cmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCkKICAgICBHZXREYXRhVVJMRm9y
SW1hZ2VCdWZmZXIoU3RyaW5nIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0
eSwgZW51bTp1aW50OF90IFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29s
dXRpb24sIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpIC0+IChTdHJpbmcgdXJsU3RyaW5nKSBTeW5jaHJvbm91cwogICAgIEdl
dERhdGFGb3JJbWFnZUJ1ZmZlcihTdHJpbmcgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBxdWFsaXR5LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKSAtPiAoVmVjdG9yPHVpbnQ4X3Q+IGRhdGEpIFN5bmNocm9ub3Vz
CiAgICAgR2V0U2hhcmVhYmxlQml0bWFwRm9ySW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVyLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6UHJl
c2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikgLT4gKFdlYktpdDo6U2hhcmVhYmxl
Qml0bWFwOjpIYW5kbGUgaGFuZGxlKSBTeW5jaHJvbm91cyBOb3RTdHJlYW1FbmNvZGFibGVSZXBs
eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwCmluZGV4IDM3
MzBjZDE5YmQwZjIzMGNmZjcwMTU0YmVmMjJkMDI3NmQ1NTMxZmIuLjMxNWVlMzA1MWM5ODExODhm
ZmVjOGRiZmMyMmRmN2NiMjQzYjMwNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXJQcm94eS5jcHAKQEAgLTYwLDE2ICs2MCw2IEBAIFJlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXJQcm94eTo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5KFJlbW90ZURpc3BsYXlM
aXN0CiB7CiB9CiAKLXZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpnZXRQaXhl
bEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0KQotewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXI6OkdldFBpeGVsQnVmZmVyKHNvdXJjZVJlY3QsIG91dHB1dEZvcm1hdCkpOwotfQot
Ci12b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6cHV0UGl4ZWxCdWZmZXIoY29u
c3QgUGl4ZWxCdWZmZXImIHBpeGVsQnVmZmVyLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbnRQb2ludCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQp
Ci17Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6UHV0UGl4
ZWxCdWZmZXIoc3JjUmVjdCwgZGVzdFBvaW50LCBwaXhlbEJ1ZmZlciwgZGVzdEZvcm1hdCkpOwot
fQotCiB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6Y29udmVydFRvTHVtaW5h
bmNlTWFzaygpCiB7CiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRl
cjo6Q29udmVydFRvTHVtaW5hbmNlTWFzaygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXJQcm94eS5oCmluZGV4IGYwNGUzZDI2NGRkNzczODdlZTViZDg3NDg5MmJmNjcyMWIw
MDE3OGYuLjU0ZjQ5M2ZmNjYzOTdiZWJiNjRlOGYwYTE0ZGIyZjk4ZDJiYTk2NzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaApAQCAtNDcsOCArNDcsNiBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZXNldE5lZWRzRmx1c2goKSB7IG1fbmVlZHNGbHVzaCA9IGZhbHNl
OyB9CiAgICAgYm9vbCBuZWVkc0ZsdXNoKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0ZsdXNoOyB9
CiAKLSAgICB2b2lkIGdldFBpeGVsQnVmZmVyKGNvbnN0IFdlYkNvcmU6OlBpeGVsQnVmZmVyRm9y
bWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNvdXJjZVJlY3QpIGZp
bmFsOwotICAgIHZvaWQgcHV0UGl4ZWxCdWZmZXIoY29uc3QgV2ViQ29yZTo6UGl4ZWxCdWZmZXIm
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgZGVzdFBvaW50LCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQp
IGZpbmFsOwogICAgIHZvaWQgY29udmVydFRvTHVtaW5hbmNlTWFzaygpIGZpbmFsOwogICAgIHZv
aWQgdHJhbnNmb3JtVG9Db2xvclNwYWNlKGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JT
cGFjZSYpIGZpbmFsOwogICAgIHZvaWQgZmx1c2hDb250ZXh0KFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEZsdXNoSWRlbnRpZmllcikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmlu
ZGV4IDNlN2RhNWZhMGZjMGE2ODczZGFiMDY3MjdhYTZkODQ3Njg5ZDIzYTguLmNiOTVjODdlZWI2
NTdlMGZmYmQ4YTdkYmNiMWEzY2MzNTA2NTdjNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eS5oCkBAIC0yMTAsMjQgKzIxMCwxNCBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAgICAgICBpZiAo
VU5MSUtFTFkoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSkKICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0KKyAgICAgICAgYXV0byYgbXV0YWJsZVRoaXMgPSBjb25zdF9j
YXN0PFJlbW90ZUltYWdlQnVmZmVyUHJveHkmPigqdGhpcyk7CisgICAgICAgIG11dGFibGVUaGlz
LmZsdXNoRHJhd2luZ0NvbnRleHRBc3luYygpOwogICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0g
V2ViQ29yZTo6UGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShkZXN0aW5hdGlvbkZvcm1hdCwgc3JjUmVj
dC5zaXplKCkpOwogICAgICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgc2l6ZV90IGRhdGFTaXplID0gcGl4ZWxCdWZmZXItPmRh
dGEoKS5ieXRlTGVuZ3RoKCk7Ci0KLSAgICAgICAgU2hhcmVkTWVtb3J5KiBzaGFyZWRNZW1vcnkg
PSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+c2hhcmVkTWVtb3J5Rm9yR2V0UGl4ZWxC
dWZmZXIoZGF0YVNpemUpOwotICAgICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKKyAgICAgICAgYXV0
byYgZGF0YSA9IHBpeGVsQnVmZmVyLT5kYXRhKCk7CisgICAgICAgIGlmICghbV9yZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHktPmdldFBpeGVsQnVmZmVyRm9ySW1hZ2VCdWZmZXIobV9yZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIsIGRlc3RpbmF0aW9uRm9ybWF0LCBzcmNSZWN0LCB7IGRhdGEu
ZGF0YSgpLCBkYXRhLmJ5dGVMZW5ndGgoKSB9KSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0KLSAgICAgICAgYXV0byYgbXV0YWJsZVRoaXMgPSBjb25zdF9jYXN0PFJlbW90ZUlt
YWdlQnVmZmVyUHJveHkmPigqdGhpcyk7Ci0gICAgICAgIG11dGFibGVUaGlzLm1fcmVtb3RlRGlz
cGxheUxpc3QuZ2V0UGl4ZWxCdWZmZXIoZGVzdGluYXRpb25Gb3JtYXQsIHNyY1JlY3QpOwotICAg
ICAgICBtdXRhYmxlVGhpcy5mbHVzaERyYXdpbmdDb250ZXh0QXN5bmMoKTsKLQotICAgICAgICBp
ZiAobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPndhaXRGb3JHZXRQaXhlbEJ1ZmZlclRv
Q29tcGxldGUoKSkKLSAgICAgICAgICAgIG1lbWNweShwaXhlbEJ1ZmZlci0+ZGF0YSgpLmRhdGEo
KSwgc2hhcmVkTWVtb3J5LT5kYXRhKCksIGRhdGFTaXplKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgbWVtc2V0KHBpeGVsQnVmZmVyLT5kYXRhKCkuZGF0YSgpLCAwLCBkYXRhU2l6ZSk7CiAg
ICAgICAgIHJldHVybiBwaXhlbEJ1ZmZlcjsKICAgICB9CiAKQEAgLTI0OSwxMiArMjM5LDE2IEBA
IHByb3RlY3RlZDoKIAogICAgIHZvaWQgcHV0UGl4ZWxCdWZmZXIoY29uc3QgV2ViQ29yZTo6UGl4
ZWxCdWZmZXImIHBpeGVsQnVmZmVyLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZGVzdFBvaW50ID0geyB9LCBXZWJDb3JlOjpBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQgPSBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0
aW9uOjpQcmVtdWx0aXBsaWVkKSBmaW5hbAogICAgIHsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCisgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIC8vIFRoZSBtYXRoIGluc2lkZSBQaXhlbEJ1ZmZlcjo6Y3JlYXRlKCkgZG9lc24ndCBhZ3Jl
ZSB3aXRoIHRoZSBtYXRoIGluc2lkZSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnB1dFBpeGVsQnVmZmVy
KCkgYWJvdXQgaG93IG1fcmVzb2x1dGlvblNjYWxlIGludGVyYWN0cyB3aXRoIHRoZSBkYXRhIGlu
IHRoZSBJbWFnZUJ1ZmZlci4KICAgICAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHB1dFBpeGVsQnVm
ZmVyKCkgaXMgb25seSBjYWxsZWQgd2hlbiByZXNvbHV0aW9uU2NhbGUoKSA9PSAxLgogICAgICAg
ICBBU1NFUlQocmVzb2x1dGlvblNjYWxlKCkgPT0gMSk7Ci0gICAgICAgIG1fcmVtb3RlRGlzcGxh
eUxpc3QucHV0UGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIsIHNyY1JlY3QsIGRlc3RQb2ludCwgZGVz
dEZvcm1hdCk7CisgICAgICAgIGF1dG8mIG11dGFibGVUaGlzID0gY29uc3RfY2FzdDxSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5Jj4oKnRoaXMpOworICAgICAgICBtdXRhYmxlVGhpcy5mbHVzaERyYXdp
bmdDb250ZXh0QXN5bmMoKTsKKyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkt
PnB1dFBpeGVsQnVmZmVyRm9ySW1hZ2VCdWZmZXIobV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIsIHBpeGVsQnVmZmVyLCBzcmNSZWN0LCBkZXN0UG9pbnQsIGRlc3RGb3JtYXQpOwogICAgIH0K
LSAgICAKKwogICAgIHZvaWQgY29udmVydFRvTHVtaW5hbmNlTWFzaygpIGZpbmFsCiAgICAgewog
ICAgICAgICBtX3JlbW90ZURpc3BsYXlMaXN0LmNvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCBlNzhhYjVhNjRlNWQ0
Y2Q5ZDI1MTMyMjdjNjEzYjEyZWJmZDE1NjcwLi5hZDE2Nzk1ZWEyZWEwMTIzNjAwNjc1OGVlMGZm
OWE2YjhkMjE1ZjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3Bw
CkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5TWVzc2FnZXMuaCIKLSNpbmNsdWRlICJT
aGFyZWRNZW1vcnkuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNs
dWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgpAQCAtOTgsMTAgKzk3LDcg
QEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdwdVByb2Nlc3NDb25uZWN0aW9u
RGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3QKIAogICAgIGlmIChtX2Rlc3Ryb3lHZXRQaXhlbEJ1
ZmZlclNoYXJlZE1lbW9yeVRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fZGVzdHJveUdldFBp
eGVsQnVmZmVyU2hhcmVkTWVtb3J5VGltZXIuc3RvcCgpOwotICAgIG1fZ2V0UGl4ZWxCdWZmZXJT
ZW1hcGhvcmUgPSBzdGQ6Om51bGxvcHQ7Ci0gICAgbV9nZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9y
eUxlbmd0aCA9IDA7CiAgICAgbV9nZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeSA9IG51bGxwdHI7
Ci0gICAgCiAgICAgbV9yZW5kZXJpbmdVcGRhdGVJRCA9IHsgfTsKICAgICBtX2RpZFJlbmRlcmlu
Z1VwZGF0ZUlEID0geyB9OwogfQpAQCAtMTQ5LDQ3ICsxNDUsNTkgQEAgUmVmUHRyPEltYWdlQnVm
ZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0
IEZsb2F0U2kKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotU2hhcmVkTWVtb3J5KiBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OnNoYXJlZE1lbW9yeUZvckdldFBpeGVsQnVmZmVyKHNpemVf
dCBkYXRhU2l6ZSkKK2Jvb2wgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXRQaXhlbEJ1
ZmZlckZvckltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBp
bWFnZUJ1ZmZlciwgY29uc3QgV2ViQ29yZTo6UGl4ZWxCdWZmZXJGb3JtYXQmIGRlc3RpbmF0aW9u
Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBTcGFuPHVpbnQ4X3Q+IHJl
c3VsdCkKIHsKLSAgICBib29sIG5lZWRzU2hhcmVkTWVtb3J5ID0gIW1fZ2V0UGl4ZWxCdWZmZXJT
aGFyZWRNZW1vcnkgfHwgZGF0YVNpemUgPiBtX2dldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5TGVu
Z3RoOwotICAgIGJvb2wgbmVlZHNTZW1hcGhvcmUgPSAhbV9nZXRQaXhlbEJ1ZmZlclNlbWFwaG9y
ZTsKLQotICAgIGlmIChuZWVkc1NoYXJlZE1lbW9yeSkKLSAgICAgICAgbV9nZXRQaXhlbEJ1ZmZl
clNoYXJlZE1lbW9yeSA9IG51bGxwdHI7Ci0KLSAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBo
YW5kbGU7Ci0gICAgSVBDOjpTZW1hcGhvcmUgc2VtYXBob3JlOwotCi0gICAgaWYgKG5lZWRzU2hh
cmVkTWVtb3J5ICYmIG5lZWRzU2VtYXBob3JlKQotICAgICAgICBzZW5kU3luY1RvU3RyZWFtKE1l
c3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpVcGRhdGVTaGFyZWRNZW1vcnlBbmRTZW1h
cGhvcmVGb3JHZXRQaXhlbEJ1ZmZlcihkYXRhU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpVcGRhdGVTaGFyZWRNZW1vcnlBbmRTZW1hcGhvcmVGb3JHZXRQaXhlbEJ1ZmZl
cjo6UmVwbHkoaGFuZGxlLCBzZW1hcGhvcmUpKTsKLSAgICBlbHNlIGlmIChuZWVkc1NoYXJlZE1l
bW9yeSkKLSAgICAgICAgc2VuZFN5bmNUb1N0cmVhbShNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6VXBkYXRlU2hhcmVkTWVtb3J5Rm9yR2V0UGl4ZWxCdWZmZXIoZGF0YVNpemUpLCBN
ZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6VXBkYXRlU2hhcmVkTWVtb3J5Rm9yR2V0
UGl4ZWxCdWZmZXI6OlJlcGx5KGhhbmRsZSkpOwotICAgIGVsc2UgaWYgKG5lZWRzU2VtYXBob3Jl
KQotICAgICAgICBzZW5kU3luY1RvU3RyZWFtKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpTZW1hcGhvcmVGb3JHZXRQaXhlbEJ1ZmZlcigpLCBNZXNzYWdlczo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6U2VtYXBob3JlRm9yR2V0UGl4ZWxCdWZmZXI6OlJlcGx5KHNlbWFwaG9yZSkp
OwotCi0gICAgaWYgKCFoYW5kbGUuaGFuZGxlLmlzTnVsbCgpKSB7Ci0gICAgICAgIGhhbmRsZS5o
YW5kbGUudGFrZU93bmVyc2hpcE9mTWVtb3J5KE1lbW9yeUxlZGdlcjo6R3JhcGhpY3MpOwotICAg
ICAgICBtX2dldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjptYXAoaGFu
ZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7Ci0gICAgICAg
IG1fZ2V0UGl4ZWxCdWZmZXJTaGFyZWRNZW1vcnlMZW5ndGggPSBoYW5kbGUuZGF0YVNpemU7Cisg
ICAgaWYgKGF1dG8gaGFuZGxlID0gdXBkYXRlU2hhcmVkTWVtb3J5Rm9yR2V0UGl4ZWxCdWZmZXIo
cmVzdWx0LnNpemUoKSkpIHsKKyAgICAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFu
ZGxlIHsgV1RGTW92ZSgqaGFuZGxlKSwgbV9nZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeS0+c2l6
ZSgpIH07CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jVG9TdHJlYW0oTWVzc2Fn
ZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkdldFBpeGVsQnVmZmVyRm9ySW1hZ2VCdWZmZXJX
aXRoTmV3TWVtb3J5KGltYWdlQnVmZmVyLCBpcGNIYW5kbGUsIGRlc3RpbmF0aW9uRm9ybWF0LCBz
cmNSZWN0KSwKKyAgICAgICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpH
ZXRQaXhlbEJ1ZmZlckZvckltYWdlQnVmZmVyV2l0aE5ld01lbW9yeTo6UmVwbHkoKSk7CisgICAg
ICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9IGVs
c2UgeworICAgICAgICBpZiAoIW1fZ2V0UGl4ZWxCdWZmZXJTaGFyZWRNZW1vcnkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jVG9T
dHJlYW0oTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkdldFBpeGVsQnVmZmVyRm9y
SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIGRlc3RpbmF0aW9uRm9ybWF0LCBzcmNSZWN0KSwgTWVz
c2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkdldFBpeGVsQnVmZmVyRm9ySW1hZ2VCdWZm
ZXI6OlJlcGx5KCkpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQotICAgIGlmIChuZWVkc1NlbWFwaG9yZSkKLSAgICAgICAgbV9nZXRQ
aXhlbEJ1ZmZlclNlbWFwaG9yZSA9IFdURk1vdmUoc2VtYXBob3JlKTsKKyAgICBtZW1jcHkocmVz
dWx0LmRhdGEoKSwgbV9nZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeS0+ZGF0YSgpLCByZXN1bHQu
c2l6ZSgpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OnB1dFBpeGVsQnVmZmVyRm9ySW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVyLCBjb25zdCBXZWJDb3JlOjpQaXhlbEJ1ZmZl
ciYgcGl4ZWxCdWZmZXIsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBkZXN0UG9pbnQsIFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRp
b24gZGVzdEZvcm1hdCkKK3sKKyAgICBzZW5kVG9TdHJlYW0oTWVzc2FnZXM6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OlB1dFBpeGVsQnVmZmVyRm9ySW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIHBp
eGVsQnVmZmVyLCBzcmNSZWN0LCBkZXN0UG9pbnQsIGRlc3RGb3JtYXQpKTsKK30KIAorc3RkOjpv
cHRpb25hbDxTaGFyZWRNZW1vcnk6OkhhbmRsZT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
Ojp1cGRhdGVTaGFyZWRNZW1vcnlGb3JHZXRQaXhlbEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpCit7
CiAgICAgaWYgKG1fZGVzdHJveUdldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5VGltZXIuaXNBY3Rp
dmUoKSkKICAgICAgICAgbV9kZXN0cm95R2V0UGl4ZWxCdWZmZXJTaGFyZWRNZW1vcnlUaW1lci5z
dG9wKCk7Ci0gICAgbV9kZXN0cm95R2V0UGl4ZWxCdWZmZXJTaGFyZWRNZW1vcnlUaW1lci5zdGFy
dE9uZVNob3QoNV9zKTsKIAotICAgIHJldHVybiBtX2dldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5
LmdldCgpOwotfQorICAgIGlmIChtX2dldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5ICYmIGRhdGFT
aXplIDw9IG1fZ2V0UGl4ZWxCdWZmZXJTaGFyZWRNZW1vcnktPnNpemUoKSkgeworICAgICAgICBt
X2Rlc3Ryb3lHZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeVRpbWVyLnN0YXJ0T25lU2hvdCg1X3Mp
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKyAgICBkZXN0cm95R2V0UGl4
ZWxCdWZmZXJTaGFyZWRNZW1vcnkoKTsKKyAgICBhdXRvIG1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6
YWxsb2NhdGUoZGF0YVNpemUpOworICAgIGlmICghbWVtb3J5KQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKKyAgICBpZiAoIW1l
bW9yeS0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFk
V3JpdGUpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmIChoYW5kbGUuaXNO
dWxsKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLWJvb2wgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5Ojp3YWl0Rm9yR2V0UGl4ZWxCdWZmZXJUb0NvbXBsZXRlKCkKLXsKLSAg
ICBBU1NFUlQobV9nZXRQaXhlbEJ1ZmZlclNlbWFwaG9yZSk7Ci0gICAgcmV0dXJuIG1fZ2V0UGl4
ZWxCdWZmZXJTZW1hcGhvcmUtPndhaXQoKTsKKyAgICBtX2dldFBpeGVsQnVmZmVyU2hhcmVkTWVt
b3J5ID0gV1RGTW92ZShtZW1vcnkpOworICAgIGhhbmRsZS50YWtlT3duZXJzaGlwT2ZNZW1vcnko
TWVtb3J5TGVkZ2VyOjpHcmFwaGljcyk7CisgICAgbV9kZXN0cm95R2V0UGl4ZWxCdWZmZXJTaGFy
ZWRNZW1vcnlUaW1lci5zdGFydE9uZVNob3QoNV9zKTsKKyAgICByZXR1cm4gaGFuZGxlOwogfQog
CiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6ZGVzdHJveUdldFBpeGVsQnVmZmVy
U2hhcmVkTWVtb3J5KCkKIHsKKyAgICBpZiAoIW1fZ2V0UGl4ZWxCdWZmZXJTaGFyZWRNZW1vcnkp
CisgICAgICAgIHJldHVybjsKICAgICBtX2dldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5ID0gbnVs
bHB0cjsKICAgICBzZW5kVG9TdHJlYW0oTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OkRlc3Ryb3lHZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeSgpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS5oCmluZGV4IDZlOGJmYWIwMTcyMjQ0MTQ5M2Y1ZTE5NzMwOTg2
YzMzNmMzMWI4NGUuLmJhMjRjN2FlMzAzODBhMGJhZmJhNjEzYmQzM2I4ZDhjYzBlMDJhOGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaApAQCAtMzgsMTAgKzM4LDEyIEBA
CiAjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgiCiAjaW5jbHVkZSAiUmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdVcGRhdGVJRC5oIgor
I2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgIlN0cmVhbUNsaWVudENvbm5lY3Rp
b24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNs
dWRlIDx3dGYvU3Bhbi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTczLDEwICs3NSw2IEBAIHB1YmxpYzoKIAogICAgIFJlbW90ZVJlc291cmNl
Q2FjaGVQcm94eSYgcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KCkgeyByZXR1cm4gbV9yZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHk7IH0KIAotICAgIFNoYXJlZE1lbW9yeSogc2hhcmVkTWVtb3J5Rm9y
R2V0UGl4ZWxCdWZmZXIoc2l6ZV90IGRhdGFTaXplKTsKLSAgICBib29sIHdhaXRGb3JHZXRQaXhl
bEJ1ZmZlclRvQ29tcGxldGUoKTsKLSAgICB2b2lkIGRlc3Ryb3lHZXRQaXhlbEJ1ZmZlclNoYXJl
ZE1lbW9yeSgpOwotCiAgICAgdm9pZCBjcmVhdGVSZW1vdGVJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJ
bWFnZUJ1ZmZlciYpOwogICAgIGJvb2wgaXNDYWNoZWQoY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZm
ZXImKSBjb25zdDsKIApAQCAtODUsNiArODMsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBNZXNzYWdl
cyB0byBiZSBzZW50LgogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1h
Z2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9k
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCk7CisgICAgYm9vbCBnZXRQaXhlbEJ1ZmZlckZv
ckltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgY29uc3Qg
V2ViQ29yZTo6UGl4ZWxCdWZmZXJGb3JtYXQmIGRlc3RpbmF0aW9uRm9ybWF0LCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBTcGFuPHVpbnQ4X3Q+IHJlc3VsdCk7CisgICAgdm9pZCBw
dXRQaXhlbEJ1ZmZlckZvckltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6UGl4ZWxCdWZmZXImLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZGVzdFBvaW50LCBXZWJDb3Jl
OjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpOwogICAgIFN0cmluZyBnZXREYXRh
VVJMRm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDxk
b3VibGU+IHF1YWxpdHksIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiwgV2ViQ29yZTo6UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICBWZWN0b3I8dWludDhfdD4gZ2V0RGF0YUZv
ckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBxdWFsaXR5LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIFJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+IGdldFNoYXJlYWJsZUJpdG1hcChXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbik7CkBAIC0x
NDMsNiArMTQzLDExIEBAIHByaXZhdGU6CiAgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGVuc3Vy
ZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CiAgICAgSVBDOjpDb25uZWN0aW9uJiBncHVQcm9jZXNz
Q29ubmVjdGlvbigpOwogCisgICAgLy8gUmV0dXJucyBzdGQ6Om51bGxvcHQgaWYgbm8gdXBkYXRl
IGlzIG5lZWRlZCBvciBhbGxvY2F0aW9uIGZhaWxlZC4KKyAgICAvLyBSZXR1cm5zIGhhbmRsZSBp
ZiB0aGF0IHNob3VsZCBiZSBzZW50IHRvIHRoZSByZWNlaXZlciBwcm9jZXNzLgorICAgIHN0ZDo6
b3B0aW9uYWw8U2hhcmVkTWVtb3J5OjpIYW5kbGU+IHVwZGF0ZVNoYXJlZE1lbW9yeUZvckdldFBp
eGVsQnVmZmVyKHNpemVfdCBkYXRhU2l6ZSk7CisgICAgdm9pZCBkZXN0cm95R2V0UGl4ZWxCdWZm
ZXJTaGFyZWRNZW1vcnkoKTsKKwogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgogICAg
IHZvaWQgZGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKEltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZEZs
dXNoKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEZsdXNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKQEAgLTE1MiwxMCArMTU3LDcgQEAgcHJpdmF0ZToK
ICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzIG1fcGFyYW1ldGVy
czsKICAgICBXZWFrUHRyPEdQVVByb2Nlc3NDb25uZWN0aW9uPiBtX2dwdVByb2Nlc3NDb25uZWN0
aW9uOwogICAgIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eSB7ICp0aGlzIH07Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPElQQzo6U2VtYXBob3JlPiBtX2dl
dFBpeGVsQnVmZmVyU2VtYXBob3JlOwogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IG1fZ2V0UGl4
ZWxCdWZmZXJTaGFyZWRNZW1vcnk7Ci0gICAgdWludDY0X3QgbV9nZXRQaXhlbEJ1ZmZlclNoYXJl
ZE1lbW9yeUxlbmd0aCB7IDAgfTsKICAgICBXZWJDb3JlOjpUaW1lciBtX2Rlc3Ryb3lHZXRQaXhl
bEJ1ZmZlclNoYXJlZE1lbW9yeVRpbWVyIHsgKnRoaXMsICZSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OmRlc3Ryb3lHZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeSB9OwogCiAgICAgUmVuZGVy
aW5nVXBkYXRlSUQgbV9yZW5kZXJpbmdVcGRhdGVJRDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>