<?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>167404</bug_id>
          
          <creation_ts>2017-01-24 19:21:03 -0800</creation_ts>
          <short_desc>Add support for named pasteboards, pasteboard strategies and platform pasteboards</short_desc>
          <delta_ts>2017-01-28 12:25:29 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>enrica</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1269673</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-01-24 19:21:03 -0800</bug_when>
    <thetext>Add support for named pasteboards, pasteboard strategies and platform pasteboards</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1269810</commentid>
    <comment_count>1</comment_count>
      <attachid>299702</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-01-25 07:33:49 -0800</bug_when>
    <thetext>Created attachment 299702
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1269905</commentid>
    <comment_count>2</comment_count>
      <attachid>299702</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-25 12:17:35 -0800</bug_when>
    <thetext>Comment on attachment 299702
Patch

Clearing flags on attachment: 299702

Committed r211158: &lt;http://trac.webkit.org/changeset/211158&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1269906</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-25 12:17:38 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1271034</commentid>
    <comment_count>4</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-01-28 12:25:29 -0800</bug_when>
    <thetext>&lt;rdar://problem/30107775&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299702</attachid>
            <date>2017-01-25 07:33:49 -0800</date>
            <delta_ts>2017-01-25 12:17:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167404-20170125073148.patch</filename>
            <type>text/plain</type>
            <size>37572</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExMTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjAxOTgwZDIyMTM2ODcx
