<?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>138985</bug_id>
          
          <creation_ts>2014-11-21 15:14:00 -0800</creation_ts>
          <short_desc>RenderElement::removeChild() doesn&apos;t need a return value.</short_desc>
          <delta_ts>2014-11-21 15:40: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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>kling</cc>
    
    <cc>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1050581</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-11-21 15:14:00 -0800</bug_when>
    <thetext>It looks like nobody uses the return value from RenderElement::removeChild().
Instead of plumbing it through everywhere, we should just remove it.
((Maybe someday, removeChild() could return a smart pointer that owns the renderer that got removed.))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1050582</commentid>
    <comment_count>1</comment_count>
      <attachid>242076</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-11-21 15:14:30 -0800</bug_when>
    <thetext>Created attachment 242076
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1050610</commentid>
    <comment_count>2</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-11-21 15:40:29 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/176478</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242076</attachid>
            <date>2014-11-21 15:14:30 -0800</date>
            <delta_ts>2014-11-21 15:22:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138985.diff</filename>
            <type>text/plain</type>
            <size>35557</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxNzJlY2MxLi45YmRlODlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNjEg
QEAKIDIwMTQtMTEtMjEgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCisgICAg
ICAgIFJlbmRlckVsZW1lbnQ6OnJlbW92ZUNoaWxkKCkgZG9lc24ndCBuZWVkIGEgcmV0dXJuIHZh
bHVlLgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTM4OTg1PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vYm9keSB1c2VzIHRoZSByZXR1
cm4gdmFsdWUgZnJvbSBSZW5kZXJFbGVtZW50OjpyZW1vdmVDaGlsZCgpLgorICAgICAgICBDaGFu
Z2UgaXQgdG8gcmV0dXJuIHZvaWQgYW5kIHJlbW92ZSBhbGwgdGhlIHVubmVjZXNzYXJ5IHBsdW1i
aW5nLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjpyZW1vdmVDaGlsZCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OnJlbW92ZUNoaWxkKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJ1dHRvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCdXR0b246OnJlbW92ZUNoaWxk
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6
cmVtb3ZlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6cmVtb3ZlQ2hp
bGRJbnRlcm5hbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwOgorICAgICAgICAoUmVuZGVyTWVudUxp
c3Q6OnJlbW92ZUNoaWxkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUnVieS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJSdWJ5QXNJbmxpbmU6OnJlbW92ZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clJ1YnlBc0Jsb2NrOjpyZW1vdmVDaGlsZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1
YnkuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJSdWJ5UnVuOjpyZW1vdmVDaGlsZCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclJ1YnlSdW4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFJvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm9vdFdyYXBwZXI6OnJl
bW92ZUNoaWxkV2l0aG91dFJlc3RydWN0dXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TWF0aE1MUm9vdFdyYXBwZXI6OnJlbW92ZUNoaWxkKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFJvb3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFNjcmlwdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU2NyaXB0
czo6cmVtb3ZlQ2hpbGRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxT
Y3JpcHRzOjpyZW1vdmVDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTY3Jp
cHRzV3JhcHBlcjo6cmVtb3ZlQ2hpbGRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJNYXRoTUxTY3JpcHRzV3JhcHBlcjo6cmVtb3ZlQ2hpbGQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0NvbnRh
aW5lcjo6cmVtb3ZlQ2hpbGQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29u
dGFpbmVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lOjpyZW1vdmVDaGlsZCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6
cmVtb3ZlQ2hpbGQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdUZXh0OjpyZW1vdmVDaGlsZCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdUZXh0Lmg6CisKKzIwMTQtMTEtMjEgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdA
YXBwbGUuY29tPgorCiAgICAgICAgIFJlbmRlck1hdGhNTFNjcmlwdHMgaXNQcmVzY3JpcHQoKSBo
ZWxwZXIgc2hvdWxkIHRha2UgYSByZWZlcmVuY2UuCiAgICAgICAgIDxodHRwczovL3dlYmtpdC5v
cmcvYi8xMzg5NzU+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmlu
ZGV4IDllMGRlNzAuLmMyZDJkOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcApAQCAtNjg3LDEyICs2ODcsMTQgQEAgdm9pZCBSZW5kZXJCbG9jazo6Y29sbGFwc2VB
bm9ueW1vdXNCb3hDaGlsZChSZW5kZXJCbG9jayYgcGFyZW50LCBSZW5kZXJCbG9jayogY2gKICAg
ICBjaGlsZC0+ZGVzdHJveSgpOwogfQogCi1SZW5kZXJPYmplY3QqIFJlbmRlckJsb2NrOjpyZW1v
dmVDaGlsZChSZW5kZXJPYmplY3QmIG9sZENoaWxkKQordm9pZCBSZW5kZXJCbG9jazo6cmVtb3Zl
Q2hpbGQoUmVuZGVyT2JqZWN0JiBvbGRDaGlsZCkKIHsKICAgICAvLyBObyBuZWVkIHRvIHdhc3Rl
IHRpbWUgaW4gbWVyZ2luZyBvciByZW1vdmluZyBlbXB0eSBhbm9ueW1vdXMgYmxvY2tzLgogICAg
IC8vIFdlIGNhbiBqdXN0IGJhaWwgb3V0IGlmIG91ciBkb2N1bWVudCBpcyBnZXR0aW5nIGRlc3Ry
b3llZC4KLSAgICBpZiAoZG9jdW1lbnRCZWluZ0Rlc3Ryb3llZCgpKQotICAgICAgICByZXR1cm4g
UmVuZGVyQm94OjpyZW1vdmVDaGlsZChvbGRDaGlsZCk7CisgICAgaWYgKGRvY3VtZW50QmVpbmdE
ZXN0cm95ZWQoKSkgeworICAgICAgICBSZW5kZXJCb3g6OnJlbW92ZUNoaWxkKG9sZENoaWxkKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIC8vIElmIHRoaXMgY2hpbGQgaXMgYSBibG9j
aywgYW5kIGlmIG91ciBwcmV2aW91cyBhbmQgbmV4dCBzaWJsaW5ncyBhcmUKICAgICAvLyBib3Ro
IGFub255bW91cyBibG9ja3Mgd2l0aCBpbmxpbmUgY29udGVudCwgdGhlbiB3ZSBjYW4gZ28gYWhl
YWQgYW5kCkBAIC03NDUsNyArNzQ3LDcgQEAgUmVuZGVyT2JqZWN0KiBSZW5kZXJCbG9jazo6cmVt
b3ZlQ2hpbGQoUmVuZGVyT2JqZWN0JiBvbGRDaGlsZCkKIAogICAgIGludmFsaWRhdGVMaW5lTGF5
b3V0UGF0aCgpOwogCi0gICAgUmVuZGVyT2JqZWN0KiBuZXh0U2libGluZyA9IFJlbmRlckJveDo6
cmVtb3ZlQ2hpbGQob2xkQ2hpbGQpOworICAgIFJlbmRlckJveDo6cmVtb3ZlQ2hpbGQob2xkQ2hp
bGQpOwogCiAgICAgUmVuZGVyT2JqZWN0KiBjaGlsZCA9IHByZXYgPyBwcmV2IDogbmV4dDsKICAg
ICBpZiAoY2FuTWVyZ2VBbm9ueW1vdXNCbG9ja3MgJiYgY2hpbGQgJiYgIWNoaWxkLT5wcmV2aW91
c1NpYmxpbmcoKSAmJiAhY2hpbGQtPm5leHRTaWJsaW5nKCkgJiYgY2FuQ29sbGFwc2VBbm9ueW1v
dXNCbG9ja0NoaWxkKCkpIHsKQEAgLTc1Myw3ICs3NTUsNiBAQCBSZW5kZXJPYmplY3QqIFJlbmRl
ckJsb2NrOjpyZW1vdmVDaGlsZChSZW5kZXJPYmplY3QmIG9sZENoaWxkKQogICAgICAgICAvLyBi
b3guICBXZSBjYW4gZ28gYWhlYWQgYW5kIHB1bGwgdGhlIGNvbnRlbnQgcmlnaHQgYmFjayB1cCBp
bnRvIG91cgogICAgICAgICAvLyBib3guCiAgICAgICAgIGNvbGxhcHNlQW5vbnltb3VzQm94Q2hp
bGQoKnRoaXMsIGRvd25jYXN0PFJlbmRlckJsb2NrPihjaGlsZCkpOwotICAgICAgICBuZXh0U2li
bGluZyA9IG51bGxwdHI7CiAgICAgfSBlbHNlIGlmICgoKHByZXYgJiYgcHJldi0+aXNBbm9ueW1v
dXNCbG9jaygpKSB8fCAobmV4dCAmJiBuZXh0LT5pc0Fub255bW91c0Jsb2NrKCkpKSAmJiBjYW5D
b2xsYXBzZUFub255bW91c0Jsb2NrQ2hpbGQoKSkgewogICAgICAgICAvLyBJdCdzIHBvc3NpYmxl
IHRoYXQgdGhlIHJlbW92YWwgaGFzIGtub2NrZWQgdXMgZG93biB0byBhIHNpbmdsZSBhbm9ueW1v
dXMKICAgICAgICAgLy8gYmxvY2sgd2l0aCBwc2V1ZG8tc3R5bGUgZWxlbWVudCBzaWJsaW5ncyAo
ZS5nLiBmaXJzdC1sZXR0ZXIpLiBJZiB0aGVzZQpAQCAtNzYzLDEzICs3NjQsMTAgQEAgUmVuZGVy
T2JqZWN0KiBSZW5kZXJCbG9jazo6cmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0JiBvbGRDaGlsZCkK
ICAgICAgICAgICAgICYmICghYW5vbkJsb2NrLT5wcmV2aW91c1NpYmxpbmcoKSB8fCAoYW5vbkJs
b2NrLT5wcmV2aW91c1NpYmxpbmcoKS0+c3R5bGUoKS5zdHlsZVR5cGUoKSAhPSBOT1BTRVVETyAm
JiBhbm9uQmxvY2stPnByZXZpb3VzU2libGluZygpLT5pc0Zsb2F0aW5nKCkgJiYgIWFub25CbG9j
ay0+cHJldmlvdXNTaWJsaW5nKCktPnByZXZpb3VzU2libGluZygpKSkKICAgICAgICAgICAgICYm
ICghYW5vbkJsb2NrLT5uZXh0U2libGluZygpIHx8IChhbm9uQmxvY2stPm5leHRTaWJsaW5nKCkt
PnN0eWxlKCkuc3R5bGVUeXBlKCkgIT0gTk9QU0VVRE8gJiYgYW5vbkJsb2NrLT5uZXh0U2libGlu
ZygpLT5pc0Zsb2F0aW5nKCkgJiYgIWFub25CbG9jay0+bmV4dFNpYmxpbmcoKS0+bmV4dFNpYmxp
bmcoKSkpKSB7CiAgICAgICAgICAgICBjb2xsYXBzZUFub255bW91c0JveENoaWxkKCp0aGlzLCBh
bm9uQmxvY2spOwotICAgICAgICAgICAgbmV4dFNpYmxpbmcgPSBudWxscHRyOwogICAgICAgICB9
CiAgICAgfQogCiAgICAgaWYgKCFmaXJzdENoaWxkKCkpIHsKLSAgICAgICAgbmV4dFNpYmxpbmcg
PSBudWxscHRyOwotCiAgICAgICAgIC8vIElmIHRoaXMgd2FzIG91ciBsYXN0IGNoaWxkIGJlIHN1
cmUgdG8gY2xlYXIgb3V0IG91ciBsaW5lIGJveGVzLgogICAgICAgICBpZiAoY2hpbGRyZW5Jbmxp
bmUoKSkKICAgICAgICAgICAgIGRlbGV0ZUxpbmVzKCk7CkBAIC04MDAsOCArNzk4LDYgQEAgUmVu
ZGVyT2JqZWN0KiBSZW5kZXJCbG9jazo6cmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0JiBvbGRDaGls
ZCkKICAgICAgICAgICAgIGRlc3Ryb3koKTsKICAgICAgICAgfQogICAgIH0KLSAgICAKLSAgICBy
ZXR1cm4gbmV4dFNpYmxpbmc7CiB9CiAKIGJvb2wgUmVuZGVyQmxvY2s6OmlzU2VsZkNvbGxhcHNp
bmdCbG9jaygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4
IGEyNTI0ZTQuLjE4NGRkMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5o
CkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlTGluZXMo
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBS
ZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBSZW5k
ZXJPYmplY3QqIHJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVDaGlsZChSZW5kZXJPYmplY3QmKSBvdmVycmlkZTsKIAogICAgIHZpcnR1
YWwgdm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFn
ZUxvZ2ljYWxIZWlnaHQgPSAwKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tGbG93LmNwcAppbmRleCBhMzU4YTAzLi5kNTcxMGNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtMzcwNiwxNCArMzcwNiwxNCBAQCB2
b2lkIFJlbmRlckJsb2NrRmxvdzo6YWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVu
ZGVyT2JqZWN0KiBiZWZvcmVDaGlsZAogICAgIFJlbmRlckJsb2NrOjphZGRDaGlsZChuZXdDaGls
ZCwgYmVmb3JlQ2hpbGQpOwogfQogCi1SZW5kZXJPYmplY3QqIFJlbmRlckJsb2NrRmxvdzo6cmVt
b3ZlQ2hpbGQoUmVuZGVyT2JqZWN0JiBvbGRDaGlsZCkKK3ZvaWQgUmVuZGVyQmxvY2tGbG93Ojpy
ZW1vdmVDaGlsZChSZW5kZXJPYmplY3QmIG9sZENoaWxkKQogewogICAgIGlmICghZG9jdW1lbnRC
ZWluZ0Rlc3Ryb3llZCgpKSB7CiAgICAgICAgIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQg
PSBtdWx0aUNvbHVtbkZsb3dUaHJlYWQoKTsKICAgICAgICAgaWYgKGZsb3dUaHJlYWQgJiYgZmxv
d1RocmVhZCAhPSAmb2xkQ2hpbGQpCiAgICAgICAgICAgICBmbG93VGhyZWFkLT5mbG93VGhyZWFk
UmVsYXRpdmVXaWxsQmVSZW1vdmVkKCZvbGRDaGlsZCk7CiAgICAgfQotICAgIHJldHVybiBSZW5k
ZXJCbG9jazo6cmVtb3ZlQ2hpbGQob2xkQ2hpbGQpOworICAgIFJlbmRlckJsb2NrOjpyZW1vdmVD
aGlsZChvbGRDaGlsZCk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpjaGVja0ZvclBhZ2lu
YXRpb25Mb2dpY2FsSGVpZ2h0Q2hhbmdlKGJvb2wmIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVu
aXQmIHBhZ2VMb2dpY2FsSGVpZ2h0LCBib29sJiBwYWdlTG9naWNhbEhlaWdodENoYW5nZWQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKaW5kZXggMTY0MzMyMS4u
OTUyZWM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
Rmxvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaApA
QCAtMzc3LDcgKzM3Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc05leHRQYWdlKExheW91dFVu
aXQgbG9naWNhbE9mZnNldCwgUGFnZUJvdW5kYXJ5UnVsZSA9IEV4Y2x1ZGVQYWdlQm91bmRhcnkp
IGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogbmV3Q2hp
bGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IFJlbmRlck9iamVjdCogcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0Jikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIHJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCYpIG92ZXJyaWRlOwogCiAgICAg
dm9pZCBjcmVhdGVNdWx0aUNvbHVtbkZsb3dUaHJlYWQoKTsKICAgICB2b2lkIGRlc3Ryb3lNdWx0
aUNvbHVtbkZsb3dUaHJlYWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCdXR0b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRv
bi5jcHAKaW5kZXggYjgzNjFkZC4uOGQzYTEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJ1dHRvbi5jcHAKQEAgLTc3LDE4ICs3NywxNyBAQCB2b2lkIFJlbmRlckJ1dHRvbjo6
YWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGls
ZCkKICAgICBtX2lubmVyLT5hZGRDaGlsZChuZXdDaGlsZCwgYmVmb3JlQ2hpbGQpOwogfQogCi1S
ZW5kZXJPYmplY3QqIFJlbmRlckJ1dHRvbjo6cmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0JiBvbGRD
aGlsZCkKK3ZvaWQgUmVuZGVyQnV0dG9uOjpyZW1vdmVDaGlsZChSZW5kZXJPYmplY3QmIG9sZENo
aWxkKQogewogICAgIC8vIG1faW5uZXIgc2hvdWxkIGJlIHRoZSBvbmx5IGNoaWxkLCBidXQgY2hl
Y2tpbmcgZm9yIGRpcmVjdCBjaGlsZHJlbiB3aG8KICAgICAvLyBhcmUgbm90IG1faW5uZXIgcHJl
dmVudHMgc2VjdXJpdHkgcHJvYmxlbXMgd2hlbiB0aGF0IGFzc3VtcHRpb24gaXMKICAgICAvLyB2
aW9sYXRlZC4KICAgICBpZiAoJm9sZENoaWxkID09IG1faW5uZXIgfHwgIW1faW5uZXIgfHwgb2xk
Q2hpbGQucGFyZW50KCkgPT0gdGhpcykgewogICAgICAgICBBU1NFUlQoJm9sZENoaWxkID09IG1f
aW5uZXIgfHwgIW1faW5uZXIpOwotICAgICAgICBSZW5kZXJPYmplY3QqIG5leHQgPSBSZW5kZXJG
bGV4aWJsZUJveDo6cmVtb3ZlQ2hpbGQob2xkQ2hpbGQpOworICAgICAgICBSZW5kZXJGbGV4aWJs
ZUJveDo6cmVtb3ZlQ2hpbGQob2xkQ2hpbGQpOwogICAgICAgICBtX2lubmVyID0gbnVsbHB0cjsK
LSAgICAgICAgcmV0dXJuIG5leHQ7CiAgICAgfSBlbHNlCi0gICAgICAgIHJldHVybiBtX2lubmVy
LT5yZW1vdmVDaGlsZChvbGRDaGlsZCk7CisgICAgICAgIG1faW5uZXItPnJlbW92ZUNoaWxkKG9s
ZENoaWxkKTsKIH0KIAogdm9pZCBSZW5kZXJCdXR0b246OnN0eWxlV2lsbENoYW5nZShTdHlsZURp
ZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5oCmluZGV4IDA2MTM2YjguLjcwMTA3YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBjYW5CZVNlbGVjdGlvbkxlYWYoKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5k
ZXJPYmplY3QgKmJlZm9yZUNoaWxkID0gMCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBSZW5kZXJP
YmplY3QqIHJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVDaGlsZChSZW5kZXJPYmplY3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlTGVmdG92ZXJBbm9ueW1vdXNCbG9jayhSZW5kZXJCbG9jayopIG92ZXJyaWRlIHsg
fQogICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVzQW5vbnltb3VzV3JhcHBlcigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuY3BwCmluZGV4IGJiYmZkOGYuLjIyZGNlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTUxNCw5ICs1MTQsOSBAQCB2b2lkIFJlbmRlckVs
ZW1lbnQ6OmFkZENoaWxkKFJlbmRlck9iamVjdCogbmV3Q2hpbGQsIFJlbmRlck9iamVjdCogYmVm
b3JlQ2hpbGQpCiAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6Y2hpbGRBZGRlZCgqdGhpcywgKm5ld0No
aWxkKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBSZW5kZXJFbGVtZW50OjpyZW1vdmVDaGlsZChSZW5k
ZXJPYmplY3QmIG9sZENoaWxkKQordm9pZCBSZW5kZXJFbGVtZW50OjpyZW1vdmVDaGlsZChSZW5k
ZXJPYmplY3QmIG9sZENoaWxkKQogewotICAgIHJldHVybiByZW1vdmVDaGlsZEludGVybmFsKG9s
ZENoaWxkLCBOb3RpZnlDaGlsZHJlbik7CisgICAgcmVtb3ZlQ2hpbGRJbnRlcm5hbChvbGRDaGls
ZCwgTm90aWZ5Q2hpbGRyZW4pOwogfQogCiB2b2lkIFJlbmRlckVsZW1lbnQ6OmRlc3Ryb3lMZWZ0
b3ZlckNoaWxkcmVuKCkKQEAgLTU4NSw3ICs1ODUsNyBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6Omlu
c2VydENoaWxkSW50ZXJuYWwoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBi
ZQogICAgICAgICBjYWNoZS0+Y2hpbGRyZW5DaGFuZ2VkKHRoaXMsIG5ld0NoaWxkKTsKIH0KIAot
UmVuZGVyT2JqZWN0KiBSZW5kZXJFbGVtZW50OjpyZW1vdmVDaGlsZEludGVybmFsKFJlbmRlck9i
amVjdCYgb2xkQ2hpbGQsIE5vdGlmeUNoaWxkcmVuVHlwZSBub3RpZnlDaGlsZHJlbikKK3ZvaWQg
UmVuZGVyRWxlbWVudDo6cmVtb3ZlQ2hpbGRJbnRlcm5hbChSZW5kZXJPYmplY3QmIG9sZENoaWxk
LCBOb3RpZnlDaGlsZHJlblR5cGUgbm90aWZ5Q2hpbGRyZW4pCiB7CiAgICAgQVNTRVJUKGNhbkhh
dmVDaGlsZHJlbigpIHx8IGNhbkhhdmVHZW5lcmF0ZWRDaGlsZHJlbigpKTsKICAgICBBU1NFUlQo
b2xkQ2hpbGQucGFyZW50KCkgPT0gdGhpcyk7CkBAIC02NDYsOCArNjQ2LDYgQEAgUmVuZGVyT2Jq
ZWN0KiBSZW5kZXJFbGVtZW50OjpyZW1vdmVDaGlsZEludGVybmFsKFJlbmRlck9iamVjdCYgb2xk
Q2hpbGQsIE5vdGlmeUMKIAogICAgIGlmIChBWE9iamVjdENhY2hlKiBjYWNoZSA9IGRvY3VtZW50
KCkuZXhpc3RpbmdBWE9iamVjdENhY2hlKCkpCiAgICAgICAgIGNhY2hlLT5jaGlsZHJlbkNoYW5n
ZWQodGhpcyk7Ci0gICAgCi0gICAgcmV0dXJuIG5leHRTaWJsaW5nOwogfQogCiBzdGF0aWMgdm9p
ZCBhZGRMYXllcnMoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIFJlbmRlckxheWVyKiBwYXJlbnRM
YXllciwgUmVuZGVyRWxlbWVudComIG5ld09iamVjdCwgUmVuZGVyTGF5ZXIqJiBiZWZvcmVDaGls
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCmluZGV4IDM3YzdmYzMu
LjM5OWM0ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaApAQCAt
ODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQ2hpbGRBbGxvd2VkKGNv
bnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBS
ZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCk7CiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxk
SWdub3JpbmdDb250aW51YXRpb24oUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0
KiBiZWZvcmVDaGlsZCA9IDApIHsgcmV0dXJuIGFkZENoaWxkKG5ld0NoaWxkLCBiZWZvcmVDaGls
ZCk7IH0KLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0
Jik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCYpOwogCiAgICAg
Ly8gVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIHVzZWQgd2hlbiB0aGUgcmVuZGVyIHRyZWUg
aGllcmFyY2h5IGNoYW5nZXMgdG8gbWFrZSBzdXJlIGxheWVycyBnZXQKICAgICAvLyBwcm9wZXJs
eSBhZGRlZCBhbmQgcmVtb3ZlZC4gU2luY2UgY29udGFpbmVyc2hpcCBjYW4gYmUgaW1wbGVtZW50
ZWQgYnkgYW55IHN1YmNsYXNzLCBhbmQgc2luY2UgYSBoaWVyYXJjaHkKQEAgLTk2LDcgKzk2LDcg
QEAgcHVibGljOgogCiAgICAgZW51bSBOb3RpZnlDaGlsZHJlblR5cGUgeyBOb3RpZnlDaGlsZHJl
biwgRG9udE5vdGlmeUNoaWxkcmVuIH07CiAgICAgdm9pZCBpbnNlcnRDaGlsZEludGVybmFsKFJl
bmRlck9iamVjdCosIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQsIE5vdGlmeUNoaWxkcmVuVHlw
ZSk7Ci0gICAgUmVuZGVyT2JqZWN0KiByZW1vdmVDaGlsZEludGVybmFsKFJlbmRlck9iamVjdCYs
IE5vdGlmeUNoaWxkcmVuVHlwZSk7CisgICAgdm9pZCByZW1vdmVDaGlsZEludGVybmFsKFJlbmRl
ck9iamVjdCYsIE5vdGlmeUNoaWxkcmVuVHlwZSk7CiAKICAgICB2aXJ0dWFsIFJlbmRlckVsZW1l
bnQqIGhvdmVyQW5jZXN0b3IoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNZW51TGlzdC5jcHAKaW5kZXggNDRjOGQyYi4uODEzMDFkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCkBAIC0xODEsMTQgKzE4MSwxMyBAQCB2
b2lkIFJlbmRlck1lbnVMaXN0OjphZGRDaGlsZChSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5k
ZXJPYmplY3QqIGJlZm9yZUNoaWxkKQogICAgICAgICBjYWNoZS0+Y2hpbGRyZW5DaGFuZ2VkKHRo
aXMsIG5ld0NoaWxkKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBSZW5kZXJNZW51TGlzdDo6cmVtb3Zl
Q2hpbGQoUmVuZGVyT2JqZWN0JiBvbGRDaGlsZCkKK3ZvaWQgUmVuZGVyTWVudUxpc3Q6OnJlbW92
ZUNoaWxkKFJlbmRlck9iamVjdCYgb2xkQ2hpbGQpCiB7CiAgICAgaWYgKCZvbGRDaGlsZCA9PSBt
X2lubmVyQmxvY2sgfHwgIW1faW5uZXJCbG9jaykgewotICAgICAgICBSZW5kZXJPYmplY3QqIG5l
eHQgPSBSZW5kZXJGbGV4aWJsZUJveDo6cmVtb3ZlQ2hpbGQob2xkQ2hpbGQpOworICAgICAgICBS
ZW5kZXJGbGV4aWJsZUJveDo6cmVtb3ZlQ2hpbGQob2xkQ2hpbGQpOwogICAgICAgICBtX2lubmVy
QmxvY2sgPSAwOwotICAgICAgICByZXR1cm4gbmV4dDsKICAgICB9IGVsc2UKLSAgICAgICAgcmV0
dXJuIG1faW5uZXJCbG9jay0+cmVtb3ZlQ2hpbGQob2xkQ2hpbGQpOworICAgICAgICBtX2lubmVy
QmxvY2stPnJlbW92ZUNoaWxkKG9sZENoaWxkKTsKIH0KIAogdm9pZCBSZW5kZXJNZW51TGlzdDo6
c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBv
bGRTdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51
TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmgKaW5kZXgg
NzUwZTZhZi4uM2Q5YjVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck1lbnVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVM
aXN0LmgKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNNZW51
TGlzdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZpcnR1YWwgdm9p
ZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNo
aWxkID0gMCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIHJlbW92ZUNoaWxk
KFJlbmRlck9iamVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDaGlsZChS
ZW5kZXJPYmplY3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlc0Fub255bW91
c1dyYXBwZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSdWJ5LmNwcAppbmRleCA5NmMwZmJhLi40NDU2ZGJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJ1YnkuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBSZW5kZXJS
dWJ5QXNJbmxpbmU6OmFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCog
YmVmb3JlQ2hpbGQKICAgICBsYXN0UnVuLT5hZGRDaGlsZChjaGlsZCk7CiB9CiAKLVJlbmRlck9i
amVjdCogUmVuZGVyUnVieUFzSW5saW5lOjpyZW1vdmVDaGlsZChSZW5kZXJPYmplY3QmIGNoaWxk
KQordm9pZCBSZW5kZXJSdWJ5QXNJbmxpbmU6OnJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCYgY2hp
bGQpCiB7CiAgICAgLy8gSWYgdGhlIGNoaWxkJ3MgcGFyZW50IGlzICp0aGlzIChtdXN0IGJlIGEg
cnVieSBydW4gb3IgZ2VuZXJhdGVkIGNvbnRlbnQgb3IgYW5vbnltb3VzIGJsb2NrKSwKICAgICAv
LyBqdXN0IHVzZSB0aGUgbm9ybWFsIHJlbW92ZSBtZXRob2QuCkBAIC0yMDcsMjAgKzIwNywyMCBA
QCBSZW5kZXJPYmplY3QqIFJlbmRlclJ1YnlBc0lubGluZTo6cmVtb3ZlQ2hpbGQoUmVuZGVyT2Jq
ZWN0JiBjaGlsZCkKICNpZm5kZWYgQVNTRVJUX0RJU0FCTEVECiAgICAgICAgIEFTU0VSVChpc1J1
YnlDaGlsZEZvck5vcm1hbFJlbW92YWwoY2hpbGQpKTsKICNlbmRpZgotICAgICAgICByZXR1cm4g
UmVuZGVySW5saW5lOjpyZW1vdmVDaGlsZChjaGlsZCk7CisgICAgICAgIFJlbmRlcklubGluZTo6
cmVtb3ZlQ2hpbGQoY2hpbGQpOworICAgICAgICByZXR1cm47CiAgICAgfQogICAgIC8vIElmIHRo
ZSBjaGlsZCdzIHBhcmVudCBpcyBhbiBhbm95bW91cyBibG9jayAobXVzdCBiZSBnZW5lcmF0ZWQg
OmJlZm9yZS86YWZ0ZXIgY29udGVudCkKICAgICAvLyBqdXN0IHVzZSB0aGUgYmxvY2sncyByZW1v
dmUgbWV0aG9kLgogICAgIGlmIChpc0Fub255bW91c1J1YnlJbmxpbmVCbG9jayhjaGlsZC5wYXJl
bnQoKSkpIHsKICAgICAgICAgQVNTRVJUKGNoaWxkLmlzQmVmb3JlQ29udGVudCgpIHx8IGNoaWxk
LmlzQWZ0ZXJDb250ZW50KCkpOwotICAgICAgICBSZW5kZXJPYmplY3QqIG5leHQgPSBjaGlsZC5w
YXJlbnQoKS0+cmVtb3ZlQ2hpbGQoY2hpbGQpOworICAgICAgICBjaGlsZC5wYXJlbnQoKS0+cmVt
b3ZlQ2hpbGQoY2hpbGQpOwogICAgICAgICByZW1vdmVDaGlsZCgqY2hpbGQucGFyZW50KCkpOwot
ICAgICAgICByZXR1cm4gbmV4dDsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIE90
aGVyd2lzZSBmaW5kIHRoZSBjb250YWluaW5nIHJ1biBhbmQgcmVtb3ZlIGl0IGZyb20gdGhlcmUu
Ci0gICAgUmVuZGVyUnVieVJ1biYgcnVuID0gZmluZFJ1YnlSdW5QYXJlbnQoY2hpbGQpOwotICAg
IHJldHVybiBydW4ucmVtb3ZlQ2hpbGQoY2hpbGQpOworICAgIGZpbmRSdWJ5UnVuUGFyZW50KGNo
aWxkKS5yZW1vdmVDaGlsZChjaGlsZCk7CiB9CiAKIC8vPT09IHJ1YnkgYXMgYmxvY2sgb2JqZWN0
ID09PQpAQCAtMzA1LDcgKzMwNSw3IEBAIHZvaWQgUmVuZGVyUnVieUFzQmxvY2s6OmFkZENoaWxk
KFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQpCiAgICAgbGFz
dFJ1bi0+YWRkQ2hpbGQoY2hpbGQpOwogfQogCi1SZW5kZXJPYmplY3QqIFJlbmRlclJ1YnlBc0Js
b2NrOjpyZW1vdmVDaGlsZChSZW5kZXJPYmplY3QmIGNoaWxkKQordm9pZCBSZW5kZXJSdWJ5QXNC
bG9jazo6cmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0JiBjaGlsZCkKIHsKICAgICAvLyBJZiB0aGUg
Y2hpbGQncyBwYXJlbnQgaXMgKnRoaXMgKG11c3QgYmUgYSBydWJ5IHJ1biBvciBnZW5lcmF0ZWQg
Y29udGVudCBvciBhbm9ueW1vdXMgYmxvY2spLAogICAgIC8vIGp1c3QgdXNlIHRoZSBub3JtYWwg
cmVtb3ZlIG1ldGhvZC4KQEAgLTMxMywyMCArMzEzLDIwIEBAIFJlbmRlck9iamVjdCogUmVuZGVy
UnVieUFzQmxvY2s6OnJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCYgY2hpbGQpCiAjaWZuZGVmIEFT
U0VSVF9ESVNBQkxFRAogICAgICAgICBBU1NFUlQoaXNSdWJ5Q2hpbGRGb3JOb3JtYWxSZW1vdmFs
KGNoaWxkKSk7CiAjZW5kaWYKLSAgICAgICAgcmV0dXJuIFJlbmRlckJsb2NrRmxvdzo6cmVtb3Zl
Q2hpbGQoY2hpbGQpOworICAgICAgICBSZW5kZXJCbG9ja0Zsb3c6OnJlbW92ZUNoaWxkKGNoaWxk
KTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAvLyBJZiB0aGUgY2hpbGQncyBwYXJlbnQg
aXMgYW4gYW5veW1vdXMgYmxvY2sgKG11c3QgYmUgZ2VuZXJhdGVkIDpiZWZvcmUvOmFmdGVyIGNv
bnRlbnQpCiAgICAgLy8ganVzdCB1c2UgdGhlIGJsb2NrJ3MgcmVtb3ZlIG1ldGhvZC4KICAgICBp
ZiAoaXNBbm9ueW1vdXNSdWJ5SW5saW5lQmxvY2soY2hpbGQucGFyZW50KCkpKSB7CiAgICAgICAg
IEFTU0VSVChjaGlsZC5pc0JlZm9yZUNvbnRlbnQoKSB8fCBjaGlsZC5pc0FmdGVyQ29udGVudCgp
KTsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiBuZXh0ID0gY2hpbGQucGFyZW50KCktPnJlbW92ZUNo
aWxkKGNoaWxkKTsKKyAgICAgICAgY2hpbGQucGFyZW50KCktPnJlbW92ZUNoaWxkKGNoaWxkKTsK
ICAgICAgICAgcmVtb3ZlQ2hpbGQoKmNoaWxkLnBhcmVudCgpKTsKLSAgICAgICAgcmV0dXJuIG5l
eHQ7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyBPdGhlcndpc2UgZmluZCB0aGUg
Y29udGFpbmluZyBydW4gYW5kIHJlbW92ZSBpdCBmcm9tIHRoZXJlLgotICAgIFJlbmRlclJ1YnlS
dW4mIHJ1biA9IGZpbmRSdWJ5UnVuUGFyZW50KGNoaWxkKTsKLSAgICByZXR1cm4gcnVuLnJlbW92
ZUNoaWxkKGNoaWxkKTsKKyAgICBmaW5kUnVieVJ1blBhcmVudChjaGlsZCkucmVtb3ZlQ2hpbGQo
Y2hpbGQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJ1YnkuaAppbmRleCA4Nzk1ZGUwLi5mM2E4NmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSdWJ5LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
flJlbmRlclJ1YnlBc0lubGluZSgpOwogCiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRl
ck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0JiBjaGls
ZCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCYg
Y2hpbGQpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlk
Q2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVy
cmlkZTsKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgIEVsZW1lbnQmIGVsZW1lbnQoKSBj
b25zdCB7IHJldHVybiBkb3duY2FzdDxFbGVtZW50Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9
CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVy
T2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiByZW1vdmVDaGlsZChSZW5kZXJPYmplY3QmIGNoaWxkKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0JiBjaGlsZCkgb3ZlcnJpZGU7CiAKIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNl
LCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwCmluZGV4IGM1YWE0MDMuLjI1ZDkwMGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHAKQEAgLTE1Niw3ICsxNTYs
NyBAQCB2b2lkIFJlbmRlclJ1YnlSdW46OmFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJl
bmRlck9iamVjdCogYmVmb3JlQ2hpbGQpCiAgICAgfQogfQogCi1SZW5kZXJPYmplY3QqIFJlbmRl
clJ1YnlSdW46OnJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCYgY2hpbGQpCit2b2lkIFJlbmRlclJ1
YnlSdW46OnJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCYgY2hpbGQpCiB7CiAgICAgLy8gSWYgdGhl
IGNoaWxkIGlzIGEgcnVieSB0ZXh0LCB0aGVuIG1lcmdlIHRoZSBydWJ5IGJhc2Ugd2l0aCB0aGUg
YmFzZSBvZgogICAgIC8vIHRoZSByaWdodCBzaWJsaW5nIHJ1biwgaWYgcG9zc2libGUuCkBAIC0x
NzgsMTMgKzE3OCwxMyBAQCBSZW5kZXJPYmplY3QqIFJlbmRlclJ1YnlSdW46OnJlbW92ZUNoaWxk
KFJlbmRlck9iamVjdCYgY2hpbGQpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBSZW5kZXJPYmpl
Y3QqIG5leHQgPSBSZW5kZXJCbG9ja0Zsb3c6OnJlbW92ZUNoaWxkKGNoaWxkKTsKKyAgICBSZW5k
ZXJCbG9ja0Zsb3c6OnJlbW92ZUNoaWxkKGNoaWxkKTsKIAogICAgIGlmICghYmVpbmdEZXN0cm95
ZWQoKSAmJiAhZG9jdW1lbnRCZWluZ0Rlc3Ryb3llZCgpKSB7CiAgICAgICAgIC8vIENoZWNrIGlm
IG91ciBiYXNlIChpZiBhbnkpIGlzIG5vdyBlbXB0eS4gSWYgc28sIGRlc3Ryb3kgaXQuCiAgICAg
ICAgIFJlbmRlckJsb2NrKiBiYXNlID0gcnVieUJhc2UoKTsKICAgICAgICAgaWYgKGJhc2UgJiYg
IWJhc2UtPmZpcnN0Q2hpbGQoKSkgewotICAgICAgICAgICAgbmV4dCA9IFJlbmRlckJsb2NrRmxv
dzo6cmVtb3ZlQ2hpbGQoKmJhc2UpOworICAgICAgICAgICAgUmVuZGVyQmxvY2tGbG93OjpyZW1v
dmVDaGlsZCgqYmFzZSk7CiAgICAgICAgICAgICBiYXNlLT5kZWxldGVMaW5lcygpOwogICAgICAg
ICAgICAgYmFzZS0+ZGVzdHJveSgpOwogICAgICAgICB9CkBAIC0xOTQsMTEgKzE5NCw4IEBAIFJl
bmRlck9iamVjdCogUmVuZGVyUnVieVJ1bjo6cmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0JiBjaGls
ZCkKICAgICAgICAgICAgIHBhcmVudCgpLT5yZW1vdmVDaGlsZCgqdGhpcyk7CiAgICAgICAgICAg
ICBkZWxldGVMaW5lcygpOwogICAgICAgICAgICAgZGVzdHJveSgpOwotICAgICAgICAgICAgbmV4
dCA9IG51bGxwdHI7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCi0gICAgcmV0dXJuIG5leHQ7CiB9
CiAKIFJlbmRlclJ1YnlCYXNlKiBSZW5kZXJSdWJ5UnVuOjpjcmVhdGVSdWJ5QmFzZSgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uaAppbmRleCAwNzJjYmZlLi4w
OTY4NWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmgKQEAgLTU4
LDcgKzU4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzQ2hpbGRBbGxvd2VkKGNv
bnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVj
dCogYmVmb3JlQ2hpbGQgPSAwKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCog
cmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHJl
bW92ZUNoaWxkKFJlbmRlck9iamVjdCYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBSZW5kZXJC
bG9jayogZmlyc3RMaW5lQmxvY2soKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlRmlyc3RMZXR0ZXIoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwCmluZGV4IGVkMjA5YWQuLmFmMmQ5
MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxSb290LmNwcApAQCAtMzQ5LDE5ICszNDksMTcgQEAgUmVuZGVyUHRyPFJlbmRlck1hdGhN
TFJvb3RXcmFwcGVyPiBSZW5kZXJNYXRoTUxSb290V3JhcHBlcjo6Y3JlYXRlQW5vbnltb3VzV3Jh
cHAKICAgICByZXR1cm4gbmV3QmxvY2s7CiB9CiAKLVJlbmRlck9iamVjdCogUmVuZGVyTWF0aE1M
Um9vdFdyYXBwZXI6OnJlbW92ZUNoaWxkV2l0aG91dFJlc3RydWN0dXJpbmcoUmVuZGVyT2JqZWN0
JiBjaGlsZCkKK3ZvaWQgUmVuZGVyTWF0aE1MUm9vdFdyYXBwZXI6OnJlbW92ZUNoaWxkV2l0aG91
dFJlc3RydWN0dXJpbmcoUmVuZGVyT2JqZWN0JiBjaGlsZCkKIHsKLSAgICByZXR1cm4gUmVuZGVy
TWF0aE1MQmxvY2s6OnJlbW92ZUNoaWxkKGNoaWxkKTsKKyAgICBSZW5kZXJNYXRoTUxCbG9jazo6
cmVtb3ZlQ2hpbGQoY2hpbGQpOwogfQogCi1SZW5kZXJPYmplY3QqIFJlbmRlck1hdGhNTFJvb3RX
cmFwcGVyOjpyZW1vdmVDaGlsZChSZW5kZXJPYmplY3QmIGNoaWxkKQordm9pZCBSZW5kZXJNYXRo
TUxSb290V3JhcHBlcjo6cmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0JiBjaGlsZCkKIHsKLSAgICBS
ZW5kZXJPYmplY3QqIG5leHQgPSBSZW5kZXJNYXRoTUxCbG9jazo6cmVtb3ZlQ2hpbGQoY2hpbGQp
OworICAgIFJlbmRlck1hdGhNTEJsb2NrOjpyZW1vdmVDaGlsZChjaGlsZCk7CiAKICAgICBpZiAo
IShiZWluZ0Rlc3Ryb3llZCgpIHx8IGRvY3VtZW50QmVpbmdEZXN0cm95ZWQoKSkpCiAgICAgICAg
IGRvd25jYXN0PFJlbmRlck1hdGhNTFJvb3Q+KCpwYXJlbnQoKSkucmVzdHJ1Y3R1cmVXcmFwcGVy
cygpOwotCi0gICAgcmV0dXJuIG5leHQ7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmgKaW5kZXggOTM1YTRkOC4uZWNhNTc1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxSb290LmgKQEAgLTgzLDggKzgzLDggQEAgcHVibGljOgogICAgICAgICA6IFJlbmRlck1hdGhN
TFJvdyhkb2N1bWVudCwgV1RGOjptb3ZlKHN0eWxlKSkgeyB9CiAKIHByaXZhdGU6Ci0gICAgUmVu
ZGVyT2JqZWN0KiByZW1vdmVDaGlsZFdpdGhvdXRSZXN0cnVjdHVyaW5nKFJlbmRlck9iamVjdCYp
OwotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiByZW1vdmVDaGlsZChSZW5kZXJPYmplY3QmKSBv
dmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZUNoaWxkV2l0aG91dFJlc3RydWN0dXJpbmcoUmVuZGVy
T2JqZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCYpIG92
ZXJyaWRlOwogICAgIHN0YXRpYyBSZW5kZXJQdHI8UmVuZGVyTWF0aE1MUm9vdFdyYXBwZXI+IGNy
ZWF0ZUFub255bW91c1dyYXBwZXIoUmVuZGVyTWF0aE1MUm9vdCogcmVuZGVyT2JqZWN0KTsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxSb290V3JhcHBlcigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTWF0aE1MUm9vdFdyYXBwZXIiOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlw
dHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3Jp
cHRzLmNwcAppbmRleCAzZTljZWZmLi5iNWFkYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAKQEAgLTE5OCwx
MCArMTk4LDEyIEBAIHZvaWQgUmVuZGVyTWF0aE1MU2NyaXB0czo6YWRkQ2hpbGRJbnRlcm5hbChi
b29sIGRvTm90UmVzdHJ1Y3R1cmUsIFJlbmRlck9iamVjdCoKICAgICB3cmFwcGVyLmFkZENoaWxk
SW50ZXJuYWwoZmFsc2UsIGNoaWxkLCB3cmFwcGVyLmZpcnN0Q2hpbGQoKSk7CiB9CiAKLVJlbmRl
ck9iamVjdCogUmVuZGVyTWF0aE1MU2NyaXB0czo6cmVtb3ZlQ2hpbGRJbnRlcm5hbChib29sIGRv
Tm90UmVzdHJ1Y3R1cmUsIFJlbmRlck9iamVjdCYgY2hpbGQpCit2b2lkIFJlbmRlck1hdGhNTFNj
cmlwdHM6OnJlbW92ZUNoaWxkSW50ZXJuYWwoYm9vbCBkb05vdFJlc3RydWN0dXJlLCBSZW5kZXJP
YmplY3QmIGNoaWxkKQogewotICAgIGlmIChkb05vdFJlc3RydWN0dXJlKQotICAgICAgICByZXR1
cm4gUmVuZGVyTWF0aE1MQmxvY2s6OnJlbW92ZUNoaWxkKGNoaWxkKTsKKyAgICBpZiAoZG9Ob3RS
ZXN0cnVjdHVyZSkgeworICAgICAgICBSZW5kZXJNYXRoTUxCbG9jazo6cmVtb3ZlQ2hpbGQoY2hp
bGQpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgQVNTRVJUKGlzUHJlc2NyaXB0KGNo
aWxkKSk7CiAKQEAgLTIyMCw3ICsyMjIsNyBAQCBSZW5kZXJPYmplY3QqIFJlbmRlck1hdGhNTFNj
cmlwdHM6OnJlbW92ZUNoaWxkSW50ZXJuYWwoYm9vbCBkb05vdFJlc3RydWN0dXJlLCBSZQogICAg
ICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIFJlbmRlck1hdGhNTEJsb2NrOjpyZW1vdmVDaGls
ZChjaGlsZCk7CisgICAgUmVuZGVyTWF0aE1MQmxvY2s6OnJlbW92ZUNoaWxkKGNoaWxkKTsKIH0K
IAogdm9pZCBSZW5kZXJNYXRoTUxTY3JpcHRzOjphZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxk
LCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKQpAQCAtMjM1LDE4ICsyMzcsMTYgQEAgdm9pZCBS
ZW5kZXJNYXRoTUxTY3JpcHRzOjphZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJP
YmplY3QqIGJlZm9yZUNoaWwKICAgICBmaXhBbm9ueW1vdXNTdHlsZXMoKTsKIH0KIAotUmVuZGVy
T2JqZWN0KiBSZW5kZXJNYXRoTUxTY3JpcHRzOjpyZW1vdmVDaGlsZChSZW5kZXJPYmplY3QmIGNo
aWxkKQordm9pZCBSZW5kZXJNYXRoTUxTY3JpcHRzOjpyZW1vdmVDaGlsZChSZW5kZXJPYmplY3Qm
IGNoaWxkKQogewogICAgIGlmIChiZWluZ0Rlc3Ryb3llZCgpIHx8IGRvY3VtZW50QmVpbmdEZXN0
cm95ZWQoKSkgewogICAgICAgICAvLyBUaGUgcmVuZGVyZXIgaXMgYmVpbmcgZGVzdHJveWVkIHNv
IHdlIHJlbW92ZSB0aGUgY2hpbGQgbm9ybWFsbHkuCi0gICAgICAgIHJldHVybiBSZW5kZXJNYXRo
TUxCbG9jazo6cmVtb3ZlQ2hpbGQoY2hpbGQpOworICAgICAgICBSZW5kZXJNYXRoTUxCbG9jazo6
cmVtb3ZlQ2hpbGQoY2hpbGQpOworICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVuZGVy
T2JqZWN0KiBuZXh0ID0gcmVtb3ZlQ2hpbGRJbnRlcm5hbChmYWxzZSwgY2hpbGQpOwotICAgIAor
ICAgIHJlbW92ZUNoaWxkSW50ZXJuYWwoZmFsc2UsIGNoaWxkKTsKICAgICBmaXhBbm9ueW1vdXNT
dHlsZXMoKTsKLSAgICAKLSAgICByZXR1cm4gbmV4dDsKIH0KIAogdm9pZCBSZW5kZXJNYXRoTUxT
Y3JpcHRzOjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVy
U3R5bGUqIG9sZFN0eWxlKQpAQCAtNDYxLDEwICs0NjEsMTIgQEAgdm9pZCBSZW5kZXJNYXRoTUxT
Y3JpcHRzV3JhcHBlcjo6YWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0
KiBiZWYKICAgICBwYXJlbnROb2RlLT5maXhBbm9ueW1vdXNTdHlsZXMoKTsKIH0KIAotUmVuZGVy
T2JqZWN0KiBSZW5kZXJNYXRoTUxTY3JpcHRzV3JhcHBlcjo6cmVtb3ZlQ2hpbGRJbnRlcm5hbChi
b29sIGRvTm90UmVzdHJ1Y3R1cmUsIFJlbmRlck9iamVjdCYgY2hpbGQpCit2b2lkIFJlbmRlck1h
dGhNTFNjcmlwdHNXcmFwcGVyOjpyZW1vdmVDaGlsZEludGVybmFsKGJvb2wgZG9Ob3RSZXN0cnVj
dHVyZSwgUmVuZGVyT2JqZWN0JiBjaGlsZCkKIHsKLSAgICBpZiAoZG9Ob3RSZXN0cnVjdHVyZSkK
LSAgICAgICAgcmV0dXJuIFJlbmRlck1hdGhNTEJsb2NrOjpyZW1vdmVDaGlsZChjaGlsZCk7Cisg
ICAgaWYgKGRvTm90UmVzdHJ1Y3R1cmUpIHsKKyAgICAgICAgUmVuZGVyTWF0aE1MQmxvY2s6OnJl
bW92ZUNoaWxkKGNoaWxkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIFJlbmRlck1h
dGhNTFNjcmlwdHMqIHBhcmVudE5vZGUgPSBkb3duY2FzdDxSZW5kZXJNYXRoTUxTY3JpcHRzPihw
YXJlbnQoKSk7CiAKQEAgLTQ3OSwxMSArNDgxLDExIEBAIFJlbmRlck9iamVjdCogUmVuZGVyTWF0
aE1MU2NyaXB0c1dyYXBwZXI6OnJlbW92ZUNoaWxkSW50ZXJuYWwoYm9vbCBkb05vdFJlc3RydWN0
CiAgICAgICAgICAgICB3cmFwcGVyLnJlbW92ZUNoaWxkSW50ZXJuYWwoZmFsc2UsICpzY3JpcHQp
OwogICAgICAgICAgICAgUmVuZGVyTWF0aE1MQmxvY2s6OmFkZENoaWxkKHNjcmlwdCk7CiAgICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIHNpYmxpbmc7CisgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICAvLyBXZSByZW1vdmUgdGhlIGNoaWxkIGFuZCBzaGlmdCB0aGUgc3VjY2Vzc29ycyBpbiB0
aGUgY3VycmVudCBzZXF1ZW5jZSBvZiBzY3JpcHRzLgotICAgIFJlbmRlck9iamVjdCogbmV4dCA9
IFJlbmRlck1hdGhNTEJsb2NrOjpyZW1vdmVDaGlsZChjaGlsZCk7CisgICAgUmVuZGVyTWF0aE1M
QmxvY2s6OnJlbW92ZUNoaWxkKGNoaWxkKTsKICAgICBSZW5kZXJNYXRoTUxTY3JpcHRzV3JhcHBl
ciogc3ViU3VwUGFpciA9IHRoaXM7CiAgICAgZm9yIChSZW5kZXJPYmplY3QqIG5leHRTaWJsaW5n
ID0gc3ViU3VwUGFpci0+bmV4dFNpYmxpbmcoKTsgbmV4dFNpYmxpbmcgJiYgIWlzUHJlc2NyaXB0
KCpuZXh0U2libGluZyk7IG5leHRTaWJsaW5nID0gbmV4dFNpYmxpbmctPm5leHRTaWJsaW5nKCkp
IHsKICAgICAgICAgUmVuZGVyTWF0aE1MU2NyaXB0c1dyYXBwZXImIG5leHRTdWJTdXBQYWlyID0g
ZG93bmNhc3Q8UmVuZGVyTWF0aE1MU2NyaXB0c1dyYXBwZXI+KCpuZXh0U2libGluZyk7CkBAIC00
OTgsMjEgKzUwMCwxOSBAQCBSZW5kZXJPYmplY3QqIFJlbmRlck1hdGhNTFNjcmlwdHNXcmFwcGVy
OjpyZW1vdmVDaGlsZEludGVybmFsKGJvb2wgZG9Ob3RSZXN0cnVjdAogICAgICAgICBwYXJlbnRO
b2RlLT5yZW1vdmVDaGlsZEludGVybmFsKHRydWUsICpzdWJTdXBQYWlyKTsKICAgICAgICAgc3Vi
U3VwUGFpci0+ZGVzdHJveSgpOwogICAgIH0KLSAgICAKLSAgICByZXR1cm4gbmV4dDsKIH0KIAot
UmVuZGVyT2JqZWN0KiBSZW5kZXJNYXRoTUxTY3JpcHRzV3JhcHBlcjo6cmVtb3ZlQ2hpbGQoUmVu
ZGVyT2JqZWN0JiBjaGlsZCkKK3ZvaWQgUmVuZGVyTWF0aE1MU2NyaXB0c1dyYXBwZXI6OnJlbW92
ZUNoaWxkKFJlbmRlck9iamVjdCYgY2hpbGQpCiB7CiAgICAgaWYgKGJlaW5nRGVzdHJveWVkKCkg
fHwgZG9jdW1lbnRCZWluZ0Rlc3Ryb3llZCgpKSB7CiAgICAgICAgIC8vIFRoZSByZW5kZXJlciBp
cyBiZWluZyBkZXN0cm95ZWQgc28gd2UgcmVtb3ZlIHRoZSBjaGlsZCBub3JtYWxseS4KLSAgICAg
ICAgcmV0dXJuIFJlbmRlck1hdGhNTEJsb2NrOjpyZW1vdmVDaGlsZChjaGlsZCk7CisgICAgICAg
IFJlbmRlck1hdGhNTEJsb2NrOjpyZW1vdmVDaGlsZChjaGlsZCk7CisgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBSZW5kZXJNYXRoTUxTY3JpcHRzKiBwYXJlbnROb2RlID0gZG93bmNhc3Q8
UmVuZGVyTWF0aE1MU2NyaXB0cz4ocGFyZW50KCkpOwotICAgIFJlbmRlck9iamVjdCogbmV4dCA9
IHJlbW92ZUNoaWxkSW50ZXJuYWwoZmFsc2UsIGNoaWxkKTsKKyAgICByZW1vdmVDaGlsZEludGVy
bmFsKGZhbHNlLCBjaGlsZCk7CiAgICAgcGFyZW50Tm9kZS0+Zml4QW5vbnltb3VzU3R5bGVzKCk7
Ci0gICAgcmV0dXJuIG5leHQ7CiB9CiAKIH0gICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oCmluZGV4IDFiNWU3MWQuLjE3
OWM0YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MU2NyaXB0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MU2NyaXB0cy5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBlbnVtIFdy
YXBwZXJUeXBlIHsgQmFzZSwgU3ViU3VwUGFpciB9OwogCiAgICAgdmlydHVhbCB2b2lkIGFkZENo
aWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogcmVtb3ZlQ2hpbGQoUmVuZGVyT2Jq
ZWN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNoaWxkKFJlbmRlck9iamVj
dCYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIFJlbmRlck1hdGhNTFNjcmlwdHNXcmFwcGVy
KERvY3VtZW50JiBkb2N1bWVudCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUsIFdyYXBwZXJU
eXBlIGtpbmQpCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIFJlbmRlck1h
dGhNTFNjcmlwdHNXcmFwcGVyKiBjcmVhdGVBbm9ueW1vdXNXcmFwcGVyKFJlbmRlck1hdGhNTFNj
cmlwdHMqIHJlbmRlck9iamVjdCwgV3JhcHBlclR5cGUpOwogCiAgICAgdm9pZCBhZGRDaGlsZElu
dGVybmFsKGJvb2wgbm9ybWFsSW5zZXJ0aW9uLCBSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJP
YmplY3QqIGJlZm9yZUNoaWxkID0gMCk7Ci0gICAgUmVuZGVyT2JqZWN0KiByZW1vdmVDaGlsZElu
dGVybmFsKGJvb2wgbm9ybWFsUmVtb3ZhbCwgUmVuZGVyT2JqZWN0JiBjaGlsZCk7CisgICAgdm9p
ZCByZW1vdmVDaGlsZEludGVybmFsKGJvb2wgbm9ybWFsUmVtb3ZhbCwgUmVuZGVyT2JqZWN0JiBj
aGlsZCk7CiAKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2tpbmQgPT0gQmFzZSA/ICJCYXNlIFdyYXBwZXIiIDogIlN1YlN1cFBh
aXIgV3JhcHBlciI7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxTY3JpcHRzV3Jh
cHBlcigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KQEAgLTczLDcgKzcz
LDcgQEAgZnJpZW5kIGNsYXNzIFJlbmRlck1hdGhNTFNjcmlwdHNXcmFwcGVyOwogcHVibGljOgog
ICAgIFJlbmRlck1hdGhNTFNjcmlwdHMoRWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsK
ICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2Jq
ZWN0KiBiZWZvcmVDaGlsZCA9IDApIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0
KiByZW1vdmVDaGlsZChSZW5kZXJPYmplY3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0Jikgb3ZlcnJpZGU7CiAgICAgCiAgICAgdmlydHVhbCBS
ZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCBpbnQgZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKQEAgLTgz
LDcgKzgzLDcgQEAgcHJvdGVjdGVkOgogICAgIAogcHJpdmF0ZToKICAgICB2b2lkIGFkZENoaWxk
SW50ZXJuYWwoYm9vbCBub3JtYWxJbnNlcnRpb24sIFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRl
ck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKTsKLSAgICBSZW5kZXJPYmplY3QqIHJlbW92ZUNoaWxk
SW50ZXJuYWwoYm9vbCBub3JtYWxSZW1vdmFsLCBSZW5kZXJPYmplY3QmIGNoaWxkKTsKKyAgICB2
b2lkIHJlbW92ZUNoaWxkSW50ZXJuYWwoYm9vbCBub3JtYWxSZW1vdmFsLCBSZW5kZXJPYmplY3Qm
IGNoaWxkKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck1hdGhNTFNjcmlwdHMoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5k
ZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlck1hdGhNTFNjcmlwdHMiOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRh
aW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5l
ci5jcHAKaW5kZXggMTcyYTBmNGMuLjQ2MjYyMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKQEAgLTkzLDEwICs5MywxMCBA
QCB2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6YWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwg
UmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZAogICAgIFNWR1Jlc291cmNlc0NhY2hlOjpjbGllbnRX
YXNBZGRlZFRvVHJlZSgqY2hpbGQpOwogfQogCi1SZW5kZXJPYmplY3QqIFJlbmRlclNWR0NvbnRh
aW5lcjo6cmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0JiBjaGlsZCkKK3ZvaWQgUmVuZGVyU1ZHQ29u
dGFpbmVyOjpyZW1vdmVDaGlsZChSZW5kZXJPYmplY3QmIGNoaWxkKQogewogICAgIFNWR1Jlc291
cmNlc0NhY2hlOjpjbGllbnRXaWxsQmVSZW1vdmVkRnJvbVRyZWUoY2hpbGQpOwotICAgIHJldHVy
biBSZW5kZXJTVkdNb2RlbE9iamVjdDo6cmVtb3ZlQ2hpbGQoY2hpbGQpOworICAgIFJlbmRlclNW
R01vZGVsT2JqZWN0OjpyZW1vdmVDaGlsZChjaGlsZCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgKaW5kZXggODcyNTNhZC4u
MTE2YTM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0NvbnRhaW5lci5oCkBAIC00OSw3ICs0OSw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZv
aWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVy
T2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApIG92ZXJyaWRlIGZp
bmFsOwotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiByZW1vdmVDaGlsZChSZW5kZXJPYmplY3Qm
KSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2hpbGQoUmVuZGVyT2Jq
ZWN0Jikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3Rz
KFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhZGRpdGlvbmFsT2Zmc2V0LCBj
b25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBwYWludENvbnRhaW5lciA9IDApIG92ZXJyaWRl
IGZpbmFsOwogCiAgICAgdmlydHVhbCBGbG9hdFJlY3Qgb2JqZWN0Qm91bmRpbmdCb3goKSBjb25z
dCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX29iamVjdEJvdW5kaW5nQm94OyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAKaW5kZXggZDAz
Y2VmYS4uZTcwNzU5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHSW5saW5lLmNwcApAQCAtMTI5LDE5ICsxMjksMjAgQEAgdm9pZCBSZW5kZXJTVkdJbmxp
bmU6OmFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hp
bGQpCiAgICAgICAgIHRleHRBbmNlc3Rvci0+c3VidHJlZUNoaWxkV2FzQWRkZWQoY2hpbGQpOwog
fQogCi1SZW5kZXJPYmplY3QqIFJlbmRlclNWR0lubGluZTo6cmVtb3ZlQ2hpbGQoUmVuZGVyT2Jq
ZWN0JiBjaGlsZCkKK3ZvaWQgUmVuZGVyU1ZHSW5saW5lOjpyZW1vdmVDaGlsZChSZW5kZXJPYmpl
Y3QmIGNoaWxkKQogewogICAgIFNWR1Jlc291cmNlc0NhY2hlOjpjbGllbnRXaWxsQmVSZW1vdmVk
RnJvbVRyZWUoY2hpbGQpOwogCiAgICAgYXV0byogdGV4dEFuY2VzdG9yID0gUmVuZGVyU1ZHVGV4
dDo6bG9jYXRlUmVuZGVyU1ZHVGV4dEFuY2VzdG9yKCp0aGlzKTsKLSAgICBpZiAoIXRleHRBbmNl
c3RvcikKLSAgICAgICAgcmV0dXJuIFJlbmRlcklubGluZTo6cmVtb3ZlQ2hpbGQoY2hpbGQpOwor
ICAgIGlmICghdGV4dEFuY2VzdG9yKSB7CisgICAgICAgIFJlbmRlcklubGluZTo6cmVtb3ZlQ2hp
bGQoY2hpbGQpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgVmVjdG9yPFNWR1RleHRM
YXlvdXRBdHRyaWJ1dGVzKiwgMj4gYWZmZWN0ZWRBdHRyaWJ1dGVzOwogICAgIHRleHRBbmNlc3Rv
ci0+c3VidHJlZUNoaWxkV2lsbEJlUmVtb3ZlZCgmY2hpbGQsIGFmZmVjdGVkQXR0cmlidXRlcyk7
Ci0gICAgUmVuZGVyT2JqZWN0KiBuZXh0ID0gUmVuZGVySW5saW5lOjpyZW1vdmVDaGlsZChjaGls
ZCk7CisgICAgUmVuZGVySW5saW5lOjpyZW1vdmVDaGlsZChjaGlsZCk7CiAgICAgdGV4dEFuY2Vz
dG9yLT5zdWJ0cmVlQ2hpbGRXYXNSZW1vdmVkKGFmZmVjdGVkQXR0cmlidXRlcyk7Ci0gICAgcmV0
dXJuIG5leHQ7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW5saW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0lubGluZS5oCmluZGV4IDJjNGU5MWEuLmY3YTc3MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaApAQCAtNjIsNyArNjIsNyBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNv
bnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGUgZmluYWw7CiAKICAgICB2aXJ0dWFs
IHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVD
aGlsZCA9IDApIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiByZW1v
dmVDaGlsZChSZW5kZXJPYmplY3QmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0Jikgb3ZlcnJpZGUgZmluYWw7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSb290LmNwcAppbmRleCBmZTFkZGVkLi4yYjU3Njc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKQEAgLTMxMCwxMCArMzEwLDEwIEBAIHZv
aWQgUmVuZGVyU1ZHUm9vdDo6YWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2Jq
ZWN0KiBiZWZvcmVDaGlsZCkKICAgICBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50V2FzQWRkZWRU
b1RyZWUoKmNoaWxkKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBSZW5kZXJTVkdSb290OjpyZW1vdmVD
aGlsZChSZW5kZXJPYmplY3QmIGNoaWxkKQordm9pZCBSZW5kZXJTVkdSb290OjpyZW1vdmVDaGls
ZChSZW5kZXJPYmplY3QmIGNoaWxkKQogewogICAgIFNWR1Jlc291cmNlc0NhY2hlOjpjbGllbnRX
aWxsQmVSZW1vdmVkRnJvbVRyZWUoY2hpbGQpOwotICAgIHJldHVybiBSZW5kZXJSZXBsYWNlZDo6
cmVtb3ZlQ2hpbGQoY2hpbGQpOworICAgIFJlbmRlclJlcGxhY2VkOjpyZW1vdmVDaGlsZChjaGls
ZCk7CiB9CiAKIC8vIFJlbmRlckJveCBtZXRob2RzIHdpbGwgZXhwZWN0IGNvb3JkaW5hdGVzIHcv
byBhbnkgdHJhbnNmb3JtcyBpbiBjb29yZGluYXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAppbmRleCBhY2U5MjNlLi5jYmZlMDIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaApAQCAtODAsNyArODAsNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBS
ZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGls
ZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIHJlbW92ZUNoaWxkKFJlbmRlck9iamVj
dCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDaGlsZChSZW5kZXJPYmplY3Qm
KSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBsb2NhbFRv
UGFyZW50VHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCmluZGV4IDYyN2E5NjcuLmJhY2RkM2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcApAQCAt
NTM5LDE2ICs1MzksMTUgQEAgdm9pZCBSZW5kZXJTVkdUZXh0OjphZGRDaGlsZChSZW5kZXJPYmpl
Y3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKQogICAgIHN1YnRyZWVDaGlsZFdh
c0FkZGVkKGNoaWxkKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBSZW5kZXJTVkdUZXh0OjpyZW1vdmVD
aGlsZChSZW5kZXJPYmplY3QmIGNoaWxkKQordm9pZCBSZW5kZXJTVkdUZXh0OjpyZW1vdmVDaGls
ZChSZW5kZXJPYmplY3QmIGNoaWxkKQogewogICAgIFNWR1Jlc291cmNlc0NhY2hlOjpjbGllbnRX
aWxsQmVSZW1vdmVkRnJvbVRyZWUoY2hpbGQpOwogCiAgICAgVmVjdG9yPFNWR1RleHRMYXlvdXRB
dHRyaWJ1dGVzKiwgMj4gYWZmZWN0ZWRBdHRyaWJ1dGVzOwogICAgIEZvbnRDYWNoZVB1cmdlUHJl
dmVudGVyIGZvbnRDYWNoZVB1cmdlUHJldmVudGVyOwogICAgIHN1YnRyZWVDaGlsZFdpbGxCZVJl
bW92ZWQoJmNoaWxkLCBhZmZlY3RlZEF0dHJpYnV0ZXMpOwotICAgIFJlbmRlck9iamVjdCogbmV4
dCA9IFJlbmRlclNWR0Jsb2NrOjpyZW1vdmVDaGlsZChjaGlsZCk7CisgICAgUmVuZGVyU1ZHQmxv
Y2s6OnJlbW92ZUNoaWxkKGNoaWxkKTsKICAgICBzdWJ0cmVlQ2hpbGRXYXNSZW1vdmVkKGFmZmVj
dGVkQXR0cmlidXRlcyk7Ci0gICAgcmV0dXJuIG5leHQ7CiB9CiAKIC8vIEZpeCBmb3IgPHJkYXI6
Ly9wcm9ibGVtLzgwNDg4NzU+LiBXZSBzaG91bGQgbm90IHJlbmRlciA6Zmlyc3QtbGluZSBDU1Mg
U3R5bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
VGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgKaW5k
ZXggZDk2MGU3ZS4uZmVkMTNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdUZXh0LmgKQEAgLTg0LDcgKzg0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgbWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcENvb3JkaW5hdGVzRmxhZ3MgPSBBcHBs
eUNvbnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3Qg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlN
YXAmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2Jq
ZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IG51bGxwdHIpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiByZW1vdmVDaGlsZChSZW5kZXJPYmplY3QmKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0Jikgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIG92ZXJyaWRlOwogCiAg
ICAgdmlydHVhbCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xvY2FsVHJhbnNmb3JtOyB9Cg==
</data>
<flag name="review"
          id="266954"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>