ZTIxNWI2OWQxNGRhZjliOWE4MjVjNGI1Ni4uZjFiNGEzZDllZDM2MDk4Njg5ZGUwZWM0MTI5N2Vj
ZTBlYzE5MGIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE3LTAxLTI0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0
IGZvciBuYW1lZCBwYXN0ZWJvYXJkcywgcGFzdGVib2FyZCBzdHJhdGVnaWVzIGFuZCBwbGF0Zm9y
bSBwYXN0ZWJvYXJkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY3NDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmVmYWN0b3JzIHNvbWUgcGFzdGVib2FyZC1yZWxhdGVkIGNvZGUgdG8gcGx1bWIgdGhl
IG5hbWUgb2YgdGhlIHBhc3RlYm9hcmQgYWNyb3NzIGZyb20gV2ViQ29yZSB0byB0aGUgY2xpZW50
CisgICAgICAgIGxheWVyLiBObyBuZXcgdGVzdHMsIGJlY2F1c2UgdGhlcmUgc2hvdWxkIGJlIG5v
IGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3Rl
Ym9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZDo6UGFzdGVib2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJv
YXJkOjp3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVBsYWluVGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKFdlYkNv
cmU6OlBhc3RlYm9hcmQ6Omhhc0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6
Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZFN0cmluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVN0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkOjp0eXBlcyk6CisKIDIwMTctMDEtMjQgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPUyBXSzJdIEF2b2lkIElPU3VyZmFjZSBy
ZWFkYmFjayBmb3Igc25hcHNob3QgY3JlYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBjZjY5MWMx
MmRhMDAwNTAxZGI2Njc2YTA4YmU5Mjc1NzJjOWQyNmQ5Li5hODM1YmEwM2U5NmE0YTg4NjFlODRi
MThmNTUyMDZhYTllOWVmYjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIw
MTctMDEtMjQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAg
ICAgQWRkIHN1cHBvcnQgZm9yIG5hbWVkIHBhc3RlYm9hcmRzLCBwYXN0ZWJvYXJkIHN0cmF0ZWdp
ZXMgYW5kIHBsYXRmb3JtIHBhc3RlYm9hcmRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjc0MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRzIHBhc3RlYm9hcmQgbmFtZSBhcyBhbiBhcmd1bWVudCB0
byBwYXN0ZWJvYXJkLXJlbGF0ZWQgV2ViUGxhdGZvcm1TdHJhdGVneSBtZXRob2RzLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAgICAgICAoV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KToKKyAgICAgICAgKFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKToKKwogMjAxNy0wMS0y
MyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04g
KHIyMTEwMzMpOiBBU1NFUlRJT04gRkFJTEVEOiBtX3B0ciBpbiBjb20uYXBwbGUuV2ViQ29yZTog
V1RGOjpSZWZQdHI8V2ViQ29yZTo6RWxlbWVudD46Om9wZXJhdG9yKiBjb25zdCArIDcwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggN2JmNWExMmIzZDc1MDhjYjczOWM5YWU0NDM2ZWVjOGIwNzc2Mzg0Mi4uYzQ3NWNk
OGZkYTEyMWRkMTc4ZDZhZTEwOTI2ZTk0M2RlYTZhOWUwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDMwIEBACisyMDE3LTAxLTI0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBuYW1lZCBwYXN0ZWJvYXJkcywgcGFzdGVib2Fy
ZCBzdHJhdGVnaWVzIGFuZCBwbGF0Zm9ybSBwYXN0ZWJvYXJkcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3NDA0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBzdXBwb3J0IGZvciBkZWxpdmVyaW5n
IHRoZSBwYXN0ZWJvYXJkIG5hbWUgdG8gdGhlIFVJIHByb2Nlc3Mgd2hlbiB3cml0aW5nIHRvIG9y
IHJlYWRpbmcgZnJvbSB0aGUgcGFzdGVib2FyZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVi
b2FyZFByb3h5Ojp3cml0ZVdlYkNvbnRlbnRUb1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlU3RyaW5nVG9QYXN0ZWJvYXJkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9h
cmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRVUkxGcm9tUGFz
dGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6cmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5Ojpn
ZXRQYXN0ZWJvYXJkSXRlbXNDb3VudCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhc3RlYm9h
cmRQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2Fn
ZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Ondy
aXRlVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaDoKKwogMjAxNy0wMS0yNCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBbaU9TIFdLMl0gQXZvaWQgSU9TdXJmYWNlIHJlYWRiYWNrIGZvciBzbmFw
c2hvdCBjcmVhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0Rh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKaW5kZXggM2MxMzdiZWZl
YTAyNDZjMWQzNDMwZThiM2FmYzhhYzBiZDg0YzNiYi4uMGMyYjM5NGMwMjQxNDg3ZDQzZTIzY2Zm
YjE1ZWY2NDBlYzlkNDY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJh
Z0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCkBAIC0xMDcs
NyArMTA3LDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIG51bWJlck9mRmlsZXMoKSBjb25zdDsK
ICAgICB2b2lkIHNldEZpbGVOYW1lcyhWZWN0b3I8U3RyaW5nPiYgZmlsZU5hbWVzKSB7IG1fZmls
ZU5hbWVzID0gV1RGTW92ZShmaWxlTmFtZXMpOyB9CiAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGZpbGVOYW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZU5hbWVzOyB9Ci0jaWYgUExBVEZPUk0o
TUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUoKSBjb25zdCB7IHJldHVybiBtX3Bhc3RlYm9hcmROYW1lOyB9CiAgICAgYm9vbCBjb250YWlu
c1Byb21pc2UoKSBjb25zdDsKICNlbmRpZgpAQCAtMTMyLDcgKzEzMiw3IEBAIHByaXZhdGU6CiAg
ICAgRHJhZ09wZXJhdGlvbiBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsKICAgICBEcmFn
QXBwbGljYXRpb25GbGFncyBtX2FwcGxpY2F0aW9uRmxhZ3M7CiAgICAgVmVjdG9yPFN0cmluZz4g
bV9maWxlTmFtZXM7Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IFN0cmluZyBtX3Bhc3RlYm9hcmROYW1lOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oV0lOKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDgwN2Q0ZDY1ZWM1OWI0MTU5NzYwMmZi
MjRiNTBkNGNkYzMyM2Q1NDguLmJhYzFmOGYyZjQ3OTFjNTg3YjQ2MDU2OTFjMjg2MmE1NDY5ZDUy
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTIwMSw3ICsyMDEsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyByZXNvdXJjZU1JTUVUeXBlKGNvbnN0IE5TU3Ry
aW5nICptaW1lVHlwZSk7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9S
TShDT0NPQSkKICAgICBleHBsaWNpdCBQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpOwogCiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9wYXN0
ZWJvYXJkTmFtZTsgfQpAQCAtMjMxLDExICsyMzEsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBt
X25hbWU7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykKLSAgICBsb25nIG1fY2hhbmdlQ291
bnQ7Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBTdHJpbmcgbV9wYXN0ZWJvYXJkTmFtZTsKICAgICBsb25nIG1fY2hhbmdlQ291bnQ7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVn
eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5kZXgg
MGFhOWNhOGRhYTcyM2ZjOTczMGJlMGJmNWE0M2NkMGJhM2NmODY2OC4uMWFjNDg0Mjg1YjQ4MzMw
MDhkYzhiNmFhYWIxZDA0MDk4NTRiYWU0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAgLTQyLDE1ICs0MiwxMyBAQCBzdHJ1Y3QgUGFzdGVib2Fy
ZFdlYkNvbnRlbnQ7CiBjbGFzcyBQYXN0ZWJvYXJkU3RyYXRlZ3kgewogcHVibGljOgogI2lmIFBM
QVRGT1JNKElPUykKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG1vdmUgTWFjIHRvIHRoaXMuCi0g
ICAgdmlydHVhbCB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250
ZW50JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBQYXN0
ZWJvYXJkSW1hZ2UmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICB2aXJ0
dWFsIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudCgpID0gMDsKLSAgICB2aXJ0dWFsIFN0cmlu
ZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVm
ZmVyRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KSA9IDA7Ci0gICAgdmlydHVhbCBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgPSAwOwotICAgIHZpcnR1YWwgbG9uZyBjaGFu
Z2VDb3VudCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3Qg
UGFzdGVib2FyZFdlYkNvbnRlbnQmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRJbWFn
ZSYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOworICAgIHZpcnR1YWwgaW50
IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0g
MDsKKyAgICB2aXJ0dWFsIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CisgICAgdmlydHVhbCBVUkwgcmVhZFVSTEZy
b21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0
cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IDBiYTAyNmY3MjYw
NDM1OWFlODk0MGQ5MzYxMGM3ZTJiMjI5YzVkZjkuLjkzZGIxNmIyNGQ3MWJiOGNlNDMwNjUyOGEz
MTg1ZGNlOGQ3Nzk5NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFz
dGVib2FyZC5oCkBAIC01MSw3ICs1MSw2IEBAIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudDsK
IAogY2xhc3MgUGxhdGZvcm1QYXN0ZWJvYXJkIHsKIHB1YmxpYzoKLSAgICAvLyBGSVhNRTogcHJv
YmFibHkgd2UgZG9uJ3QgbmVlZCBhIGNvbnN0cnVjdG9yIHRoYXQgdGFrZXMgYSBwYXN0ZWJvYXJk
IG5hbWUgZm9yIGlPUy4KICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBQbGF0Zm9ybVBhc3Rl
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAjaWYgUExBVEZPUk0oSU9TKQog
ICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtUGFzdGVib2FyZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCBhZjI2MGUwNTc4MjkyY2RkY2Vh
YjZmMjJhMzE2Mjk1MGNiNDA1NDRjLi45NmM3MmQwMWM3NTMwNDU5MGMzNzBjNjNiODY0OTYxYmI2
Y2YzMDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2Fy
ZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5t
bQpAQCAtODIsNyArODIsNyBAQCBQYXN0ZWJvYXJkSW1hZ2U6On5QYXN0ZWJvYXJkSW1hZ2UoKQog
fQogCiBQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKCkKLSAgICA6IG1fY2hhbmdlQ291bnQocGxhdGZv
cm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jaGFuZ2VDb3VudCgpKQorICAg
IDogbV9jaGFuZ2VDb3VudChwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5
KCktPmNoYW5nZUNvdW50KG1fcGFzdGVib2FyZE5hbWUpKQogewogfQogCkBAIC0xMDIsNyArMTAy
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZVByaXZh
dGUoKQogCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50
JiBjb250ZW50KQogewotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRl
Z3koKS0+d3JpdGVUb1Bhc3RlYm9hcmQoY29udGVudCk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT53cml0ZVRvUGFzdGVib2FyZChjb250ZW50LCBtX3Bh
c3RlYm9hcmROYW1lKTsKIH0KIAogU3RyaW5nIFBhc3RlYm9hcmQ6OnJlc291cmNlTUlNRVR5cGUo
Y29uc3QgTlNTdHJpbmcgKm1pbWVUeXBlKQpAQCAtMTEyLDE3ICsxMTIsMTcgQEAgU3RyaW5nIFBh
c3RlYm9hcmQ6OnJlc291cmNlTUlNRVR5cGUoY29uc3QgTlNTdHJpbmcgKm1pbWVUeXBlKQogCiB2
b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZElt
YWdlKQogewotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+
d3JpdGVUb1Bhc3RlYm9hcmQocGFzdGVib2FyZEltYWdlKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJvYXJkKHBhc3RlYm9hcmRJ
bWFnZSwgbV9wYXN0ZWJvYXJkTmFtZSk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVQbGFp
blRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBTbWFydFJlcGxhY2VPcHRpb24pCiB7Ci0gICAgcGxh
dGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT53cml0ZVRvUGFzdGVib2Fy
ZChrVVRUeXBlVGV4dCwgdGV4dCk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9h
cmRTdHJhdGVneSgpLT53cml0ZVRvUGFzdGVib2FyZChrVVRUeXBlVGV4dCwgdGV4dCwgbV9wYXN0
ZWJvYXJkTmFtZSk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2Fy
ZFVSTCYgcGFzdGVib2FyZFVSTCkKIHsKLSAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVi
b2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJvYXJkKGtVVFR5cGVVUkwsIHBhc3RlYm9hcmRV
UkwudXJsLnN0cmluZygpKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJvYXJkKGtVVFR5cGVVUkwsIHBhc3RlYm9hcmRVUkwudXJs
LnN0cmluZygpLCBtX3Bhc3RlYm9hcmROYW1lKTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0
ZVRydXN0d29ydGh5V2ViVVJMc1Bib2FyZFR5cGUoY29uc3QgUGFzdGVib2FyZFVSTCYpCkBAIC0x
NDYsOSArMTQ2LDkgQEAgYm9vbCBQYXN0ZWJvYXJkOjpjYW5TbWFydFJlcGxhY2UoKQogdm9pZCBQ
YXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQpCiB7CiAgICAgUGFzdGVi
b2FyZFN0cmF0ZWd5JiBzdHJhdGVneSA9ICpwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2Fy
ZFN0cmF0ZWd5KCk7Ci0gICAgdGV4dC50ZXh0ID0gc3RyYXRlZ3kucmVhZFN0cmluZ0Zyb21QYXN0
ZWJvYXJkKDAsIGtVVFR5cGVUZXh0KTsKKyAgICB0ZXh0LnRleHQgPSBzdHJhdGVneS5yZWFkU3Ry
aW5nRnJvbVBhc3RlYm9hcmQoMCwga1VUVHlwZVRleHQsIG1fcGFzdGVib2FyZE5hbWUpOwogICAg
IGlmICh0ZXh0LnRleHQuaXNFbXB0eSgpKQotICAgICAgICB0ZXh0LnRleHQgPSBzdHJhdGVneS5y
ZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoMCwga1VUVHlwZVVSTCk7CisgICAgICAgIHRleHQudGV4
dCA9IHN0cmF0ZWd5LnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCgwLCBrVVRUeXBlVVJMLCBtX3Bh
c3RlYm9hcmROYW1lKTsKIH0KIAogc3RhdGljIE5TQXJyYXkqIHN1cHBvcnRlZEltYWdlVHlwZXMo
KQpAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2Vi
Q29udGVudFJlYWRlciYgcmVhZGVyKQogewogICAgIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRl
Z3kgPSAqcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpOwogCi0gICAg
aW50IG51bWJlck9mSXRlbXMgPSBzdHJhdGVneS5nZXRQYXN0ZWJvYXJkSXRlbXNDb3VudCgpOwor
ICAgIGludCBudW1iZXJPZkl0ZW1zID0gc3RyYXRlZ3kuZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQo
bV9wYXN0ZWJvYXJkTmFtZSk7CiAKICAgICBpZiAoIW51bWJlck9mSXRlbXMpCiAgICAgICAgIHJl
dHVybjsKQEAgLTE3Myw0NyArMTczLDQ3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJv
YXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyKQogICAgICAgICAgICAgTlNTdHJpbmcgKnR5cGUg
PSBbdHlwZXMgb2JqZWN0QXRJbmRleDp0eXBlSW5kZXhdOwogCiAgICAgICAgICAgICBpZiAoW3R5
cGUgaXNFcXVhbFRvU3RyaW5nOldlYkFyY2hpdmVQYm9hcmRUeXBlXSkgewotICAgICAgICAgICAg
ICAgIGlmIChSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQoaSwgV2ViQXJjaGl2ZVBib2FyZFR5cGUpKSB7CisgICAgICAgICAgICAg
ICAgaWYgKFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChpLCBXZWJBcmNoaXZlUGJvYXJkVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSkp
IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHJlYWRlci5yZWFkV2ViQXJjaGl2ZShidWZmZXIu
Z2V0KCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5n
OihOU1N0cmluZyAqKWtVVFR5cGVIVE1MXSkgewotICAgICAgICAgICAgICAgIFN0cmluZyBodG1s
U3RyaW5nID0gc3RyYXRlZ3kucmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGksIGtVVFR5cGVIVE1M
KTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgaHRtbFN0cmluZyA9IHN0cmF0ZWd5LnJlYWRTdHJp
bmdGcm9tUGFzdGVib2FyZChpLCBrVVRUeXBlSFRNTCwgbV9wYXN0ZWJvYXJkTmFtZSk7CiAgICAg
ICAgICAgICAgICAgaWYgKCFodG1sU3RyaW5nLmlzTnVsbCgpICYmIHJlYWRlci5yZWFkSFRNTCho
dG1sU3RyaW5nKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6KE5TU3RyaW5nICopa1VUVHlw
ZUZsYXRSVEZEXSkgewotICAgICAgICAgICAgICAgIGlmIChSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaSwga1VUVHlwZUZsYXRS
VEZEKSkgeworICAgICAgICAgICAgICAgIGlmIChSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaSwga1VUVHlwZUZsYXRSVEZELCBt
X3Bhc3RlYm9hcmROYW1lKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAocmVhZGVyLnJlYWRS
VEZEKCpidWZmZXIpKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoW3R5cGUgaXNFcXVhbFRv
U3RyaW5nOihOU1N0cmluZyAqKWtVVFR5cGVSVEZdKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVi
b2FyZChpLCBrVVRUeXBlUlRGKSkgeworICAgICAgICAgICAgICAgIGlmIChSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaSwga1VU
VHlwZVJURiwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHJl
YWRlci5yZWFkUlRGKCpidWZmZXIpKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoW3N1cHBv
cnRlZEltYWdlVHlwZXMoKSBjb250YWluc09iamVjdDp0eXBlXSkgewotICAgICAgICAgICAgICAg
IGlmIChSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQoaSwgdHlwZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGksIHR5
cGUsIG1fcGFzdGVib2FyZE5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChyZWFkZXIu
cmVhZEltYWdlKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCB0eXBlKSkKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAg
ICAgICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5nOihOU1N0cmluZyAqKWtVVFR5cGVVUkxdKSB7
Ci0gICAgICAgICAgICAgICAgVVJMIHVybCA9IHN0cmF0ZWd5LnJlYWRVUkxGcm9tUGFzdGVib2Fy
ZChpLCBrVVRUeXBlVVJMKTsKKyAgICAgICAgICAgICAgICBVUkwgdXJsID0gc3RyYXRlZ3kucmVh
ZFVSTEZyb21QYXN0ZWJvYXJkKGksIGtVVFR5cGVVUkwsIG1fcGFzdGVib2FyZE5hbWUpOwogICAg
ICAgICAgICAgICAgIGlmICghdXJsLmlzTnVsbCgpICYmIHJlYWRlci5yZWFkVVJMKHVybCwgU3Ry
aW5nKCkpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIAogICAgICAgICAgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzooTlNTdHJpbmcg
KilrVVRUeXBlVGV4dF0pIHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgc3RyaW5nID0gc3RyYXRl
Z3kucmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGksIGtVVFR5cGVUZXh0KTsKKyAgICAgICAgICAg
ICAgICBTdHJpbmcgc3RyaW5nID0gc3RyYXRlZ3kucmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGks
IGtVVFR5cGVUZXh0LCBtX3Bhc3RlYm9hcmROYW1lKTsKICAgICAgICAgICAgICAgICBpZiAoIXN0
cmluZy5pc051bGwoKSAmJiByZWFkZXIucmVhZFBsYWluVGV4dChzdHJpbmcpKQogICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTIyOSw3ICsyMjksNyBAQCBOU0Fy
cmF5KiBQYXN0ZWJvYXJkOjpzdXBwb3J0ZWRQYXN0ZWJvYXJkVHlwZXMoKQogCiBib29sIFBhc3Rl
Ym9hcmQ6Omhhc0RhdGEoKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFz
dGVib2FyZFN0cmF0ZWd5KCktPmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KCkgIT0gMDsKKyAgICBy
ZXR1cm4gISFwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldFBh
c3RlYm9hcmRJdGVtc0NvdW50KG1fcGFzdGVib2FyZE5hbWUpOwogfQogCiBzdGF0aWMgU3RyaW5n
IHV0aVR5cGVGcm9tQ29jb2FUeXBlKE5TU3RyaW5nICp0eXBlKQpAQCAtMjczLDE5ICsyNzMsMTkg
QEAgdm9pZCBQYXN0ZWJvYXJkOjpjbGVhcihjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgaWYgKCFj
b2NvYVR5cGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5w
YXN0ZWJvYXJkU3RyYXRlZ3koKS0+d3JpdGVUb1Bhc3RlYm9hcmQoY29jb2FUeXBlLmdldCgpLCBT
dHJpbmcoKSk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgp
LT53cml0ZVRvUGFzdGVib2FyZChjb2NvYVR5cGUuZ2V0KCksIFN0cmluZygpLCBtX3Bhc3RlYm9h
cmROYW1lKTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjpjbGVhcigpCiB7Ci0gICAgcGxhdGZvcm1T
dHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT53cml0ZVRvUGFzdGVib2FyZChTdHJp
bmcoKSwgU3RyaW5nKCkpOworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3Ry
YXRlZ3koKS0+d3JpdGVUb1Bhc3RlYm9hcmQoU3RyaW5nKCksIFN0cmluZygpLCBtX3Bhc3RlYm9h
cmROYW1lKTsKIH0KIAogU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoY29uc3QgU3RyaW5n
JiB0eXBlKQogewogICAgIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3kgPSAqcGxhdGZvcm1T
dHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpOwogCi0gICAgaW50IG51bWJlck9mSXRl
bXMgPSBzdHJhdGVneS5nZXRQYXN0ZWJvYXJkSXRlbXNDb3VudCgpOworICAgIGludCBudW1iZXJP
Zkl0ZW1zID0gc3RyYXRlZ3kuZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQobV9wYXN0ZWJvYXJkTmFt
ZSk7CiAKICAgICBpZiAoIW51bWJlck9mSXRlbXMpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
QEAgLTI5NiwyMSArMjk2LDIxIEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0
IFN0cmluZyYgdHlwZSkKICAgICBOU1N0cmluZyAqY29jb2FWYWx1ZSA9IG5pbDsKIAogICAgIGlm
IChbY29jb2FUeXBlIGlzRXF1YWxUb1N0cmluZzooTlNTdHJpbmcgKilrVVRUeXBlVVJMXSkgewot
ICAgICAgICBVUkwgdXJsID0gc3RyYXRlZ3kucmVhZFVSTEZyb21QYXN0ZWJvYXJkKDAsIGtVVFR5
cGVVUkwpOworICAgICAgICBVUkwgdXJsID0gc3RyYXRlZ3kucmVhZFVSTEZyb21QYXN0ZWJvYXJk
KDAsIGtVVFR5cGVVUkwsIG1fcGFzdGVib2FyZE5hbWUpOwogICAgICAgICBpZiAoIXVybC5pc051
bGwoKSkKICAgICAgICAgICAgIGNvY29hVmFsdWUgPSBbKE5TVVJMICopdXJsIGFic29sdXRlU3Ry
aW5nXTsKICAgICB9IGVsc2UgaWYgKFtjb2NvYVR5cGUgaXNFcXVhbFRvU3RyaW5nOihOU1N0cmlu
ZyAqKWtVVFR5cGVUZXh0XSkgewotICAgICAgICBTdHJpbmcgdmFsdWUgPSBzdHJhdGVneS5yZWFk
U3RyaW5nRnJvbVBhc3RlYm9hcmQoMCwga1VUVHlwZVRleHQpOworICAgICAgICBTdHJpbmcgdmFs
dWUgPSBzdHJhdGVneS5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoMCwga1VUVHlwZVRleHQsIG1f
cGFzdGVib2FyZE5hbWUpOwogICAgICAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKQogICAgICAgICAg
ICAgY29jb2FWYWx1ZSA9IFsoTlNTdHJpbmcgKil2YWx1ZSBwcmVjb21wb3NlZFN0cmluZ1dpdGhD
YW5vbmljYWxNYXBwaW5nXTsKICAgICB9IGVsc2UgaWYgKGNvY29hVHlwZSkgewotICAgICAgICBp
ZiAoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKDAsIGNvY29hVHlwZS5nZXQoKSkpCisgICAgICAgIGlmIChSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoMCwgY29j
b2FUeXBlLmdldCgpLCBtX3Bhc3RlYm9hcmROYW1lKSkKICAgICAgICAgICAgIGNvY29hVmFsdWUg
PSBbW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIGF1dG9yZWxlYXNlXTsKICAgICB9
CiAKICAgICAvLyBFbmZvcmNlIGNoYW5nZUNvdW50IG91cnNlbHZlcyBmb3Igc2VjdXJpdHkuIFdl
IGNoZWNrIGFmdGVyIHJlYWRpbmcgaW5zdGVhZCBvZiBiZWZvcmUgdG8gYmUKICAgICAvLyBzdXJl
IGl0IGRvZXNuJ3QgY2hhbmdlIGJldHdlZW4gb3VyIHRlc3RpbmcgdGhlIGNoYW5nZSBjb3VudCBh
bmQgYWNjZXNzaW5nIHRoZSBkYXRhLgotICAgIGlmIChjb2NvYVZhbHVlICYmIG1fY2hhbmdlQ291
bnQgPT0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jaGFuZ2VD
b3VudCgpKQorICAgIGlmIChjb2NvYVZhbHVlICYmIG1fY2hhbmdlQ291bnQgPT0gcGxhdGZvcm1T
dHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5jaGFuZ2VDb3VudChtX3Bhc3RlYm9h
cmROYW1lKSkKICAgICAgICAgcmV0dXJuIGNvY29hVmFsdWU7CiAKICAgICByZXR1cm4gU3RyaW5n
KCk7CkBAIC0zNDIsNyArMzQyLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVN0cmluZyhjb25z
dCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSkKICAgICBpZiAoIWNvY29hVHlwZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRT
dHJhdGVneSgpLT53cml0ZVRvUGFzdGVib2FyZCh0eXBlLCBkYXRhKTsKKyAgICBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJvYXJkKHR5cGUs
IGRhdGEsIG1fcGFzdGVib2FyZE5hbWUpOwogfQogCiBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJk
Ojp0eXBlcygpCkBAIC0zNTEsNyArMzUxLDcgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6
dHlwZXMoKQogCiAgICAgLy8gRW5mb3JjZSBjaGFuZ2VDb3VudCBvdXJzZWx2ZXMgZm9yIHNlY3Vy
aXR5LiBXZSBjaGVjayBhZnRlciByZWFkaW5nIGluc3RlYWQgb2YgYmVmb3JlIHRvIGJlCiAgICAg
Ly8gc3VyZSBpdCBkb2Vzbid0IGNoYW5nZSBiZXR3ZWVuIG91ciB0ZXN0aW5nIHRoZSBjaGFuZ2Ug
Y291bnQgYW5kIGFjY2Vzc2luZyB0aGUgZGF0YS4KLSAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmNoYW5nZUNvdW50KCkp
CisgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9h
cmRTdHJhdGVneSgpLT5jaGFuZ2VDb3VudChtX3Bhc3RlYm9hcmROYW1lKSkKICAgICAgICAgcmV0
dXJuIFZlY3RvcjxTdHJpbmc+KCk7CiAKICAgICBMaXN0SGFzaFNldDxTdHJpbmc+IHJlc3VsdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmgKaW5kZXggYzVlNDFkZGU4OWIzOTMxMzRhN2EyYzliMmFkZDJjOGY3OTUw
MzM1Ni4uYTYwMjcxYjI2NTFmNGQyNWViMzc0MmEyNjI5OWVlMGEwN2FjZGI3OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmgKQEAgLTU5LDE0ICs1OSwxMyBAQCBwcml2YXRlOgogCiAgICAgLy8gV2ViQ29yZTo6
UGFzdGVib2FyZFN0cmF0ZWd5CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHZvaWQgd3JpdGVUb1Bh
c3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQmKSBvdmVycmlkZTsK
LSAgICB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJbWFn
ZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgaW50IGdldFBhc3Rl
Ym9hcmRJdGVtc0NvdW50KCkgb3ZlcnJpZGU7Ci0gICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFz
dGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIG92ZXJyaWRl
OwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVi
b2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIG92ZXJyaWRlOwot
ICAgIFdlYkNvcmU6OlVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVycmlkZTsKLSAgICBsb25nIGNoYW5nZUNvdW50KCkg
b3ZlcnJpZGU7CisgICAgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkV2ViQ29udGVudCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRl
OworICAgIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZElt
YWdlJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB3
cml0ZVRvUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBpbnQgZ2V0
UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJp
ZGU7CisgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92
ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6OlVSTCByZWFk
VVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICNlbmRpZgogICAgIHZv
aWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSBvdmVycmlkZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZm
ZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IDQzNWVjODc5NDYw
MWM3NDk3YmE2NGU2ZWMzNWEyZDJhZDBjYmQ2YTUuLjE5ZmY1ZTBiZWQwNDI2MDRjZWNkYWUxNmU3
MTMzMTBkYTI0NzUzNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTE4Niw0MyArMTg2LDM4IEBA
IGxvbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nLCBjb25zdCBTdHJpbmcmCiB9CiAKICNpZiBQTEFURk9STShJT1MpCi12b2lkIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQmIGNv
bnRlbnQsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7Ci0gICAgUGxhdGZvcm1QYXN0
ZWJvYXJkKCkud3JpdGUoY29udGVudCk7CisgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9h
cmROYW1lKS53cml0ZShjb250ZW50KTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OndyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJbWFnZSYgaW1hZ2Up
Cit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZEltYWdlJiBpbWFnZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkKIHsKLSAgICBQbGF0Zm9ybVBhc3RlYm9hcmQoKS53cml0ZShpbWFnZSk7CisgICAgUGxhdGZv
cm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZShpbWFnZSk7CiB9CiAKLXZvaWQgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewotICAgIFBsYXRm
b3JtUGFzdGVib2FyZCgpLndyaXRlKHBhc3RlYm9hcmRUeXBlLCB0ZXh0KTsKKyAgICBQbGF0Zm9y
bVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRlKHBhc3RlYm9hcmRUeXBlLCB0ZXh0KTsK
IH0KIAotaW50IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQo
KQoraW50IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJv
YXJkKCkuY291bnQoKTsKKyAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS5jb3VudCgpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0
IFN0cmluZyYgdHlwZSkKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewotICAgIHJldHVybiBQ
bGF0Zm9ybVBhc3RlYm9hcmQoKS5yZWFkQnVmZmVyKGluZGV4LCB0eXBlKTsKKyAgICByZXR1cm4g
UGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkQnVmZmVyKGluZGV4LCB0eXBl
KTsKIH0KIAotV2ViQ29yZTo6VVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21Q
YXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKQorV2ViQ29yZTo6VVJMIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewotICAgIHJl
dHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQoKS5yZWFkVVJMKGluZGV4LCB0eXBlKTsKKyAgICByZXR1
cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkVVJMKGluZGV4LCB0eXBl
KTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZFN0cmluZ0Zyb21QYXN0
ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKQorU3RyaW5nIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewotICAgIHJldHVybiBQ
bGF0Zm9ybVBhc3RlYm9hcmQoKS5yZWFkU3RyaW5nKGluZGV4LCB0eXBlKTsKLX0KLQotbG9uZyBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNoYW5nZUNvdW50KCkKLXsKLSAgICByZXR1cm4gUGxhdGZv
cm1QYXN0ZWJvYXJkKCkuY2hhbmdlQ291bnQoKTsKKyAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJv
YXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkU3RyaW5nKGluZGV4LCB0eXBlKTsKIH0KICNlbmRpZiAv
LyBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KaW5kZXggYzE0Mzk4ZDk5OTllYTM5MTA5
MjNlY2I2Y2Y3ZTFlMGYxZTc2YTdjZS4uZTRmMjMwMTEyMjQwOGMwNzY2OTlmMTVkZjdhMWMyYWYz
NTk1OTQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBh
c3RlYm9hcmRQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQpAQCAtMTM1LDM0ICsxMzUsMzQgQEAgdm9pZCBX
ZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUKIH0KIAogI2lmIFBMQVRGT1JNKElPUykKLXZvaWQgV2ViUGFzdGVi
b2FyZFByb3h5Ojp3cml0ZVdlYkNvbnRlbnRUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3Jp
dGVXZWJDb250ZW50VG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250
ZW50JiBjb250ZW50LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewotICAgIFBsYXRm
b3JtUGFzdGVib2FyZCgpLndyaXRlKGNvbnRlbnQpOworICAgIFBsYXRmb3JtUGFzdGVib2FyZChw
YXN0ZWJvYXJkTmFtZSkud3JpdGUoY29udGVudCk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFBy
b3h5Ojp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJbWFn
ZSYgcGFzdGVib2FyZEltYWdlKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlSW1hZ2VU
b1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1h
Z2UsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7Ci0gICAgUGxhdGZvcm1QYXN0ZWJv
YXJkKCkud3JpdGUocGFzdGVib2FyZEltYWdlKTsKKyAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFz
dGVib2FyZE5hbWUpLndyaXRlKHBhc3RlYm9hcmRJbWFnZSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVi
b2FyZFByb3h5Ojp3cml0ZVN0cmluZ1RvUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3Jp
dGVTdHJpbmdUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewotICAgIFBsYXRm
b3JtUGFzdGVib2FyZCgpLndyaXRlKHBhc3RlYm9hcmRUeXBlLCB0ZXh0KTsKKyAgICBQbGF0Zm9y
bVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRlKHBhc3RlYm9hcmRUeXBlLCB0ZXh0KTsK
IH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCh1
aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgV1RGOjpTdHJpbmcm
IHZhbHVlKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRTdHJpbmdGcm9tUGFzdGVib2Fy
ZCh1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgV1RGOjpTdHJpbmcmIHZhbHVlKQogewotICAgIHZhbHVlID0g
UGxhdGZvcm1QYXN0ZWJvYXJkKCkucmVhZFN0cmluZyhpbmRleCwgcGFzdGVib2FyZFR5cGUpOwor
ICAgIHZhbHVlID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkU3RyaW5n
KGluZGV4LCBwYXN0ZWJvYXJkVHlwZSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojpy
ZWFkVVJMRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIFN0cmluZyYgdXJsKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRVUkxG
cm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB1cmwpCiB7Ci0gICAgdXJs
ID0gUGxhdGZvcm1QYXN0ZWJvYXJkKCkucmVhZFVSTChpbmRleCwgcGFzdGVib2FyZFR5cGUpOwor
ICAgIHVybCA9IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZFVSTChpbmRl
eCwgcGFzdGVib2FyZFR5cGUpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYgaGFuZGxlLCB1aW50NjRfdCYgc2l6ZSkKK3Zv
aWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQodWludDY0X3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBoYW5kbGUsIHVpbnQ2NF90JiBzaXplKQog
ewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFBsYXRmb3JtUGFzdGVib2FyZCgp
LnJlYWRCdWZmZXIoaW5kZXgsIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRCdWZm
ZXIoaW5kZXgsIHBhc3RlYm9hcmRUeXBlKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0
dXJuOwogICAgIHNpemUgPSBidWZmZXItPnNpemUoKTsKQEAgLTE3Myw5ICsxNzMsOSBAQCB2b2lk
IFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHVpbnQ2NF90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmCiAgICAgc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVIYW5kbGUo
aGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKIH0KIAotdm9pZCBX
ZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KHVpbnQ2NF90JiBpdGVt
c0NvdW50KQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIHVpbnQ2NF90JiBpdGVtc0NvdW50KQogewot
ICAgIGl0ZW1zQ291bnQgPSBQbGF0Zm9ybVBhc3RlYm9hcmQoKS5jb3VudCgpOworICAgIGl0ZW1z
Q291bnQgPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvdW50KCk7CiB9CiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhc3RlYm9h
cmRQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5o
CmluZGV4IDAwMDRiMThkMjZlZDQ3ZGIzOWI3NDkyN2ZkYTQwZmVlYTBkMjg0OWIuLmYxNTZlNGI5
MTYwMjk0Zjg2ODYzZmE5NjIzODM0ZmIxYWZkNzUzYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmgKQEAgLTY4LDEzICs2OCwxMyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAKICNp
ZiBQTEFURk9STShJT1MpCi0gICAgdm9pZCB3cml0ZVdlYkNvbnRlbnRUb1Bhc3RlYm9hcmQoY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQmKTsKLSAgICB2b2lkIHdyaXRlSW1hZ2VU
b1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEltYWdlJik7Ci0gICAgdm9pZCB3
cml0ZVN0cmluZ1RvUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmKTsKLSAgICB2b2lkIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgV1RGOjpTdHJpbmcmKTsKLSAgICB2
b2lkIHJlYWRVUkxGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgU3RyaW5nJik7Ci0gICAgdm9pZCByZWFkQnVmZmVyRnJvbVBhc3RlYm9h
cmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIFNoYXJlZE1l
bW9yeTo6SGFuZGxlJiwgdWludDY0X3QmIHNpemUpOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZEl0
ZW1zQ291bnQodWludDY0X3QmIGl0ZW1zQ291bnQpOworICAgIHZvaWQgd3JpdGVXZWJDb250ZW50
VG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50JiwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CisgICAgdm9pZCB3cml0ZUltYWdlVG9QYXN0ZWJvYXJk
KGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJbWFnZSYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpOworICAgIHZvaWQgd3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSk7CisgICAgdm9pZCByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IFdURjo6U3RyaW5nJik7CisgICAgdm9pZCByZWFkVVJMRnJvbVBhc3RlYm9hcmQodWludDY0X3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIFN0cmluZyYpOworICAgIHZvaWQgcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHVp
bnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYsIHVpbnQ2NF90JiBzaXplKTsK
KyAgICB2b2lkIGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIHVpbnQ2NF90JiBpdGVtc0NvdW50KTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KaW5kZXgg
YWY5YmE3ZmMzM2E2NzE4NDg1NDI5NTA1N2NhZjM4NzVjZjZlM2RmZC4uYzI2NzkyMmY2NWU1ZTE3
MDZjMjU5ZWIzZTQyYTU4NWUwODcyYWNhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMiwxMyArMjIs
MTMgQEAKIAogbWVzc2FnZXMgLT4gV2ViUGFzdGVib2FyZFByb3h5IHsKICNpZiBQTEFURk9STShJ
T1MpCi0gICAgV3JpdGVXZWJDb250ZW50VG9QYXN0ZWJvYXJkKHN0cnVjdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkV2ViQ29udGVudCBjb250ZW50KQotICAgIFdyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoc3Ry
dWN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJbWFnZSBwYXN0ZWJvYXJkSW1hZ2UpCi0gICAgV3JpdGVT
dHJpbmdUb1Bhc3RlYm9hcmQoU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcgdGV4dCkgCi0g
ICAgUmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBTdHJpbmcgcGFzdGVi
b2FyZFR5cGUpIC0+IChTdHJpbmcgc3RyaW5nKQotICAgIFJlYWRVUkxGcm9tUGFzdGVib2FyZCh1
aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlKSAtPiAoU3RyaW5nIHN0cmluZykK
LSAgICBSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0
ZWJvYXJkVHlwZSkgLT4gKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlLCB1aW50
NjRfdCBzaXplKQotICAgIEdldFBhc3RlYm9hcmRJdGVtc0NvdW50KCkgLT4gKHVpbnQ2NF90IGl0
ZW1zQ291bnQpCisgICAgV3JpdGVXZWJDb250ZW50VG9QYXN0ZWJvYXJkKHN0cnVjdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkV2ViQ29udGVudCBjb250ZW50LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpCisg
ICAgV3JpdGVJbWFnZVRvUGFzdGVib2FyZChzdHJ1Y3QgV2ViQ29yZTo6UGFzdGVib2FyZEltYWdl
IHBhc3RlYm9hcmRJbWFnZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKQorICAgIFdyaXRlU3RyaW5n
VG9QYXN0ZWJvYXJkKFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHRleHQsIFN0cmluZyBw
YXN0ZWJvYXJkTmFtZSkKKyAgICBSZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5k
ZXgsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoU3Ry
aW5nIHN0cmluZykKKyAgICBSZWFkVVJMRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIFN0
cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoU3RyaW5nIHN0
cmluZykKKyAgICBSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIFN0cmlu
ZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoV2ViS2l0OjpTaGFy
ZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGUsIHVpbnQ2NF90IHNpemUpCisgICAgR2V0UGFzdGVib2Fy
ZEl0ZW1zQ291bnQoU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAodWludDY0X3QgaXRlbXNDb3Vu
dCkKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHAKaW5kZXggMzg1NzBhNzcyODdjNTk0N2ZhMzkxNmRiYjAwZWUzOGRkNjgyOWNh
OC4uYzAzOTcwYWQ1NWJlZjZhMTA1MWZkMDI1YjAxMWM0ZDkwMDAwNGUxNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMjg1LDYwICsyODUsNTIgQEAgbG9uZyBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBzdHJpbmcs
IGNvbnN0IFN0cmluZyYKIH0KIAogI2lmIFBMQVRGT1JNKElPUykKLXZvaWQgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2Vi
Q29udGVudCYgY29udGVudCkKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFz
dGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJk
UHJveHk6OldyaXRlV2ViQ29udGVudFRvUGFzdGVib2FyZChjb250ZW50KSwgMCk7CisgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpXcml0ZVdlYkNvbnRlbnRUb1Bhc3RlYm9hcmQoY29u
dGVudCwgcGFzdGVib2FyZE5hbWUpLCAwKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OndyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJbWFnZSYgaW1h
Z2UpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZEltYWdlJiBpbWFnZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OldyaXRlSW1hZ2VUb1Bh
c3RlYm9hcmQoaW1hZ2UpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6Oldy
aXRlSW1hZ2VUb1Bhc3RlYm9hcmQoaW1hZ2UsIHBhc3RlYm9hcmROYW1lKSwgMCk7CiB9CiAKLXZv
aWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvUGFzdGVib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQpCit2b2lkIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6d3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewotICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6V3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQocGFz
dGVib2FyZFR5cGUsIHRleHQpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6
OldyaXRlU3RyaW5nVG9QYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlLCB0ZXh0LCBwYXN0ZWJvYXJk
TmFtZSksIDApOwogfQogCi1pbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXN0ZWJvYXJk
SXRlbXNDb3VudCgpCitpbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXN0ZWJvYXJkSXRl
bXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewogICAgIHVpbnQ2NF90IGl0
ZW1zQ291bnQ7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVi
b2FyZEl0ZW1zQ291bnQoKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVi
b2FyZEl0ZW1zQ291bnQ6OlJlcGx5KGl0ZW1zQ291bnQpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6
V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChwYXN0ZWJvYXJkTmFt
ZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRJdGVtc0NvdW50
OjpSZXBseShpdGVtc0NvdW50KSwgMCk7CiAgICAgcmV0dXJuIGl0ZW1zQ291bnQ7CiB9CiAKLVJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSkKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKICAgICBTaGFyZWRNZW1v
cnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgdWludDY0X3Qgc2l6ZSA9IDA7Ci0gICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2Fn
ZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGluZGV4LCBw
YXN0ZWJvYXJkVHlwZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZDo6UmVwbHkoaGFuZGxlLCBzaXplKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6
OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0
ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5
OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KGhhbmRsZSwgc2l6ZSksIDApOwogICAg
IGlmIChoYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIFJlZlB0
cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGhh
bmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVkTWVt
b3J5QnVmZmVyLT5kYXRhKCkpLCBzaXplKTsKIH0KIAotV2ViQ29yZTo6VVJMIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSkKK1dlYkNvcmU6OlVSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJl
YWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7CiAgICAgU3RyaW5nIHVybFN0cmlu
ZzsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkVVJMRnJvbVBhc3Rl
Ym9hcmQoaW5kZXgsIHBhc3RlYm9hcmRUeXBlKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94
eTo6UmVhZFVSTEZyb21QYXN0ZWJvYXJkOjpSZXBseSh1cmxTdHJpbmcpLCAwKTsKKyAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhN
ZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW5kZXgs
IHBhc3RlYm9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJk
UHJveHk6OlJlYWRVUkxGcm9tUGFzdGVib2FyZDo6UmVwbHkodXJsU3RyaW5nKSwgMCk7CiAgICAg
cmV0dXJuIFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybFN0cmluZyk7CiB9CiAKLVN0cmluZyBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewogICAgIFN0cmluZyB2
YWx1ZTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9hcmRUeXBlKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9h
cmRQcm94eTo6UmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkOjpSZXBseSh2YWx1ZSksIDApOworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRTdHJpbmdGcm9tUGFzdGVib2Fy
ZChpbmRleCwgcGFzdGVib2FyZFR5cGUsIHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBh
c3RlYm9hcmRQcm94eTo6UmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkOjpSZXBseSh2YWx1ZSksIDAp
OwogICAgIHJldHVybiB2YWx1ZTsKIH0KLQotbG9uZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNo
YW5nZUNvdW50KCkKLXsKLSAgICB1aW50NjRfdCBjaGFuZ2VDb3VudDsKLSAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdl
czo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkQ2hhbmdlQ291bnQoU3RyaW5nKCkp
LCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkQ2hhbmdlQ291bnQ6
OlJlcGx5KGNoYW5nZUNvdW50KSwgMCk7Ci0gICAgcmV0dXJuIGNoYW5nZUNvdW50OwotfQotCiAj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogCiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCA4ZDMwMDIxZjgwZWNhNzgwNDI0ODQ1YWJj
YzY3ODBjMzJhNjc2NzJhLi5jNjllYTUxOWViOTZkMDVhYmI3MTQ2ZjgxYmMyZDViZTM0MGZkMDBl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTYwLDE0ICs2MCwxMyBAQCBw
cml2YXRlOgogCiAgICAgLy8gV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5CiAjaWYgUExBVEZP
Uk0oSU9TKQotICAgIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZFdlYkNvbnRlbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJbWFnZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgd3JpdGVU
b1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJikg
b3ZlcnJpZGU7Ci0gICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KCkgb3ZlcnJpZGU7Ci0g
ICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OlVSTCByZWFkVVJMRnJvbVBh
c3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVycmlk
ZTsKLSAgICBsb25nIGNoYW5nZUNvdW50KCkgb3ZlcnJpZGU7CisgICAgdm9pZCB3cml0ZVRvUGFz
dGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudCYsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQo
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEltYWdlJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSBvdmVycmlkZTsKKyAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9t
UGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJy
aWRlOworICAgIFdlYkNvcmU6OlVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBvdmVycmlkZTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgZ2V0VHlw
ZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBv
dmVycmlkZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>