<?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>122362</bug_id>
          
          <creation_ts>2013-10-04 17:13:18 -0700</creation_ts>
          <short_desc>FramePolicyFunction should be an std::function</short_desc>
          <delta_ts>2013-10-05 06:48:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>rakuco</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>936439</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-04 17:13:18 -0700</bug_when>
    <thetext>FramePolicyFunction should be an std::function</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936440</commentid>
    <comment_count>1</comment_count>
      <attachid>213421</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-04 17:14:48 -0700</bug_when>
    <thetext>Created attachment 213421
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936456</commentid>
    <comment_count>2</comment_count>
      <attachid>213421</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-04 17:37:47 -0700</bug_when>
    <thetext>Comment on attachment 213421
Patch

Cute how you made the functions the last argument to match the “block is last argument” style we use for the corresponding Objective-C feature. Not sure if that’s the tradition for C++ but it does seem to make the code readable.

I don’t think I’ll ever use a PTMF again!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936469</commentid>
    <comment_count>3</comment_count>
      <attachid>213421</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-04 18:23:40 -0700</bug_when>
    <thetext>Comment on attachment 213421
Patch

Attachment 213421 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/3322053</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936472</commentid>
    <comment_count>4</comment_count>
      <attachid>213421</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-04 18:57:21 -0700</bug_when>
    <thetext>Comment on attachment 213421
Patch

Attachment 213421 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/3314074</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936489</commentid>
    <comment_count>5</comment_count>
      <attachid>213434</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-04 20:02:58 -0700</bug_when>
    <thetext>Created attachment 213434
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936491</commentid>
    <comment_count>6</comment_count>
      <attachid>213436</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-04 20:09:49 -0700</bug_when>
    <thetext>Created attachment 213436
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936492</commentid>
    <comment_count>7</comment_count>
      <attachid>213437</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-04 20:21:31 -0700</bug_when>
    <thetext>Created attachment 213437
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936496</commentid>
    <comment_count>8</comment_count>
      <attachid>213437</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-04 20:55:06 -0700</bug_when>
    <thetext>Comment on attachment 213437
Patch

Attachment 213437 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/3326010</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936497</commentid>
    <comment_count>9</comment_count>
      <attachid>213438</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-04 20:56:48 -0700</bug_when>
    <thetext>Created attachment 213438
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936502</commentid>
    <comment_count>10</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-04 21:50:47 -0700</bug_when>
    <thetext>Committed r156946: &lt;http://trac.webkit.org/changeset/156946&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936556</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-05 06:47:46 -0700</bug_when>
    <thetext>This is causing link failures on the Mountain Lion bot, probably due to a standard library implementation problem. Various std::function-related symbols seem to be exported from WebKit2 even though we don’t want them to be.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936557</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-05 06:48:26 -0700</bug_when>
    <thetext>Correction: The problem is on the Lion bot.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213421</attachid>
            <date>2013-10-04 17:14:48 -0700</date>
            <delta_ts>2013-10-04 20:02:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122362-20131004171448.patch</filename>
            <type>text/plain</type>
            <size>48331</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2OTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmU4ZWU4OTlhNjRiZDQ4
OTdhMWRiMDZjYzc1MTE2YjY1MWE5MTc0OS4uM2Y2ZjZhNzk1ZDNkNzFmZTAyZDU3YjIyOTliODMx
ZDMwYzNlYTNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI3IEBACiAyMDEzLTEwLTA0ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgRnJhbWVQb2xpY3lG
dW5jdGlvbiBzaG91bGQgYmUgYW4gc3RkOjpmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBtYWtlcyBwb2xpY3kgY2FsbGJhY2sgaGFu
ZGxpbmcgc2ltcGxlciBpbnNpZGUgV2ViS2l0LgorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hXaWxsU3VibWl0Rm9ybSk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAg
ICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KToKKyAgICAgICAgKiBsb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xp
Y3kpOgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOZXdXaW5kb3dQb2xp
Y3kpOgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tDb250ZW50UG9saWN5
KToKKworMjAxMy0xMC0wNCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgor
CiAgICAgICAgIFJlbW92ZSBzb21lIHVubmVlZGVkIGNvZGUgZnJvbSBXaWRnZXRNYWMKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjM1NQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9D
aGFuZ2VMb2cKaW5kZXggZmY0YWZhNzIzN2RiOTc5YmQ2NDZiMzE0NTM2NWRlY2U4ZDRhMGFmOC4u
ZjJiNjYzODE5OTQyNTQ5NjE0YmFiOGIzNDVjZTQ1NGY1MGIzZDdmNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE4IEBACisyMDEzLTEwLTA0ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNj
YUBhcHBsZS5jb20+CisKKyAgICAgICAgRnJhbWVQb2xpY3lGdW5jdGlvbiBzaG91bGQgYmUgYW4g
c3RkOjpmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTIyMzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6Y2FsbFBvbGljeUZ1bmN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaFdpbGxTdWJtaXRG
b3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERl
Y2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEVmbC5oOgorCiAyMDEzLTEwLTAzICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmVtb3ZlIHNob3VsZFJ1YmJlckJhbmRJbkRpcmVjdGlvbiBmcm9tIHRoZSBXS0J1
bmRsZVBhZ2VVSUNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDJjMzY0NzYyNzc0ZTZmODRiZGM2
NDVhYTdlY2Q2NmE0NjMzMWVjODUuLmJjNjQwNTcwZDUwNThhNDQ5NzVlZTIzNjg4YTAxZDNiMGM3
YmViMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMy0xMC0wNCAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEZyYW1lUG9saWN5
RnVuY3Rpb24gc2hvdWxkIGJlIGFuIHN0ZDo6ZnVuY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjM2MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hXaWxsU3VibWl0Rm9ybSk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oOgorICAgICAgICAq
IHdlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5jcHA6CisgICAgICAgICh3ZWJraXRfd2Vi
X3BvbGljeV9kZWNpc2lvbl91c2UpOgorICAgICAgICAod2Via2l0X3dlYl9wb2xpY3lfZGVjaXNp
b25faWdub3JlKToKKyAgICAgICAgKHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2Rvd25sb2Fk
KToKKwogMjAxMy0xMC0wMyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJlbW92ZSBzaG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rpb24gZnJvbSB0aGUgV0tCdW5kbGVQYWdl
VUlDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAyNTg2NmRlNTZhMTg4NDZmZGI4ZmMwZTczYTll
OTM4ZTdlY2ZmMWIzLi44YzM4NmIzODk3NTdmMzMyZjZiM2U5NmI3YmMyYjkzMTQ2OTM5NGJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTkgQEAKIDIwMTMtMTAtMDQgIEFuZGVycyBDYXJs
c3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAorICAgICAgICBGcmFtZVBvbGljeUZ1bmN0aW9u
IHNob3VsZCBiZSBhbiBzdGQ6OmZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIzNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNw
b25zZSk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xp
Y3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybSk6CisKKzIwMTMtMTAtMDQgIEFu
ZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKwogICAgICAgICBSZW1vdmUgc29t
ZSB1bm5lZWRlZCBjb2RlIGZyb20gV2lkZ2V0TWFjCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIzNTUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IGQwMzEx
NjI2ZmRjMGU5NjEwNjM3MmZjZmUyMTQ3ZTk2YWFjZmZjODUuLmQ1ZWRlYWNmYTY3NzZiNTc4NWUy
NzVkOTM2YTAxYWQ0OTI4ZTBkY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAxMy0xMC0wNCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAg
ICAgIEZyYW1lUG9saWN5RnVuY3Rpb24gc2hvdWxkIGJlIGFuIHN0ZDo6ZnVuY3Rpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjM2MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAoV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAg
ICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2ls
bFN1Ym1pdEZvcm0pOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJlY2VpdmVkUG9s
aWN5RGVjaXNpb24pOgorCiAyMDEzLTEwLTAzICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmVtb3ZlIHNob3VsZFJ1YmJlckJhbmRJbkRpcmVjdGlvbiBmcm9tIHRoZSBX
S0J1bmRsZVBhZ2VVSUNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGZhOWY4MzI3YjY1MzliMGVhOGZkZmMy
ZWFkYmY5YzgyZDBmZDU0Y2YuLjdhNDNkZWY4MTc2OTY0YTVmODIwOGU0OWU5M2VjZjIxOWE2Zjhm
YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMy0xMC0wNCAgQW5kZXJzIENhcmxz
c29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEZyYW1lUG9saWN5RnVuY3Rpb24g
c2hvdWxkIGJlIGFuIHN0ZDo6ZnVuY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyMjM2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmRpZFJl
Y2VpdmVQb2xpY3lEZWNpc2lvbik6CisKIDIwMTMtMTAtMDQgIExvcmVuem8gVGlsdmUgIDxsdGls
dmVAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBFbmFibGUgdGV4dCBlZGl0aW9uIFVuZG9P
cGVyYXRpb25zIHN1cHBvcnQgaW4gV2ViS2l0MgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmNwcAppbmRleCBlZjYwMmQ2NjEyNmM1MGM5ZDMwMGRkYjQ4OWMwNjMxNThkOGI2OGU2Li4z
NzAyNzJjNzJjZTRhYzRmNzlkZjZlZTA1M2UwZGJlNzFhZWY3ZDg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMTE0LDExICsxMTQsMTEgQEAgdm9pZCBFbXB0eUNo
cm9tZUNsaWVudDo6cnVuT3BlblBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4p
CiB7CiB9CiAKLXZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xp
Y3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiwgY29uc3QgTmF2aWdhdGlv
bkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwg
Y29uc3QgU3RyaW5nJikKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgY29uc3QgU3RyaW5nJiwg
RnJhbWVQb2xpY3lGdW5jdGlvbikKIHsKIH0KIAotdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oRnJhbWVQb2xpY3lGdW5j
dGlvbiwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBh
c3NSZWZQdHI8Rm9ybVN0YXRlPikKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24m
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIEZyYW1lUG9s
aWN5RnVuY3Rpb24pCiB7CiB9CiAKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIEVtcHR5RnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChQYXNzUmVmUHRyPEZvcm1T
dGF0ZT4pCiB7CiB9CiAKLXZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxs
U3VibWl0Rm9ybShGcmFtZVBvbGljeUZ1bmN0aW9uLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pCit2
b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0oUGFzc1Jl
ZlB0cjxGb3JtU3RhdGU+LCBGcmFtZVBvbGljeUZ1bmN0aW9uKQogewogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggYTY3NzI5ZTA4YTlhMzZiNGM3ZWI1NjQzNWViYmY2
MjkwZmNmOGE2My4uOTIwMzc0MWExYjlkZGMzOWQ1OTMyMDc3YzY3YWE0ZDI2MjU5ZWY3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApAQCAtMjYxLDE1ICsyNjEsMTUgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgRnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBOYXZpZ2F0
aW9uQWN0aW9uJikgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFNob3co
KSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNl
KEZyYW1lUG9saWN5RnVuY3Rpb24sIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiwgY29uc3QgTmF2aWdhdGlvbkFj
dGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgY29u
c3QgU3RyaW5nJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1bmN0aW9uLCBjb25zdCBOYXZpZ2F0
aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRnJh
bWVQb2xpY3lGdW5jdGlvbikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIGNvbnN0IFN0cmlu
ZyYsIEZyYW1lUG9saWN5RnVuY3Rpb24pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlv
biYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgRnJhbWVQ
b2xpY3lGdW5jdGlvbikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbFBvbGljeUNo
ZWNrKCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBv
bGljeShjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hXaWxsU2VuZFN1Ym1pdEV2ZW50KFBhc3NSZWZQdHI8Rm9ybVN0YXRlPikgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0oRnJhbWVQb2xpY3lGdW5jdGlv
biwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hXaWxsU3VibWl0Rm9ybShQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIEZyYW1lUG9saWN5RnVu
Y3Rpb24pIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIHJldmVydFRvUHJvdmlzaW9uYWxT
dGF0ZShEb2N1bWVudExvYWRlciopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRNYWluRG9jdW1l
bnRFcnJvcihEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGU0NDA5NjVhMzRiZWM1MmFlZmZhMjlk
N2JiOTA5MzE0YzczNDFlMjAuLjFiOTA1MzQ0ZmRjMWRiN2ZlMDk3N2UzZjU4MzY1OTMyZGYyMDRh
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMjg2OSwxMCArMjg2
OSwxNCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xp
Y3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzcwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgaWYgKGZvcm1TdGF0ZSkKLSAgICAgICAgbV9jbGllbnQuZGlzcGF0Y2hXaWxsU3VibWl0
Rm9ybSgmUG9saWN5Q2hlY2tlcjo6Y29udGludWVMb2FkQWZ0ZXJXaWxsU3VibWl0Rm9ybSwgZm9y
bVN0YXRlKTsKLSAgICBlbHNlCisgICAgaWYgKCFmb3JtU3RhdGUpIHsKICAgICAgICAgY29udGlu
dWVMb2FkQWZ0ZXJXaWxsU3VibWl0Rm9ybSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgbV9jbGllbnQuZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShmb3JtU3RhdGUsIFt0aGlzXShQb2xp
Y3lBY3Rpb24gYWN0aW9uKSB7CisgICAgICAgIHBvbGljeUNoZWNrZXIoKS5jb250aW51ZUxvYWRB
ZnRlcldpbGxTdWJtaXRGb3JtKGFjdGlvbik7CisgICAgfSk7CiB9CiAKIHZvaWQgRnJhbWVMb2Fk
ZXI6OmNhbGxDb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeSh2b2lkKiBhcmd1bWVudCwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggZTE1Yjc5NmQ5
YjQwMDIzOGI4MjRlN2NiY2U2ZDcyNTRlOWYyOWEzNy4uZjkxYWM1NTlhODc4MjBhMDk2OTYxMzkx
ODc5NGEzMTJkOWJmNGNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAi
TGF5b3V0TWlsZXN0b25lcy5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCisj
aW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIApAQCAtOTcsNyArOTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAgICAgY2xhc3MgV2lkZ2V0OwogCi0gICAgdHlwZWRl
ZiB2b2lkIChQb2xpY3lDaGVja2VyOjoqRnJhbWVQb2xpY3lGdW5jdGlvbikoUG9saWN5QWN0aW9u
KTsKKyAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZCAoUG9saWN5QWN0aW9uKT4gRnJhbWVQ
b2xpY3lGdW5jdGlvbjsKIAogICAgIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50IHsKICAgICBwdWJs
aWM6CkBAIC0xNjMsOSArMTY0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0
dWFsIEZyYW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpID0g
MDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoU2hvdygpID0gMDsKIAotICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZVBvbGljeUZ1
bmN0aW9uLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikg
PSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5k
b3dBY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgY29uc3QgU3RyaW5n
JiBmcmFtZU5hbWUpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1bmN0aW9uLCBjb25zdCBOYXZpZ2F0
aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+
KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGcmFt
ZVBvbGljeUZ1bmN0aW9uKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgRnJhbWVQb2xpY3lGdW5jdGlvbikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25B
Y3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIEZy
YW1lUG9saWN5RnVuY3Rpb24pID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGNhbmNlbFBvbGlj
eUNoZWNrKCkgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFVuYWJsZVRvSW1w
bGVtZW50UG9saWN5KGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CkBAIC0xNzMsNyArMTc0LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxs
UmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlUmVxdWVzdCopIHsgfQogCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTZW5kU3VibWl0RXZlbnQoUGFzc1JlZlB0cjxGb3JtU3Rh
dGU+KSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKEZy
YW1lUG9saWN5RnVuY3Rpb24sIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPikgPSAwOworICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShQYXNzUmVmUHRyPEZvcm1TdGF0ZT4s
IEZyYW1lUG9saWN5RnVuY3Rpb24pID0gMDsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcmV2ZXJ0
VG9Qcm92aXNpb25hbFN0YXRlKERvY3VtZW50TG9hZGVyKikgPSAwOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgc2V0TWFpbkRvY3VtZW50RXJyb3IoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJj
ZUVycm9yJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNo
ZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCmluZGV4
IGFlMjRhNDVlMWNkZjA4MTVjNzJhMTRjOTdlNDhiY2IxNTAwNjZjYWEuLmYwOTEzNzM1OTlhYjRi
NGI3ZDQ4MzZjYzg5NWM0ODRlMDM3Nzk2OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Qb2xpY3lDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5
Q2hlY2tlci5jcHAKQEAgLTk1LDggKzk1LDkgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05h
dmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBEb2N1bWUKICAg
ICBtX2NhbGxiYWNrLnNldChyZXF1ZXN0LCBmb3JtU3RhdGUuZ2V0KCksIGZ1bmN0aW9uLCBhcmd1
bWVudCk7CiAKICAgICBtX2RlbGVnYXRlSXNEZWNpZGluZ05hdmlnYXRpb25Qb2xpY3kgPSB0cnVl
OwotICAgIG1fZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbigmUG9saWN5Q2hlY2tlcjo6Y29udGludWVBZnRlck5hdmlnYXRpb25Q
b2xpY3ksCi0gICAgICAgIGFjdGlvbiwgcmVxdWVzdCwgZm9ybVN0YXRlKTsKKyAgICBtX2ZyYW1l
LT5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24oYWN0aW9uLCByZXF1ZXN0LCBmb3JtU3RhdGUsIFt0aGlzXShQb2xpY3lBY3Rpb24gYWN0aW9u
KSB7CisgICAgICAgIGNvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGFjdGlvbik7CisgICAg
fSk7CiAgICAgbV9kZWxlZ2F0ZUlzRGVjaWRpbmdOYXZpZ2F0aW9uUG9saWN5ID0gZmFsc2U7CiB9
CiAKQEAgLTExMCwxNSArMTExLDE3IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOZXdXaW5k
b3dQb2xpY3koY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBOZXdXaW5kCiAgICAgICAg
IHJldHVybiBjb250aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeShQb2xpY3lJZ25vcmUpOwogCiAg
ICAgbV9jYWxsYmFjay5zZXQocmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFtZU5hbWUsIGFjdGlvbiwg
ZnVuY3Rpb24sIGFyZ3VtZW50KTsKLSAgICBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5kaXNw
YXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbigmUG9saWN5Q2hlY2tlcjo6Y29udGlu
dWVBZnRlck5ld1dpbmRvd1BvbGljeSwKLSAgICAgICAgYWN0aW9uLCByZXF1ZXN0LCBmb3JtU3Rh
dGUsIGZyYW1lTmFtZSk7CisgICAgbV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oYWN0aW9uLCByZXF1ZXN0LCBmb3JtU3RhdGUs
IGZyYW1lTmFtZSwgW3RoaXNdKFBvbGljeUFjdGlvbiBhY3Rpb24pIHsKKyAgICAgICAgY29udGlu
dWVBZnRlck5ld1dpbmRvd1BvbGljeShhY3Rpb24pOworICAgIH0pOwogfQogCiB2b2lkIFBvbGlj
eUNoZWNrZXI6OmNoZWNrQ29udGVudFBvbGljeShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgQ29udGVudFBvbGljeURlY2lzaW9uRnVuY3Rpb24gZnVuY3Rpb24sIHZvaWQqIGFyZ3Vt
ZW50KQogewogICAgIG1fY2FsbGJhY2suc2V0KGZ1bmN0aW9uLCBhcmd1bWVudCk7Ci0gICAgbV9m
cmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZSgm
UG9saWN5Q2hlY2tlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3ksCi0gICAgICAgIHJlc3Bv
bnNlLCBtX2ZyYW1lLT5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpLT5yZXF1ZXN0KCkp
OworICAgIG1fZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2UocmVzcG9uc2UsIG1fZnJhbWUtPmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVy
KCktPnJlcXVlc3QoKSwgW3RoaXNdKFBvbGljeUFjdGlvbiBhY3Rpb24pIHsKKyAgICAgICAgY29u
dGludWVBZnRlckNvbnRlbnRQb2xpY3koYWN0aW9uKTsKKyAgICB9KTsKIH0KIAogdm9pZCBQb2xp
Y3lDaGVja2VyOjpjYW5jZWxDaGVjaygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAKaW5kZXggNzhjMzQzZThk
MDM1MjE0NTcxYWJmMDc5OTcyMGM3ZmFiN2IxM2ZmOS4uYTIyMDg3OGZiNmI3YzU4NjY0NjU1OTgw
MTQxNThiNTUwZGE2YmFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBA
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmNhbGxQb2xpY3lGdW5jdGlvbihGcmFtZVBvbGlj
eUZ1bmN0aW9uIGZ1bmN0aW9uLCBQb2xpCiB7CiAgICAgRnJhbWUqIGYgPSBFV0tQcml2YXRlOjpj
b3JlRnJhbWUobV9mcmFtZSk7CiAgICAgQVNTRVJUKGYpOwotICAgIChmLT5sb2FkZXIoKS5wb2xp
Y3lDaGVja2VyKCkuKmZ1bmN0aW9uKShhY3Rpb24pOworICAgIGZ1bmN0aW9uKGFjdGlvbik7CiB9
CiAKIFdURjo6UGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gRnJhbWVMb2FkZXJDbGllbnRFZmw6
OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQpAQCAtMTE5LDcgKzExOSw3IEBAIFdU
Rjo6UGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gRnJhbWVMb2FkZXJDbGllbnRFZmw6OmNyZWF0
ZURvY3VtZW50TG9hZGVyKGNvbnN0CiAgICAgcmV0dXJuIGxvYWRlci5yZWxlYXNlKCk7CiB9CiAK
LXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0oRnJhbWVQ
b2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+KQordm9pZCBGcmFt
ZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShQYXNzUmVmUHRyPEZvcm1T
dGF0ZT4sIEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24pCiB7CiAgICAgLy8gRklYTUU6IFRo
aXMgaXMgc3VyZWx5IHRvbyBzaW1wbGUKICAgICBBU1NFUlQoZnVuY3Rpb24pOwpAQCAtMjg3LDcg
KzI4Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkUmVjZWl2ZVJl
c3BvbnNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuCiAgICAgZXZhc19vYmplY3Rfc21hcnRf
Y2FsbGJhY2tfY2FsbChtX3ZpZXcsICJyZXNvdXJjZSxyZXNwb25zZSxyZWNlaXZlZCIsICZyZXNw
b25zZSk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yUmVzcG9uc2UoRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1
ZXN0KQordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24pCiB7
CiAgICAgLy8gd2UgbmVlZCB0byBjYWxsIGRpcmVjdGx5IGhlcmUgKGN1cnJlbnRseSBjYWxsUG9s
aWN5RnVuY3Rpb24gZG9lcyB0aGF0ISkKICAgICBBU1NFUlQoZnVuY3Rpb24pOwpAQCAtMzA5LDcg
KzMwOSw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UoRnJhbWVQb2xpY3lGdW5jdGlvbiBmCiAgICAgICAgIGNhbGxQb2xpY3lGdW5j
dGlvbihmdW5jdGlvbiwgUG9saWN5RG93bmxvYWQpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZVBvbGlj
eUZ1bmN0aW9uIGZ1bmN0aW9uLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgY29uc3Qg
U3RyaW5nJikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBjb25zdCBT
dHJpbmcmLCBGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uKQogewogICAgIEFTU0VSVChmdW5j
dGlvbik7CiAgICAgQVNTRVJUKG1fZnJhbWUpOwpAQCAtMzI2LDcgKzMyNiw3IEBAIHZvaWQgRnJh
bWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9u
KEZyYW1lUG9saWN5RnVuCiAgICAgY2FsbFBvbGljeUZ1bmN0aW9uKGZ1bmN0aW9uLCBQb2xpY3lV
c2UpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwgY29uc3Qg
TmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNl
UmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+KQordm9pZCBGcmFtZUxvYWRlckNsaWVudEVm
bDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRp
b25BY3Rpb24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3Qs
IFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbikKIHsK
ICAgICBBU1NFUlQoZnVuY3Rpb24pOwogICAgIEFTU0VSVChtX2ZyYW1lKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5o
CmluZGV4IGIwZDZmYzI2NGFjYTBjYTFiYTE2YjRlMWVlMDBhZmU1NmY5MDM4NTguLmJiYWZmMjdi
OTUxNjg3MmQ4OGJlOTYzNTQzMzQyY2EwOGQ4NDIwODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgKKysrIGIvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaApAQCAtMTEx
LDkgKzExMSw5IEBAIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50RWZsIDogcHVibGljIEZyYW1lTG9h
ZGVyQ2xpZW50IHsKICAgICB2aXJ0dWFsIEZyYW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3Qg
V2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFNo
b3coKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNl
KEZyYW1lUG9saWN5RnVuY3Rpb24sIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JO
ZXdXaW5kb3dBY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiwgY29uc3QgTmF2aWdhdGlvbkFjdGlv
biYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFdURjo6UGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBj
b25zdCBTdHJpbmcmIGZyYW1lTmFtZSk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1bmN0aW9uLCBjb25zdCBOYXZp
Z2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgV1RGOjpQYXNzUmVmUHRyPEZv
cm1TdGF0ZT4pOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGcmFt
ZVBvbGljeUZ1bmN0aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIFdURjo6UGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBjb25zdCBTdHJpbmcmIGZyYW1l
TmFtZSwgRnJhbWVQb2xpY3lGdW5jdGlvbik7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgV1RGOjpQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIEZyYW1lUG9s
aWN5RnVuY3Rpb24pOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxQb2xpY3lDaGVjaygpOwogCiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koY29uc3QgUmVz
b3VyY2VFcnJvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCmluZGV4IDE1OGQ5M2IwYTcxNGJhNjg5YTc0
YjhiZTc1YTFlNGRhYmY1NGI1NTMuLjYzZTJjY2M5OWI1Yjg2NGY4MTQ0ODI5ZTc0ZTgzOTVmNTIx
ZDc5YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKQEAgLTE1MCwxMyArMTUwLDEzIEBAIFdURjo6UGFz
c1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0
ZURvY3VtZW50TG9hZGVyCiAgICAgcmV0dXJuIGxvYWRlci5yZWxlYXNlKCk7CiB9CiAKLXZvaWQg
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0oRnJhbWVQb2xpY3lGdW5j
dGlvbiBwb2xpY3lGdW5jdGlvbiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+KQordm9pZCBGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShQYXNzUmVmUHRyPEZvcm1TdGF0ZT4s
IEZyYW1lUG9saWN5RnVuY3Rpb24gcG9saWN5RnVuY3Rpb24pCiB7CiAgICAgLy8gRklYTUU6IFRo
aXMgaXMgc3VyZWx5IHRvbyBzaW1wbGUKICAgICBBU1NFUlQocG9saWN5RnVuY3Rpb24pOwogICAg
IGlmICghcG9saWN5RnVuY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICAoY29yZShtX2ZyYW1l
KS0+bG9hZGVyKCkucG9saWN5Q2hlY2tlcigpLipwb2xpY3lGdW5jdGlvbikoUG9saWN5VXNlKTsK
KyAgICBwb2xpY3lGdW5jdGlvbihQb2xpY3lVc2UpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50Ojpjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0
IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCkBAIC0zMzksMTQgKzMzOSwxNCBAQCB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpEb2N1bWVu
dExvYWRlciogbG9hZAogICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJWaWV3LCAicmVzb3Vy
Y2UtcmVzcG9uc2UtcmVjZWl2ZWQiLCBtX2ZyYW1lLCB3ZWJSZXNvdXJjZSwgbmV0d29ya1Jlc3Bv
bnNlLmdldCgpKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZShGcmFtZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0aW9uLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNv
dXJjZVJlcXVlc3QpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGlj
eUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgRnJhbWVQb2xpY3lGdW5jdGlvbiBwb2xpY3lG
dW5jdGlvbikKIHsKICAgICBBU1NFUlQocG9saWN5RnVuY3Rpb24pOwogICAgIGlmICghcG9saWN5
RnVuY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChyZXNvdXJjZVJlcXVlc3QuaXNO
dWxsKCkpIHsKLSAgICAgICAgKGNvcmUobV9mcmFtZSktPmxvYWRlcigpLnBvbGljeUNoZWNrZXIo
KS4qcG9saWN5RnVuY3Rpb24pKFBvbGljeUlnbm9yZSk7CisgICAgICAgIHBvbGljeUZ1bmN0aW9u
KFBvbGljeUlnbm9yZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQxNSwxNCArNDE1
LDE0IEBAIHN0YXRpYyBXZWJLaXRXZWJOYXZpZ2F0aW9uQWN0aW9uKiBnZXROYXZpZ2F0aW9uQWN0
aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVQb2xp
Y3lGdW5jdGlvbiBwb2xpY3lGdW5jdGlvbiwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9u
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgUGFzc1JlZlB0cjxGb3Jt
U3RhdGU+LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25B
Y3Rpb24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIFBh
c3NSZWZQdHI8Rm9ybVN0YXRlPiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIEZyYW1lUG9saWN5
RnVuY3Rpb24gcG9saWN5RnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKHBvbGljeUZ1bmN0aW9uKTsK
ICAgICBpZiAoIXBvbGljeUZ1bmN0aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAocmVz
b3VyY2VSZXF1ZXN0LmlzTnVsbCgpKSB7Ci0gICAgICAgIChjb3JlKG1fZnJhbWUpLT5sb2FkZXIo
KS5wb2xpY3lDaGVja2VyKCkuKnBvbGljeUZ1bmN0aW9uKShQb2xpY3lJZ25vcmUpOworICAgICAg
ICBwb2xpY3lGdW5jdGlvbihQb2xpY3lJZ25vcmUpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC00NDIsNyArNDQyLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGkKICAgICAvLyBGSVhN
RTogSSB0aGluayBRdCB2ZXJzaW9uIG1hcnNoYWxzIHRoaXMgdG8gYW5vdGhlciB0aHJlYWQgc28g
d2hlbiB3ZQogICAgIC8vIGhhdmUgbXVsdGktdGhyZWFkZWQgZG93bmxvYWQsIHdlIG1pZ2h0IG5l
ZWQgdG8gZG8gdGhlIHNhbWUKICAgICBpZiAoIWlzSGFuZGxlZCkKLSAgICAgICAgKGNvcmUobV9m
cmFtZSktPmxvYWRlcigpLnBvbGljeUNoZWNrZXIoKS4qcG9saWN5RnVuY3Rpb24pKFBvbGljeVVz
ZSk7CisgICAgICAgIHBvbGljeUZ1bmN0aW9uKFBvbGljeVVzZSk7CiB9CiAKIHZvaWQgRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFt
ZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0aW9uLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBh
Y3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBQYXNzUmVmUHRy
PEZvcm1TdGF0ZT4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAppbmRleCBmNTZmYjU0YmY2MGU0NzA1ZDI5OGQyNDMz
MjhkNmVjYTU1YTU5NDBjLi5kYjRiNjE1OTdiNDNiZjM1NTY2NmVhMmI2ZmRiZjQzZTkxNjlkNjc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50R3RrLmgKQEAgLTk4LDE1ICs5OCwxNSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
ICAgICAgICAgdmlydHVhbCBXZWJDb3JlOjpGcmFtZSogZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0
IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoU2hvdygpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZv
clJlc3BvbnNlKFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdl
YkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24sIGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rp
b24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXVEY6OlBhc3NSZWZQdHI8V2Vi
Q29yZTo6Rm9ybVN0YXRlPiwgY29uc3QgV1RGOjpTdHJpbmcmIGZyYW1lTmFtZSk7Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2Vi
Q29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiwgY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlv
biYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdURjo6UGFzc1JlZlB0cjxXZWJD
b3JlOjpGb3JtU3RhdGU+KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24pOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rp
b24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+LCBjb25zdCBX
VEY6OlN0cmluZyYgZnJhbWVOYW1lLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uKTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4sIFdlYkNvcmU6
OkZyYW1lUG9saWN5RnVuY3Rpb24pOwogICAgICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUG9saWN5
Q2hlY2soKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVu
dFBvbGljeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChXVEY6OlBhc3NSZWZQdHI8V2ViQ29y
ZTo6Rm9ybVN0YXRlPikgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTdWJt
aXRGb3JtKFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24sIFdURjo6UGFzc1JlZlB0cjxXZWJD
b3JlOjpGb3JtU3RhdGU+KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFN1Ym1p
dEZvcm0oV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4sIFdlYkNvcmU6OkZyYW1l
UG9saWN5RnVuY3Rpb24pOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXZlcnRUb1Byb3Zpc2lv
bmFsU3RhdGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKSB7IH0KICAgICAgICAgdmlydHVhbCB2
b2lkIHNldE1haW5Eb2N1bWVudEVycm9yKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5jcHAKaW5kZXggMTM2NTczZDFjOWU5YmVlNWQ2
ZTM1NTg5YWUxYzNlMmUzNGUyYmEwMi4uOTJjZTNiNmRmZjQ5YTJlMDA3MTlhYzJhMDJmM2Y2ODY5
MTE4MjI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBv
bGljeWRlY2lzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
cG9saWN5ZGVjaXNpb24uY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgd2Via2l0X3dlYl9wb2xp
Y3lfZGVjaXNpb25fdXNlKFdlYktpdFdlYlBvbGljeURlY2lzaW9uKiBkZWNpc2lvbikKICAgICBX
ZWJLaXRXZWJQb2xpY3lEZWNpc2lvblByaXZhdGUqIHByaXYgPSBkZWNpc2lvbi0+cHJpdjsKIAog
ICAgIGlmICghcHJpdi0+aXNDYW5jZWxsZWQpCi0gICAgICAgIChjb3JlKHByaXYtPmZyYW1lKS0+
bG9hZGVyKCkucG9saWN5Q2hlY2tlcigpLioocHJpdi0+ZnJhbWVQb2xpY3lGdW5jdGlvbikpKFdl
YkNvcmU6OlBvbGljeVVzZSk7CisgICAgICAgIGZyYW1lUG9saWN5RnVuY3Rpb24oV2ViQ29yZTo6
UG9saWN5VXNlKTsKIH0KIAogLyoqCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCB3ZWJraXRfd2Vi
X3BvbGljeV9kZWNpc2lvbl9pZ25vcmUoV2ViS2l0V2ViUG9saWN5RGVjaXNpb24qIGRlY2lzaW9u
KQogICAgIFdlYktpdFdlYlBvbGljeURlY2lzaW9uUHJpdmF0ZSogcHJpdiA9IGRlY2lzaW9uLT5w
cml2OwogCiAgICAgaWYgKCFwcml2LT5pc0NhbmNlbGxlZCkKLSAgICAgICAgKGNvcmUocHJpdi0+
ZnJhbWUpLT5sb2FkZXIoKS5wb2xpY3lDaGVja2VyKCkuKihwcml2LT5mcmFtZVBvbGljeUZ1bmN0
aW9uKSkoV2ViQ29yZTo6UG9saWN5SWdub3JlKTsKKyAgICAgICAgZnJhbWVQb2xpY3lGdW5jdGlv
bihXZWJDb3JlOjpQb2xpY3lJZ25vcmUpOwogfQogCiAvKioKQEAgLTEyMSw3ICsxMjEsNyBAQCB2
b2lkIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2Rvd25sb2FkKFdlYktpdFdlYlBvbGljeURl
Y2lzaW9uKiBkZWNpc2lvbikKICAgICBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvblByaXZhdGUqIHBy
aXYgPSBkZWNpc2lvbi0+cHJpdjsKIAogICAgIGlmICghcHJpdi0+aXNDYW5jZWxsZWQpCi0gICAg
ICAgIChjb3JlKHByaXYtPmZyYW1lKS0+bG9hZGVyKCkucG9saWN5Q2hlY2tlcigpLioocHJpdi0+
ZnJhbWVQb2xpY3lGdW5jdGlvbikpKFdlYkNvcmU6OlBvbGljeURvd25sb2FkKTsKKyAgICAgICAg
ZnJhbWVQb2xpY3lGdW5jdGlvbihXZWJDb3JlOjpQb2xpY3lEb3dubG9hZCk7CiB9CiAKIHZvaWQg
d2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fY2FuY2VsKFdlYktpdFdlYlBvbGljeURlY2lzaW9u
KiBkZWNpc2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDFiZmRkMTk2NjUwOWJhZmIzMDQ5YTM3Zjgw
NDU5MTdmN2E2MzYwZTMuLjZiZDU4MWM0M2Q0YTFkNGNhYzM1YTQ3MzVhNjY1OWFhYzZjNjk2NDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaApAQCAtMTEyLDE4ICsxMTIsMTUgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIFdlYkNvcmU6OkZyYW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgV2ViQ29yZTo6TmF2
aWdhdGlvbkFjdGlvbiYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFNob3co
KSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJl
c3BvbnNlKFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24sIAotICAgICAgICBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7
Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9u
KFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24sCi0gICAgICAgIGNvbnN0IFdlYkNvcmU6Ok5h
dmlnYXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVm
UHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4sIGNvbnN0IFdURjo6U3RyaW5nJiBmcmFtZU5hbWUpIE9W
RVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24oV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiwKLSAgICAgICAgY29uc3QgV2Vi
Q29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZy
YW1lUG9saWN5RnVuY3Rpb24pOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3Rh
dGU+LCBjb25zdCBXVEY6OlN0cmluZyYgZnJhbWVOYW1lLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1
bmN0aW9uKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0
ZT4sIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24pIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBjYW5jZWxQb2xpY3lDaGVjaygpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFNlbmRTdWJtaXRF
dmVudChQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4pIE9WRVJSSURFOwotICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rp
b24sIFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPikgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0oUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3Rh
dGU+LCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uKSBPVkVSUklERTsKIAogICAgIHZpcnR1
YWwgdm9pZCByZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIq
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWFpbkRvY3VtZW50RXJyb3IoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgT1ZFUlJJ
REU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IDcyYzUyN2NhNjllNDQ0MzM2YzA3ZmVkMjBlYTVhNDUz
ZGRlY2E4MzguLmRkNTI2MzU5ZDNhMjFkODVmN2ZhNWIxYTVkMDdlNjhmMGM5MGQ1ZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tCkBAIC03NDMsOCArNzQzLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hTaG93KCkKICAgICBbW3dlYlZpZXcgX1VJRGVsZWdhdGVGb3J3YXJkZXJdIHdl
YlZpZXdTaG93OndlYlZpZXddOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24s
Ci0gICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbikK
IHsKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsK
IApAQCAtNzUyLDI5ICs3NTEsMjcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZVBvbGljeUZ1bmN0aW9uIGYKICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlY2lkZVBvbGljeUZvck1JTUVUeXBlOnJlc3BvbnNlLm1pbWVUeXBl
KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0OnJlcXVl
c3QubnNVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZnJhbWU6bV93ZWJGcmFtZS5nZXQoKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlY2lzaW9uTGlzdGVuZXI6c2V0VXBQb2xpY3lMaXN0ZW5lcihmdW5j
dGlvbikuZ2V0KCldOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2lzaW9uTGlz
dGVuZXI6c2V0VXBQb2xpY3lMaXN0ZW5lcihzdGQ6Om1vdmUoZnVuY3Rpb24pKS5nZXQoKV07CiB9
CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3
V2luZG93QWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24sCi0gICAgY29uc3QgTmF2
aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBh
c3NSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lKQor
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5k
b3dBY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUsIGNvbnN0IFN0
cmluZyYgZnJhbWVOYW1lLCBGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uKQogewogICAgIFdl
YlZpZXcgKndlYlZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOwogICAgIFtbd2Vi
VmlldyBfcG9saWN5RGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6d2ViVmlldwogICAgICAgICAg
ICAgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uOmFjdGlvbkRpY3Rpb25hcnkoYWN0aW9u
LCBmb3JtU3RhdGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6
cmVxdWVzdC5uc1VSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuZXdGcmFtZU5hbWU6ZnJhbWVOYW1lCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIGRlY2lzaW9uTGlzdGVuZXI6c2V0VXBQb2xpY3lMaXN0ZW5lcihmdW5jdGlvbikuZ2V0KCld
OworICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpc2lvbkxpc3RlbmVyOnNldFVwUG9saWN5
TGlzdGVuZXIoc3RkOjptb3ZlKGZ1bmN0aW9uKSkuZ2V0KCldOwogfQogCi12b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oRnJh
bWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwKLSAgICBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBh
Y3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3Rh
dGU+IGZvcm1TdGF0ZSkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24s
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZv
cm1TdGF0ZSwgRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbikKIHsKICAgICBXZWJWaWV3ICp3
ZWJWaWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsKICAgICBbW3dlYlZpZXcgX3Bv
bGljeURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3OndlYlZpZXcKICAgICAgICAgICAgICAgICBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOmFjdGlvbkRpY3Rpb25hcnkoYWN0aW9uLCBm
b3JtU3RhdGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lOm1fd2ViRnJhbWUuZ2V0KCkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWNpc2lvbkxpc3RlbmVyOnNldFVwUG9saWN5TGlzdGVu
ZXIoZnVuY3Rpb24pLmdldCgpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNp
c2lvbkxpc3RlbmVyOnNldFVwUG9saWN5TGlzdGVuZXIoc3RkOjptb3ZlKGZ1bmN0aW9uKSkuZ2V0
KCldOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5jZWxQb2xpY3lDaGVjaygp
CkBAIC04MTEsMTYgKzgwOCwxNiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aFdpbGxTZW5kU3VibWl0RXZlbnQoUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtUwogICAgIENhbGxG
b3JtRGVsZWdhdGUoZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKSwgQHNlbGVjdG9yKHdpbGxT
ZW5kU3VibWl0RXZlbnRUb0Zvcm06aW5GcmFtZTp3aXRoVmFsdWVzOiksIGZvcm1FbGVtZW50LCBt
X3dlYkZyYW1lLmdldCgpLCB2YWx1ZXMpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24sIFBh
c3NSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUs
IEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24pCiB7CiAgICAgaWQgPFdlYkZvcm1EZWxlZ2F0
ZT4gZm9ybURlbGVnYXRlID0gW2dldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSkgX2Zvcm1EZWxl
Z2F0ZV07CiAgICAgaWYgKCFmb3JtRGVsZWdhdGUpIHsKLSAgICAgICAgKGNvcmUobV93ZWJGcmFt
ZS5nZXQoKSktPmxvYWRlcigpLnBvbGljeUNoZWNrZXIoKS4qZnVuY3Rpb24pKFBvbGljeVVzZSk7
CisgICAgICAgIGZ1bmN0aW9uKFBvbGljeVVzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICBOU0RpY3Rpb25hcnkgKnZhbHVlcyA9IG1ha2VGb3JtRmllbGRWYWx1ZXNEaWN0aW9uYXJ5
KGZvcm1TdGF0ZS5nZXQoKSk7Ci0gICAgQ2FsbEZvcm1EZWxlZ2F0ZShnZXRXZWJWaWV3KG1fd2Vi
RnJhbWUuZ2V0KCkpLCBAc2VsZWN0b3IoZnJhbWU6c291cmNlRnJhbWU6d2lsbFN1Ym1pdEZvcm06
d2l0aFZhbHVlczpzdWJtaXNzaW9uTGlzdGVuZXI6KSwgbV93ZWJGcmFtZS5nZXQoKSwga2l0KGZv
cm1TdGF0ZS0+c291cmNlRG9jdW1lbnQoKS0+ZnJhbWUoKSksIGtpdChmb3JtU3RhdGUtPmZvcm0o
KSksIHZhbHVlcywgc2V0VXBQb2xpY3lMaXN0ZW5lcihmdW5jdGlvbikuZ2V0KCkpOworICAgIENh
bGxGb3JtRGVsZWdhdGUoZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKSwgQHNlbGVjdG9yKGZy
YW1lOnNvdXJjZUZyYW1lOndpbGxTdWJtaXRGb3JtOndpdGhWYWx1ZXM6c3VibWlzc2lvbkxpc3Rl
bmVyOiksIG1fd2ViRnJhbWUuZ2V0KCksIGtpdChmb3JtU3RhdGUtPnNvdXJjZURvY3VtZW50KCkt
PmZyYW1lKCkpLCBraXQoZm9ybVN0YXRlLT5mb3JtKCkpLCB2YWx1ZXMsIHNldFVwUG9saWN5TGlz
dGVuZXIoc3RkOjptb3ZlKGZ1bmN0aW9uKSkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpyZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUoRG9jdW1lbnRMb2FkZXIqIGxvYWRl
cikKQEAgLTIwMTMsNyArMjAxMCw3IEBAIFBhc3NSZWZQdHI8RnJhbWVOZXR3b3JraW5nQ29udGV4
dD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0CiAgICAgICAg
IHJldHVybiBuaWw7CiAKICAgICBfZnJhbWUgPSBmcmFtZTsKLSAgICBfcG9saWN5RnVuY3Rpb24g
PSBwb2xpY3lGdW5jdGlvbjsKKyAgICBfcG9saWN5RnVuY3Rpb24gPSBzdGQ6Om1vdmUocG9saWN5
RnVuY3Rpb24pOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0yMDM3LDExICsyMDM0LDExIEBA
IFBhc3NSZWZQdHI8RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgRnJhbWVQb2xpY3lGdW5jdGlvbiBwb2xpY3lGdW5jdGlvbiA9IF9wb2xpY3lGdW5j
dGlvbjsKKyAgICBGcmFtZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0aW9uID0gc3RkOjptb3Zl
KF9wb2xpY3lGdW5jdGlvbik7CiAgICAgX3BvbGljeUZ1bmN0aW9uID0gbnVsbHB0cjsKIAogICAg
IEFTU0VSVChwb2xpY3lGdW5jdGlvbik7Ci0gICAgKGZyYW1lLT5sb2FkZXIoKS5wb2xpY3lDaGVj
a2VyKCkuKnBvbGljeUZ1bmN0aW9uKShhY3Rpb24pOworICAgIHBvbGljeUZ1bmN0aW9uKGFjdGlv
bik7CiB9CiAKIC0gKHZvaWQpaWdub3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggZGM1YmQxZTM3
ZGEwMWM0MTU0NzU4ZGUyOTcwYjc2MzEzODc1ZDY4Mi4uNGVmZTQ1MWZlNzNmNGRlNTIwN2M0Nzcx
NWJhYzY0MWYwMGUwNmUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtNTU4LDcgKzU1OCw3IEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoU2hvdygpCiAgICAgICAgIHVpLT53
ZWJWaWV3U2hvdyh3ZWJWaWV3KTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9u
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xp
Y3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uKQogewog
ICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7CiAgICAgRnJhbWUq
IGNvcmVGcmFtZSA9IGNvcmUobV93ZWJGcmFtZSk7CkBAIC01NzMsMTAgKzU3MywxMCBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZy
YW1lUG9saWN5RnVuY3Rpb24gZgogICAgIGlmIChTVUNDRUVERUQocG9saWN5RGVsZWdhdGUtPmRl
Y2lkZVBvbGljeUZvck1JTUVUeXBlKHdlYlZpZXcsIEJTdHJpbmcocmVzcG9uc2UubWltZVR5cGUo
KSksIHVybFJlcXVlc3QuZ2V0KCksIG1fd2ViRnJhbWUsIHNldFVwUG9saWN5TGlzdGVuZXIoZnVu
Y3Rpb24pLmdldCgpKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIChjb3JlRnJhbWUtPmxvYWRl
cigpLnBvbGljeUNoZWNrZXIoKS4qZnVuY3Rpb24pKFBvbGljeVVzZSk7CisgICAgZnVuY3Rpb24o
UG9saWN5VXNlKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwg
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJh
bWVOYW1lKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUs
IGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uKQog
ewogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7CiAgICAgRnJh
bWUqIGNvcmVGcmFtZSA9IGNvcmUobV93ZWJGcmFtZSk7CkBAIC01OTIsMTAgKzU5MiwxMCBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRv
d0FjdGlvbihGcmFtZVBvbGljeUZ1bgogICAgIGlmIChTVUNDRUVERUQocG9saWN5RGVsZWdhdGUt
PmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih3ZWJWaWV3LCBhY3Rpb25JbmZvcm1hdGlv
bi5nZXQoKSwgdXJsUmVxdWVzdC5nZXQoKSwgQlN0cmluZyhmcmFtZU5hbWUpLCBzZXRVcFBvbGlj
eUxpc3RlbmVyKGZ1bmN0aW9uKS5nZXQoKSkpKQogICAgICAgICByZXR1cm47CiAKLSAgICAoY29y
ZUZyYW1lLT5sb2FkZXIoKS5wb2xpY3lDaGVja2VyKCkuKmZ1bmN0aW9uKShQb2xpY3lVc2UpOwor
ICAgIGZ1bmN0aW9uKFBvbGljeVVzZSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1bmN0
aW9uIGZ1bmN0aW9uLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSkKK3Zv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSwgRnJhbWVQb2xp
Y3lGdW5jdGlvbiBmdW5jdGlvbikKIHsKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gbV93ZWJGcmFt
ZS0+d2ViVmlldygpOwogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKG1fd2ViRnJhbWUpOwpA
QCAtNjExLDcgKzYxMSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1CiAgICAgaWYgKFNVQ0NF
RURFRChwb2xpY3lEZWxlZ2F0ZS0+ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih3ZWJW
aWV3LCBhY3Rpb25JbmZvcm1hdGlvbi5nZXQoKSwgdXJsUmVxdWVzdC5nZXQoKSwgbV93ZWJGcmFt
ZSwgc2V0VXBQb2xpY3lMaXN0ZW5lcihmdW5jdGlvbikuZ2V0KCkpKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgKGNvcmVGcmFtZS0+bG9hZGVyKCkucG9saWN5Q2hlY2tlcigpLipmdW5jdGlvbiko
UG9saWN5VXNlKTsKKyAgICBmdW5jdGlvbihQb2xpY3lVc2UpOwogfQogCiB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKQpAQCAtNjI5LDcgKzYyOSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChQYXNzUmVmUHRyPFdlYkNvcmU6OkZv
cm1TCiB7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFN1Ym1p
dEZvcm0oRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+
IGZvcm1TdGF0ZSkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFN1Ym1p
dEZvcm0oUGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSwgRnJhbWVQb2xpY3lGdW5jdGlv
biBmdW5jdGlvbikKIHsKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmll
dygpOwogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKG1fd2ViRnJhbWUpOwpAQCAtNjM4LDcg
KzYzOCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFN1Ym1pdEZv
cm0oRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwKICAgICBDT01QdHI8SVdlYkZvcm1EZWxl
Z2F0ZT4gZm9ybURlbGVnYXRlOwogCiAgICAgaWYgKEZBSUxFRCh3ZWJWaWV3LT5mb3JtRGVsZWdh
dGUoJmZvcm1EZWxlZ2F0ZSkpKSB7Ci0gICAgICAgIChjb3JlRnJhbWUtPmxvYWRlcigpLnBvbGlj
eUNoZWNrZXIoKS4qZnVuY3Rpb24pKFBvbGljeVVzZSk7CisgICAgICAgIGZ1bmN0aW9uKFBvbGlj
eVVzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY1Nyw3ICs2NTcsNyBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKEZyYW1lUG9saWN5
RnVuY3Rpb24gZnVuY3Rpb24sCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1FOiBBZGQg
YSBzYW5lIGRlZmF1bHQgaW1wbGVtZW50YXRpb24KLSAgICAoY29yZUZyYW1lLT5sb2FkZXIoKS5w
b2xpY3lDaGVja2VyKCkuKmZ1bmN0aW9uKShQb2xpY3lVc2UpOworICAgIGZ1bmN0aW9uKFBvbGlj
eVVzZSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldE1haW5Eb2N1bWVudEVy
cm9yKERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCkBAIC0xMzc5
LDUgKzEzNzksNSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpyZWNlaXZlZFBvbGljeURl
Y2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24pCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUo
bV93ZWJGcmFtZSk7CiAgICAgQVNTRVJUKGNvcmVGcmFtZSk7CiAKLSAgICAoY29yZUZyYW1lLT5s
b2FkZXIoKS5wb2xpY3lDaGVja2VyKCkuKmZ1bmN0aW9uKShhY3Rpb24pOworICAgIGZ1bmN0aW9u
KGFjdGlvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGE4ZGI2
MDdmYWI0M2RmYzY3N2EwNjEzMTYwNjhhMWFkYjAwMjA3ZmEuLjNjZTNlMDc5OGRiMDlkNmMwYWJh
YTlkOGRlOWM4MTlmZGI4ZDNhZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CkBAIC02MTgsMTQgKzYxOCwxNCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aFNob3coKQogICAgIHdlYlBhZ2UtPnNob3coKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZVBvbGljeUZ1bmN0aW9u
IGZ1bmN0aW9uLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0
aW9uKQogewogICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgaWYg
KCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIXJlcXVlc3QudXJsKCkuc3Ry
aW5nKCkpIHsKLSAgICAgICAgKG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5wb2xpY3lD
aGVja2VyKCkuKmZ1bmN0aW9uKShQb2xpY3lVc2UpOworICAgICAgICBmdW5jdGlvbihQb2xpY3lV
c2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02MzQsMTEgKzYzNCwxMSBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZy
YW1lUG9saWN5RnVuY3Rpb24gZgogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KICAg
ICBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb24gcG9saWN5ID0gd2ViUGFnZS0+aW5qZWN0ZWRCdW5k
bGVQb2xpY3lDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh3ZWJQYWdlLCBtX2ZyYW1l
LCByZXNwb25zZSwgcmVxdWVzdCwgdXNlckRhdGEpOwogICAgIGlmIChwb2xpY3kgPT0gV0tCdW5k
bGVQYWdlUG9saWN5QWN0aW9uVXNlKSB7Ci0gICAgICAgIChtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+
bG9hZGVyKCkucG9saWN5Q2hlY2tlcigpLipmdW5jdGlvbikoUG9saWN5VXNlKTsKKyAgICAgICAg
ZnVuY3Rpb24oUG9saWN5VXNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2
NF90IGxpc3RlbmVySUQgPSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKGZ1bmN0aW9uKTsK
KyAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihz
dGQ6Om1vdmUoZnVuY3Rpb24pKTsKICAgICBib29sIHJlY2VpdmVkUG9saWN5QWN0aW9uOwogICAg
IHVpbnQ2NF90IHBvbGljeUFjdGlvbjsKICAgICB1aW50NjRfdCBkb3dubG9hZElEOwpAQCAtNjUy
LDcgKzY1Miw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yUmVzcG9uc2UoRnJhbWVQb2xpY3lGdW5jdGlvbiBmCiAgICAgICAgIG1fZnJhbWUtPmRp
ZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBzdGF0aWNfY2FzdDxQb2xpY3lBY3Rp
b24+KHBvbGljeUFjdGlvbiksIGRvd25sb2FkSUQpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZVBvbGlj
eUZ1bmN0aW9uIGZ1bmN0aW9uLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0
aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRl
PiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lKQordm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2
aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbikKIHsKICAgICBXZWJQYWdlKiB3
ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghd2ViUGFnZSkKQEAgLTY2NSwyNyAr
NjY1LDI3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1lUG9saWN5RnVuCiAgICAgLy8gTm90aWZ5IHRoZSBidW5k
bGUgY2xpZW50LgogICAgIFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBwb2xpY3kgPSB3ZWJQYWdl
LT5pbmplY3RlZEJ1bmRsZVBvbGljeUNsaWVudCgpLmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0Fj
dGlvbih3ZWJQYWdlLCBtX2ZyYW1lLCBhY3Rpb24uZ2V0KCksIHJlcXVlc3QsIGZyYW1lTmFtZSwg
dXNlckRhdGEpOwogICAgIGlmIChwb2xpY3kgPT0gV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uVXNl
KSB7Ci0gICAgICAgIChtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkucG9saWN5Q2hlY2tl
cigpLipmdW5jdGlvbikoUG9saWN5VXNlKTsKKyAgICAgICAgZnVuY3Rpb24oUG9saWN5VXNlKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogCi0gICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IG1f
ZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXIoZnVuY3Rpb24pOworICAgIHVpbnQ2NF90IGxpc3Rl
bmVySUQgPSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKHN0ZDo6bW92ZShmdW5jdGlvbikp
OwogCiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCiAgICAgd2ViUGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24obV9mcmFt
ZS0+ZnJhbWVJRCgpLCBhY3Rpb24tPm5hdmlnYXRpb25UeXBlKCksIGFjdGlvbi0+bW9kaWZpZXJz
KCksIGFjdGlvbi0+bW91c2VCdXR0b24oKSwgcmVxdWVzdCwgZnJhbWVOYW1lLCBsaXN0ZW5lcklE
LCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKIH0K
IAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24sIGNvbnN0IE5hdmlnYXRp
b25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZp
Z2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUsIEZyYW1lUG9saWN5RnVuY3Rp
b24gZnVuY3Rpb24pCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsK
ICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEFsd2F5cyBpZ25v
cmUgcmVxdWVzdHMgd2l0aCBlbXB0eSBVUkxzLiAKLSAgICBpZiAocmVxdWVzdC5pc0VtcHR5KCkp
IHsgCi0gICAgICAgIChtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkucG9saWN5Q2hlY2tl
cigpLipmdW5jdGlvbikoUG9saWN5SWdub3JlKTsgCi0gICAgICAgIHJldHVybjsgCisgICAgaWYg
KHJlcXVlc3QuaXNFbXB0eSgpKSB7CisgICAgICAgIGZ1bmN0aW9uKFBvbGljeUlnbm9yZSk7Cisg
ICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBSZWZQdHI8QVBJT2JqZWN0PiB1c2VyRGF0YTsK
QEAgLTY5NSwxMSArNjk1LDExIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1CiAgICAgLy8gTm90
aWZ5IHRoZSBidW5kbGUgY2xpZW50LgogICAgIFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBwb2xp
Y3kgPSB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZVBvbGljeUNsaWVudCgpLmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24od2ViUGFnZSwgbV9mcmFtZSwgYWN0aW9uLmdldCgpLCByZXF1ZXN0
LCB1c2VyRGF0YSk7CiAgICAgaWYgKHBvbGljeSA9PSBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb25V
c2UpIHsKLSAgICAgICAgKG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5wb2xpY3lDaGVj
a2VyKCkuKmZ1bmN0aW9uKShQb2xpY3lVc2UpOworICAgICAgICBmdW5jdGlvbihQb2xpY3lVc2Up
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGxpc3RlbmVySUQg
PSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKGZ1bmN0aW9uKTsKKyAgICB1aW50NjRfdCBs
aXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihzdGQ6Om1vdmUoZnVuY3Rp
b24pKTsKICAgICBib29sIHJlY2VpdmVkUG9saWN5QWN0aW9uOwogICAgIHVpbnQ2NF90IHBvbGlj
eUFjdGlvbjsKICAgICB1aW50NjRfdCBkb3dubG9hZElEOwpAQCAtNzQ5LDcgKzc0OSw3IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChQYXNz
UmVmUHRyPEZvcm1TdGF0ZT4gcHJwCiAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVGb3JtQ2xp
ZW50KCkud2lsbFNlbmRTdWJtaXRFdmVudCh3ZWJQYWdlLCBmb3JtLCBtX2ZyYW1lLCBzb3VyY2VG
cmFtZSwgZm9ybVN0YXRlLT50ZXh0RmllbGRWYWx1ZXMoKSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0oRnJhbWVQb2xpY3lGdW5jdGlvbiBm
dW5jdGlvbiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IHBycEZvcm1TdGF0ZSkKK3ZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0oUGFzc1JlZlB0cjxGb3JtU3Rh
dGU+IHBycEZvcm1TdGF0ZSwgRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbikKIHsKICAgICBX
ZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghd2ViUGFnZSkKQEAg
LTc3MCw3ICs3NzAsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxT
dWJtaXRGb3JtKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24sCiAgICAgd2ViUGFnZS0+aW5q
ZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KCkud2lsbFN1Ym1pdEZvcm0od2ViUGFnZSwgZm9ybSwgbV9m
cmFtZSwgc291cmNlRnJhbWUsIHZhbHVlcywgdXNlckRhdGEpOwogCiAKLSAgICB1aW50NjRfdCBs
aXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihmdW5jdGlvbik7CisgICAg
dWludDY0X3QgbGlzdGVuZXJJRCA9IG1fZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXIoc3RkOjpt
b3ZlKGZ1bmN0aW9uKSk7CiAKICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OldpbGxTdWJtaXRGb3JtKG1fZnJhbWUtPmZyYW1lSUQoKSwgc291cmNlRnJhbWUtPmZyYW1l
SUQoKSwgdmFsdWVzLCBsaXN0ZW5lcklELCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rl
cih1c2VyRGF0YS5nZXQoKSkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRl
eCA4ZDNiZTk5ZTRjOWYwMzBmMTNiNjhlZDA2MTcyMzI4Y2Q5ZDU0ODc3Li42ZjgwYTUwNjcxMThh
ZmY4ZmUxMTc1YzA2ODZlYTQ3MTZiMGRiMWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCkBAIC05NiwxNSArOTYsMTUgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZy
YW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFNob3coKSBPVkVSUklERTsKICAg
ICAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJD
b3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYkNvcmU6OkZy
YW1lUG9saWN5RnVuY3Rpb24sIGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0
ZT4sIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYkNvcmU6OkZyYW1lUG9s
aWN5RnVuY3Rpb24sIGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4pIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNl
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3Qg
V2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPiwgY29uc3QgU3RyaW5nJiBmcmFtZU5h
bWUsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24pIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgV2ViQ29y
ZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFBh
c3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPiwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlv
bikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbFBvbGljeUNoZWNrKCkgT1ZFUlJJ
REU7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xp
Y3koY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIE9WRVJSSURFOwogICAgIAogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTZW5kU3VibWl0RXZlbnQoUGFzc1JlZlB0cjxXZWJDb3Jl
OjpGb3JtU3RhdGU+KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU3Vi
bWl0Rm9ybShXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uLCBQYXNzUmVmUHRyPFdlYkNvcmU6
OkZvcm1TdGF0ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTdWJt
aXRGb3JtKFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPiwgV2ViQ29yZTo6RnJhbWVQb2xp
Y3lGdW5jdGlvbikgT1ZFUlJJREU7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIHJldmVydFRvUHJv
dmlzaW9uYWxTdGF0ZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciopIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRNYWluRG9jdW1lbnRFcnJvcihXZWJDb3JlOjpEb2N1bWVudExvYWRlcios
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDhlNWEwMTRlMzQ0YjZl
NGYxNjQ5NTFjYTY3YmEzMDdhYjA5YzdhMDQuLmZmOTZmNmE3YjdhODRjN2NmYTAzNDRjMWUxOWZi
Mzk2NTExNDQ2MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcApAQCAtMjE2LDEzICsyMTYsMTIgQEAgdm9pZCBXZWJGcmFtZTo6ZGlkUmVjZWl2
ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGxpc3RlbmVySUQsIFBvbGljeUFjdGlvbiBhY3Rpb24K
IAogICAgIEFTU0VSVChtX3BvbGljeUZ1bmN0aW9uKTsKIAotICAgIEZyYW1lUG9saWN5RnVuY3Rp
b24gZnVuY3Rpb24gPSBtX3BvbGljeUZ1bmN0aW9uOworICAgIEZyYW1lUG9saWN5RnVuY3Rpb24g
ZnVuY3Rpb24gPSBzdGQ6Om1vdmUobV9wb2xpY3lGdW5jdGlvbik7CiAKICAgICBpbnZhbGlkYXRl
UG9saWN5TGlzdGVuZXIoKTsKIAogICAgIG1fcG9saWN5RG93bmxvYWRJRCA9IGRvd25sb2FkSUQ7
Ci0KLSAgICAobV9jb3JlRnJhbWUtPmxvYWRlcigpLnBvbGljeUNoZWNrZXIoKS4qZnVuY3Rpb24p
KGFjdGlvbik7CisgICAgZnVuY3Rpb24oYWN0aW9uKTsKIH0KIAogdm9pZCBXZWJGcmFtZTo6c3Rh
cnREb3dubG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213434</attachid>
            <date>2013-10-04 20:02:58 -0700</date>
            <delta_ts>2013-10-04 20:09:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122362-20131004200257.patch</filename>
            <type>text/plain</type>
            <size>51465</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2OTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmU4ZWU4OTlhNjRiZDQ4
OTdhMWRiMDZjYzc1MTE2YjY1MWE5MTc0OS4uM2Y2ZjZhNzk1ZDNkNzFmZTAyZDU3YjIyOTliODMx
ZDMwYzNlYTNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI3IEBACiAyMDEzLTEwLTA0ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgRnJhbWVQb2xpY3lG
dW5jdGlvbiBzaG91bGQgYmUgYW4gc3RkOjpmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBtYWtlcyBwb2xpY3kgY2FsbGJhY2sgaGFu
ZGxpbmcgc2ltcGxlciBpbnNpZGUgV2ViS2l0LgorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hXaWxsU3VibWl0Rm9ybSk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAg
ICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KToKKyAgICAgICAgKiBsb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xp
Y3kpOgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOZXdXaW5kb3dQb2xp
Y3kpOgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tDb250ZW50UG9saWN5
KToKKworMjAxMy0xMC0wNCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgor
CiAgICAgICAgIFJlbW92ZSBzb21lIHVubmVlZGVkIGNvZGUgZnJvbSBXaWRnZXRNYWMKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjM1NQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9D
aGFuZ2VMb2cKaW5kZXggZmY0YWZhNzIzN2RiOTc5YmQ2NDZiMzE0NTM2NWRlY2U4ZDRhMGFmOC4u
ZjJiNjYzODE5OTQyNTQ5NjE0YmFiOGIzNDVjZTQ1NGY1MGIzZDdmNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE4IEBACisyMDEzLTEwLTA0ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNj
YUBhcHBsZS5jb20+CisKKyAgICAgICAgRnJhbWVQb2xpY3lGdW5jdGlvbiBzaG91bGQgYmUgYW4g
c3RkOjpmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTIyMzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6Y2FsbFBvbGljeUZ1bmN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaFdpbGxTdWJtaXRG
b3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERl
Y2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEVmbC5oOgorCiAyMDEzLTEwLTAzICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmVtb3ZlIHNob3VsZFJ1YmJlckJhbmRJbkRpcmVjdGlvbiBmcm9tIHRoZSBXS0J1
bmRsZVBhZ2VVSUNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDJjMzY0NzYyNzc0ZTZmODRiZGM2
NDVhYTdlY2Q2NmE0NjMzMWVjODUuLmJjNjQwNTcwZDUwNThhNDQ5NzVlZTIzNjg4YTAxZDNiMGM3
YmViMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMy0xMC0wNCAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEZyYW1lUG9saWN5
RnVuY3Rpb24gc2hvdWxkIGJlIGFuIHN0ZDo6ZnVuY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjM2MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hXaWxsU3VibWl0Rm9ybSk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oOgorICAgICAgICAq
IHdlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5jcHA6CisgICAgICAgICh3ZWJraXRfd2Vi
X3BvbGljeV9kZWNpc2lvbl91c2UpOgorICAgICAgICAod2Via2l0X3dlYl9wb2xpY3lfZGVjaXNp
b25faWdub3JlKToKKyAgICAgICAgKHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2Rvd25sb2Fk
KToKKwogMjAxMy0xMC0wMyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJlbW92ZSBzaG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rpb24gZnJvbSB0aGUgV0tCdW5kbGVQYWdl
VUlDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAyNTg2NmRlNTZhMTg4NDZmZGI4ZmMwZTczYTll
OTM4ZTdlY2ZmMWIzLi44YzM4NmIzODk3NTdmMzMyZjZiM2U5NmI3YmMyYjkzMTQ2OTM5NGJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTkgQEAKIDIwMTMtMTAtMDQgIEFuZGVycyBDYXJs
c3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAorICAgICAgICBGcmFtZVBvbGljeUZ1bmN0aW9u
IHNob3VsZCBiZSBhbiBzdGQ6OmZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIzNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNw
b25zZSk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xp
Y3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybSk6CisKKzIwMTMtMTAtMDQgIEFu
ZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKwogICAgICAgICBSZW1vdmUgc29t
ZSB1bm5lZWRlZCBjb2RlIGZyb20gV2lkZ2V0TWFjCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIzNTUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IGQwMzEx
NjI2ZmRjMGU5NjEwNjM3MmZjZmUyMTQ3ZTk2YWFjZmZjODUuLmQ1ZWRlYWNmYTY3NzZiNTc4NWUy
NzVkOTM2YTAxYWQ0OTI4ZTBkY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAxMy0xMC0wNCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAg
ICAgIEZyYW1lUG9saWN5RnVuY3Rpb24gc2hvdWxkIGJlIGFuIHN0ZDo6ZnVuY3Rpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjM2MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAoV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAg
ICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2ls
bFN1Ym1pdEZvcm0pOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJlY2VpdmVkUG9s
aWN5RGVjaXNpb24pOgorCiAyMDEzLTEwLTAzICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmVtb3ZlIHNob3VsZFJ1YmJlckJhbmRJbkRpcmVjdGlvbiBmcm9tIHRoZSBX
S0J1bmRsZVBhZ2VVSUNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGZhOWY4MzI3YjY1MzliMGVhOGZkZmMy
ZWFkYmY5YzgyZDBmZDU0Y2YuLjdhNDNkZWY4MTc2OTY0YTVmODIwOGU0OWU5M2VjZjIxOWE2Zjhm
YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMy0xMC0wNCAgQW5kZXJzIENhcmxz
c29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEZyYW1lUG9saWN5RnVuY3Rpb24g
c2hvdWxkIGJlIGFuIHN0ZDo6ZnVuY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyMjM2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmRpZFJl
Y2VpdmVQb2xpY3lEZWNpc2lvbik6CisKIDIwMTMtMTAtMDQgIExvcmVuem8gVGlsdmUgIDxsdGls
dmVAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBFbmFibGUgdGV4dCBlZGl0aW9uIFVuZG9P
cGVyYXRpb25zIHN1cHBvcnQgaW4gV2ViS2l0MgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmNwcAppbmRleCBlZjYwMmQ2NjEyNmM1MGM5ZDMwMGRkYjQ4OWMwNjMxNThkOGI2OGU2Li4z
NzAyNzJjNzJjZTRhYzRmNzlkZjZlZTA1M2UwZGJlNzFhZWY3ZDg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMTE0LDExICsxMTQsMTEgQEAgdm9pZCBFbXB0eUNo
cm9tZUNsaWVudDo6cnVuT3BlblBhbmVsKEZyYW1lKiwgUGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4p
CiB7CiB9CiAKLXZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xp
Y3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiwgY29uc3QgTmF2aWdhdGlv
bkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwg
Y29uc3QgU3RyaW5nJikKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgY29uc3QgU3RyaW5nJiwg
RnJhbWVQb2xpY3lGdW5jdGlvbikKIHsKIH0KIAotdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oRnJhbWVQb2xpY3lGdW5j
dGlvbiwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBh
c3NSZWZQdHI8Rm9ybVN0YXRlPikKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24m
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIEZyYW1lUG9s
aWN5RnVuY3Rpb24pCiB7CiB9CiAKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIEVtcHR5RnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChQYXNzUmVmUHRyPEZvcm1T
dGF0ZT4pCiB7CiB9CiAKLXZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxs
U3VibWl0Rm9ybShGcmFtZVBvbGljeUZ1bmN0aW9uLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pCit2
b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0oUGFzc1Jl
ZlB0cjxGb3JtU3RhdGU+LCBGcmFtZVBvbGljeUZ1bmN0aW9uKQogewogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggYTY3NzI5ZTA4YTlhMzZiNGM3ZWI1NjQzNWViYmY2
MjkwZmNmOGE2My4uOTIwMzc0MWExYjlkZGMzOWQ1OTMyMDc3YzY3YWE0ZDI2MjU5ZWY3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApAQCAtMjYxLDE1ICsyNjEsMTUgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgRnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBOYXZpZ2F0
aW9uQWN0aW9uJikgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFNob3co
KSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNl
KEZyYW1lUG9saWN5RnVuY3Rpb24sIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiwgY29uc3QgTmF2aWdhdGlvbkFj
dGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgY29u
c3QgU3RyaW5nJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1bmN0aW9uLCBjb25zdCBOYXZpZ2F0
aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRnJh
bWVQb2xpY3lGdW5jdGlvbikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIGNvbnN0IFN0cmlu
ZyYsIEZyYW1lUG9saWN5RnVuY3Rpb24pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlv
biYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgRnJhbWVQ
b2xpY3lGdW5jdGlvbikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbFBvbGljeUNo
ZWNrKCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBv
bGljeShjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hXaWxsU2VuZFN1Ym1pdEV2ZW50KFBhc3NSZWZQdHI8Rm9ybVN0YXRlPikgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0oRnJhbWVQb2xpY3lGdW5jdGlv
biwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hXaWxsU3VibWl0Rm9ybShQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIEZyYW1lUG9saWN5RnVu
Y3Rpb24pIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIHJldmVydFRvUHJvdmlzaW9uYWxT
dGF0ZShEb2N1bWVudExvYWRlciopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRNYWluRG9jdW1l
bnRFcnJvcihEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGU0NDA5NjVhMzRiZWM1MmFlZmZhMjlk
N2JiOTA5MzE0YzczNDFlMjAuLjFiOTA1MzQ0ZmRjMWRiN2ZlMDk3N2UzZjU4MzY1OTMyZGYyMDRh
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMjg2OSwxMCArMjg2
OSwxNCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xp
Y3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzcwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgaWYgKGZvcm1TdGF0ZSkKLSAgICAgICAgbV9jbGllbnQuZGlzcGF0Y2hXaWxsU3VibWl0
Rm9ybSgmUG9saWN5Q2hlY2tlcjo6Y29udGludWVMb2FkQWZ0ZXJXaWxsU3VibWl0Rm9ybSwgZm9y
bVN0YXRlKTsKLSAgICBlbHNlCisgICAgaWYgKCFmb3JtU3RhdGUpIHsKICAgICAgICAgY29udGlu
dWVMb2FkQWZ0ZXJXaWxsU3VibWl0Rm9ybSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgbV9jbGllbnQuZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShmb3JtU3RhdGUsIFt0aGlzXShQb2xp
Y3lBY3Rpb24gYWN0aW9uKSB7CisgICAgICAgIHBvbGljeUNoZWNrZXIoKS5jb250aW51ZUxvYWRB
ZnRlcldpbGxTdWJtaXRGb3JtKGFjdGlvbik7CisgICAgfSk7CiB9CiAKIHZvaWQgRnJhbWVMb2Fk
ZXI6OmNhbGxDb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeSh2b2lkKiBhcmd1bWVudCwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggZTE1Yjc5NmQ5
YjQwMDIzOGI4MjRlN2NiY2U2ZDcyNTRlOWYyOWEzNy4uZjkxYWM1NTlhODc4MjBhMDk2OTYxMzkx
ODc5NGEzMTJkOWJmNGNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAi
TGF5b3V0TWlsZXN0b25lcy5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCisj
aW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIApAQCAtOTcsNyArOTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAgICAgY2xhc3MgV2lkZ2V0OwogCi0gICAgdHlwZWRl
ZiB2b2lkIChQb2xpY3lDaGVja2VyOjoqRnJhbWVQb2xpY3lGdW5jdGlvbikoUG9saWN5QWN0aW9u
KTsKKyAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZCAoUG9saWN5QWN0aW9uKT4gRnJhbWVQ
b2xpY3lGdW5jdGlvbjsKIAogICAgIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50IHsKICAgICBwdWJs
aWM6CkBAIC0xNjMsOSArMTY0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0
dWFsIEZyYW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpID0g
MDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoU2hvdygpID0gMDsKIAotICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZVBvbGljeUZ1
bmN0aW9uLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikg
PSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5k
b3dBY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgY29uc3QgU3RyaW5n
JiBmcmFtZU5hbWUpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1bmN0aW9uLCBjb25zdCBOYXZpZ2F0
aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+
KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGcmFt
ZVBvbGljeUZ1bmN0aW9uKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgRnJhbWVQb2xpY3lGdW5jdGlvbikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25B
Y3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIEZy
YW1lUG9saWN5RnVuY3Rpb24pID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGNhbmNlbFBvbGlj
eUNoZWNrKCkgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFVuYWJsZVRvSW1w
bGVtZW50UG9saWN5KGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CkBAIC0xNzMsNyArMTc0LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxs
UmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlUmVxdWVzdCopIHsgfQogCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTZW5kU3VibWl0RXZlbnQoUGFzc1JlZlB0cjxGb3JtU3Rh
dGU+KSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKEZy
YW1lUG9saWN5RnVuY3Rpb24sIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPikgPSAwOworICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShQYXNzUmVmUHRyPEZvcm1TdGF0ZT4s
IEZyYW1lUG9saWN5RnVuY3Rpb24pID0gMDsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcmV2ZXJ0
VG9Qcm92aXNpb25hbFN0YXRlKERvY3VtZW50TG9hZGVyKikgPSAwOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgc2V0TWFpbkRvY3VtZW50RXJyb3IoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJj
ZUVycm9yJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNo
ZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCmluZGV4
IGFlMjRhNDVlMWNkZjA4MTVjNzJhMTRjOTdlNDhiY2IxNTAwNjZjYWEuLmYwOTEzNzM1OTlhYjRi
NGI3ZDQ4MzZjYzg5NWM0ODRlMDM3Nzk2OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Qb2xpY3lDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5
Q2hlY2tlci5jcHAKQEAgLTk1LDggKzk1LDkgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05h
dmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBEb2N1bWUKICAg
ICBtX2NhbGxiYWNrLnNldChyZXF1ZXN0LCBmb3JtU3RhdGUuZ2V0KCksIGZ1bmN0aW9uLCBhcmd1
bWVudCk7CiAKICAgICBtX2RlbGVnYXRlSXNEZWNpZGluZ05hdmlnYXRpb25Qb2xpY3kgPSB0cnVl
OwotICAgIG1fZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbigmUG9saWN5Q2hlY2tlcjo6Y29udGludWVBZnRlck5hdmlnYXRpb25Q
b2xpY3ksCi0gICAgICAgIGFjdGlvbiwgcmVxdWVzdCwgZm9ybVN0YXRlKTsKKyAgICBtX2ZyYW1l
LT5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24oYWN0aW9uLCByZXF1ZXN0LCBmb3JtU3RhdGUsIFt0aGlzXShQb2xpY3lBY3Rpb24gYWN0aW9u
KSB7CisgICAgICAgIGNvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGFjdGlvbik7CisgICAg
fSk7CiAgICAgbV9kZWxlZ2F0ZUlzRGVjaWRpbmdOYXZpZ2F0aW9uUG9saWN5ID0gZmFsc2U7CiB9
CiAKQEAgLTExMCwxNSArMTExLDE3IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOZXdXaW5k
b3dQb2xpY3koY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBOZXdXaW5kCiAgICAgICAg
IHJldHVybiBjb250aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeShQb2xpY3lJZ25vcmUpOwogCiAg
ICAgbV9jYWxsYmFjay5zZXQocmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFtZU5hbWUsIGFjdGlvbiwg
ZnVuY3Rpb24sIGFyZ3VtZW50KTsKLSAgICBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5kaXNw
YXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbigmUG9saWN5Q2hlY2tlcjo6Y29udGlu
dWVBZnRlck5ld1dpbmRvd1BvbGljeSwKLSAgICAgICAgYWN0aW9uLCByZXF1ZXN0LCBmb3JtU3Rh
dGUsIGZyYW1lTmFtZSk7CisgICAgbV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oYWN0aW9uLCByZXF1ZXN0LCBmb3JtU3RhdGUs
IGZyYW1lTmFtZSwgW3RoaXNdKFBvbGljeUFjdGlvbiBhY3Rpb24pIHsKKyAgICAgICAgY29udGlu
dWVBZnRlck5ld1dpbmRvd1BvbGljeShhY3Rpb24pOworICAgIH0pOwogfQogCiB2b2lkIFBvbGlj
eUNoZWNrZXI6OmNoZWNrQ29udGVudFBvbGljeShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgQ29udGVudFBvbGljeURlY2lzaW9uRnVuY3Rpb24gZnVuY3Rpb24sIHZvaWQqIGFyZ3Vt
ZW50KQogewogICAgIG1fY2FsbGJhY2suc2V0KGZ1bmN0aW9uLCBhcmd1bWVudCk7Ci0gICAgbV9m
cmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZSgm
UG9saWN5Q2hlY2tlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3ksCi0gICAgICAgIHJlc3Bv
bnNlLCBtX2ZyYW1lLT5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpLT5yZXF1ZXN0KCkp
OworICAgIG1fZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2UocmVzcG9uc2UsIG1fZnJhbWUtPmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVy
KCktPnJlcXVlc3QoKSwgW3RoaXNdKFBvbGljeUFjdGlvbiBhY3Rpb24pIHsKKyAgICAgICAgY29u
dGludWVBZnRlckNvbnRlbnRQb2xpY3koYWN0aW9uKTsKKyAgICB9KTsKIH0KIAogdm9pZCBQb2xp
Y3lDaGVja2VyOjpjYW5jZWxDaGVjaygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAKaW5kZXggNzhjMzQzZThk
MDM1MjE0NTcxYWJmMDc5OTcyMGM3ZmFiN2IxM2ZmOS4uODgyMTNmNDNlNGM1ODEyZTFlN2M0ZTA0
ZDIwYTI4NjQxMzA3NzU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcApAQCAtMTA2LDkgKzEwNiw3IEBA
IFN0cmluZyBGcmFtZUxvYWRlckNsaWVudEVmbDo6dXNlckFnZW50KGNvbnN0IFVSTCYpCiAKIHZv
aWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmNhbGxQb2xpY3lGdW5jdGlvbihGcmFtZVBvbGljeUZ1
bmN0aW9uIGZ1bmN0aW9uLCBQb2xpY3lBY3Rpb24gYWN0aW9uKQogewotICAgIEZyYW1lKiBmID0g
RVdLUHJpdmF0ZTo6Y29yZUZyYW1lKG1fZnJhbWUpOwotICAgIEFTU0VSVChmKTsKLSAgICAoZi0+
bG9hZGVyKCkucG9saWN5Q2hlY2tlcigpLipmdW5jdGlvbikoYWN0aW9uKTsKKyAgICBmdW5jdGlv
bihhY3Rpb24pOwogfQogCiBXVEY6OlBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IEZyYW1lTG9h
ZGVyQ2xpZW50RWZsOjpjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKQEAgLTExOSw3
ICsxMTcsNyBAQCBXVEY6OlBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IEZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdAogICAgIHJldHVybiBsb2FkZXIucmVs
ZWFzZSgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaFdpbGxTdWJt
aXRGb3JtKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24sIFBhc3NSZWZQdHI8Rm9ybVN0YXRl
PikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0oUGFz
c1JlZlB0cjxGb3JtU3RhdGU+LCBGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uKQogewogICAg
IC8vIEZJWE1FOiBUaGlzIGlzIHN1cmVseSB0b28gc2ltcGxlCiAgICAgQVNTRVJUKGZ1bmN0aW9u
KTsKQEAgLTI4Nyw3ICsyODUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRj
aERpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bgogICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAicmVzb3VyY2UscmVzcG9uc2UscmVj
ZWl2ZWQiLCAmcmVzcG9uc2UpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNw
YXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24s
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlc291cmNlUmVxdWVzdCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBGcmFtZVBvbGljeUZ1bmN0aW9u
IGZ1bmN0aW9uKQogewogICAgIC8vIHdlIG5lZWQgdG8gY2FsbCBkaXJlY3RseSBoZXJlIChjdXJy
ZW50bHkgY2FsbFBvbGljeUZ1bmN0aW9uIGRvZXMgdGhhdCEpCiAgICAgQVNTRVJUKGZ1bmN0aW9u
KTsKQEAgLTMwOSw3ICszMDcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRj
aERlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZyYW1lUG9saWN5RnVuY3Rpb24gZgogICAgICAgICBj
YWxsUG9saWN5RnVuY3Rpb24oZnVuY3Rpb24sIFBvbGljeURvd25sb2FkKTsKIH0KIAotdm9pZCBG
cmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rp
b24oRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1T
dGF0ZT4sIGNvbnN0IFN0cmluZyYpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRj
aERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0
YXRlPiwgY29uc3QgU3RyaW5nJiwgRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbikKIHsKICAg
ICBBU1NFUlQoZnVuY3Rpb24pOwogICAgIEFTU0VSVChtX2ZyYW1lKTsKQEAgLTMyNiw3ICszMjQs
NyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbihGcmFtZVBvbGljeUZ1bgogICAgIGNhbGxQb2xpY3lGdW5jdGlvbihmdW5j
dGlvbiwgUG9saWN5VXNlKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0
Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVu
Y3Rpb24sIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXNvdXJjZVJlcXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPikKK3ZvaWQgRnJhbWVM
b2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihj
b25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVz
b3VyY2VSZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIEZyYW1lUG9saWN5RnVuY3Rpb24g
ZnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKGZ1bmN0aW9uKTsKICAgICBBU1NFUlQobV9mcmFtZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRFZmwuaAppbmRleCBiMGQ2ZmMyNjRhY2EwY2ExYmExNmI0ZTFlZTAwYWZlNTZmOTAz
ODU4Li44Njg2ZWU5NWQyNTdhYzBhM2JkMmZhYzA2ZGE5MjZlOGNkODkyYjI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
RWZsLmgKQEAgLTExMSwxNSArMTExLDE1IEBAIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50RWZsIDog
cHVibGljIEZyYW1lTG9hZGVyQ2xpZW50IHsKICAgICB2aXJ0dWFsIEZyYW1lKiBkaXNwYXRjaENy
ZWF0ZVBhZ2UoY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYpOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaFNob3coKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBv
bGljeUZvclJlc3BvbnNlKEZyYW1lUG9saWN5RnVuY3Rpb24sIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiwgY29uc3Qg
TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFdURjo6UGFzc1JlZlB0
cjxGb3JtU3RhdGU+LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSk7Ci0gICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1bmN0
aW9uLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgV1RG
OjpQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lk
ZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBGcmFtZVBvbGljeUZ1bmN0aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFdURjo6UGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBjb25z
dCBTdHJpbmcmIGZyYW1lTmFtZSwgRnJhbWVQb2xpY3lGdW5jdGlvbik7CisgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0
aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgV1RGOjpQYXNzUmVmUHRyPEZvcm1T
dGF0ZT4sIEZyYW1lUG9saWN5RnVuY3Rpb24pOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxQb2xp
Y3lDaGVjaygpOwogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQ
b2xpY3koY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
V2lsbFNlbmRTdWJtaXRFdmVudChXVEY6OlBhc3NSZWZQdHI8Rm9ybVN0YXRlPikgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0oRnJhbWVQb2xpY3lGdW5jdGlvbiwg
V1RGOjpQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdp
bGxTdWJtaXRGb3JtKFdURjo6UGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBGcmFtZVBvbGljeUZ1bmN0
aW9uKTsKIAogICAgIHZpcnR1YWwgdm9pZCByZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUoRG9jdW1l
bnRMb2FkZXIqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TWFpbkRvY3VtZW50RXJyb3IoRG9j
dW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKaW5k
ZXggMTU4ZDkzYjBhNzE0YmE2ODlhNzRiOGJlNzVhMWU0ZGFiZjU0YjU1My4uNzZmZjUxYTUzNjE1
Yjk3MmU1YWE4NDdlMjk0NTBlOTU5Y2UxOGRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcApAQCAtMTUw
LDEzICsxNTAsMTMgQEAgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBG
cmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIKICAgICByZXR1cm4gbG9hZGVy
LnJlbGVhc2UoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3Vi
bWl0Rm9ybShGcmFtZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0aW9uLCBQYXNzUmVmUHRyPEZv
cm1TdGF0ZT4pCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTdWJtaXRGb3Jt
KFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgRnJhbWVQb2xpY3lGdW5jdGlvbiBwb2xpY3lGdW5jdGlv
bikKIHsKICAgICAvLyBGSVhNRTogVGhpcyBpcyBzdXJlbHkgdG9vIHNpbXBsZQogICAgIEFTU0VS
VChwb2xpY3lGdW5jdGlvbik7CiAgICAgaWYgKCFwb2xpY3lGdW5jdGlvbikKICAgICAgICAgcmV0
dXJuOwotICAgIChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS5wb2xpY3lDaGVja2VyKCkuKnBvbGlj
eUZ1bmN0aW9uKShQb2xpY3lVc2UpOworICAgIHBvbGljeUZ1bmN0aW9uKFBvbGljeVVzZSk7CiB9
CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKQEAgLTMzOSwx
NCArMzM5LDE0IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBsb2FkCiAgICAgZ19zaWduYWxfZW1pdF9i
eV9uYW1lKHdlYlZpZXcsICJyZXNvdXJjZS1yZXNwb25zZS1yZWNlaXZlZCIsIG1fZnJhbWUsIHdl
YlJlc291cmNlLCBuZXR3b3JrUmVzcG9uc2UuZ2V0KCkpOwogfQogCi12b2lkIEZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZyYW1lUG9saWN5RnVuY3Rp
b24gcG9saWN5RnVuY3Rpb24sIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBGcmFt
ZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0aW9uKQogewogICAgIEFTU0VSVChwb2xpY3lGdW5j
dGlvbik7CiAgICAgaWYgKCFwb2xpY3lGdW5jdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKHJlc291cmNlUmVxdWVzdC5pc051bGwoKSkgewotICAgICAgICAoY29yZShtX2ZyYW1lKS0+
bG9hZGVyKCkucG9saWN5Q2hlY2tlcigpLipwb2xpY3lGdW5jdGlvbikoUG9saWN5SWdub3JlKTsK
KyAgICAgICAgcG9saWN5RnVuY3Rpb24oUG9saWN5SWdub3JlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtNDE1LDE0ICs0MTUsMTQgQEAgc3RhdGljIFdlYktpdFdlYk5hdmlnYXRpb25B
Y3Rpb24qIGdldE5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWMKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCkp
OwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbihGcmFtZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0aW9uLCBjb25zdCBO
YXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VS
ZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lKQor
dm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dB
Y3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlc291cmNlUmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBjb25zdCBTdHJpbmcm
IGZyYW1lTmFtZSwgRnJhbWVQb2xpY3lGdW5jdGlvbiBwb2xpY3lGdW5jdGlvbikKIHsKICAgICBB
U1NFUlQocG9saWN5RnVuY3Rpb24pOwogICAgIGlmICghcG9saWN5RnVuY3Rpb24pCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChyZXNvdXJjZVJlcXVlc3QuaXNOdWxsKCkpIHsKLSAgICAgICAg
KGNvcmUobV9mcmFtZSktPmxvYWRlcigpLnBvbGljeUNoZWNrZXIoKS4qcG9saWN5RnVuY3Rpb24p
KFBvbGljeUlnbm9yZSk7CisgICAgICAgIHBvbGljeUZ1bmN0aW9uKFBvbGljeUlnbm9yZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ0MiwxNyArNDQyLDE3IEBAIHZvaWQgRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1l
UG9saWN5RnVuY3RpCiAgICAgLy8gRklYTUU6IEkgdGhpbmsgUXQgdmVyc2lvbiBtYXJzaGFscyB0
aGlzIHRvIGFub3RoZXIgdGhyZWFkIHNvIHdoZW4gd2UKICAgICAvLyBoYXZlIG11bHRpLXRocmVh
ZGVkIGRvd25sb2FkLCB3ZSBtaWdodCBuZWVkIHRvIGRvIHRoZSBzYW1lCiAgICAgaWYgKCFpc0hh
bmRsZWQpCi0gICAgICAgIChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS5wb2xpY3lDaGVja2VyKCku
KnBvbGljeUZ1bmN0aW9uKShQb2xpY3lVc2UpOworICAgICAgICBwb2xpY3lGdW5jdGlvbihQb2xp
Y3lVc2UpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiBwb2xpY3lGdW5jdGlvbiwg
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
c291cmNlUmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+KQordm9pZCBGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmln
YXRpb25BY3Rpb24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVl
c3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgRnJhbWVQb2xpY3lGdW5jdGlvbiBwb2xpY3lGdW5j
dGlvbikKIHsKICAgICBBU1NFUlQocG9saWN5RnVuY3Rpb24pOwogICAgIGlmICghcG9saWN5RnVu
Y3Rpb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChyZXNvdXJjZVJlcXVlc3QuaXNOdWxs
KCkpIHsKLSAgICAgICAgKGNvcmUobV9mcmFtZSktPmxvYWRlcigpLnBvbGljeUNoZWNrZXIoKS4q
cG9saWN5RnVuY3Rpb24pKFBvbGljeUlnbm9yZSk7CisgICAgICAgIHBvbGljeUZ1bmN0aW9uKFBv
bGljeUlnbm9yZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ2OSw3ICs0NjksNyBA
QCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24oRnJhbWVQb2xpY3lGdW5jdAogICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJW
aWV3LCAibmF2aWdhdGlvbi1yZXF1ZXN0ZWQiLCBtX2ZyYW1lLCByZXF1ZXN0LmdldCgpLCAmcmVz
cG9uc2UpOwogCiAgICAgaWYgKHJlc3BvbnNlID09IFdFQktJVF9OQVZJR0FUSU9OX1JFU1BPTlNF
X0lHTk9SRSkgewotICAgICAgICAoY29yZShtX2ZyYW1lKS0+bG9hZGVyKCkucG9saWN5Q2hlY2tl
cigpLipwb2xpY3lGdW5jdGlvbikoUG9saWN5SWdub3JlKTsKKyAgICAgICAgcG9saWN5RnVuY3Rp
b24oUG9saWN5SWdub3JlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaCBi
L1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgK
aW5kZXggZjU2ZmI1NGJmNjBlNDcwNWQyOThkMjQzMzI4ZDZlY2E1NWE1OTQwYy4uZGI0YjYxNTk3
YjQzYmYzNTU2NjZlYTJiNmZkYmY0M2U5MTY5ZDY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCkBAIC05OCwx
NSArOTgsMTUgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgV2ViQ29yZTo6
RnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9u
Jik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFNob3coKTsKIAotICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFtZVBv
bGljeUZ1bmN0aW9uLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9u
LCBjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4sIGNvbnN0IFdU
Rjo6U3RyaW5nJiBmcmFtZU5hbWUpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24s
IGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPik7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBX
ZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRp
b25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXVEY6OlBhc3NSZWZQ
dHI8V2ViQ29yZTo6Rm9ybVN0YXRlPiwgY29uc3QgV1RGOjpTdHJpbmcmIGZyYW1lTmFtZSwgV2Vi
Q29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlv
bkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdURjo6UGFzc1JlZlB0
cjxXZWJDb3JlOjpGb3JtU3RhdGU+LCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uKTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGNhbmNlbFBvbGljeUNoZWNrKCk7CiAKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTZW5kU3Vi
bWl0RXZlbnQoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4pIHsgfQotICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShXZWJDb3JlOjpGcmFtZVBvbGlj
eUZ1bmN0aW9uLCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPik7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKFdURjo6UGFzc1JlZlB0cjxXZWJD
b3JlOjpGb3JtU3RhdGU+LCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uKTsKIAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgcmV2ZXJ0VG9Qcm92aXNpb25hbFN0YXRlKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyKikgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRNYWluRG9jdW1lbnRFcnJvcihX
ZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNp
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicG9saWN5ZGVjaXNp
b24uY3BwCmluZGV4IDEzNjU3M2QxYzllOWJlZTVkNmUzNTU4OWFlMWMzZTJlMzRlMmJhMDIuLjky
Y2UzYjZkZmY0OWEyZTAwNzE5YWMyYTAyZjNmNjg2OTExODIyOTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmNwcApAQCAtODUs
NyArODUsNyBAQCB2b2lkIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX3VzZShXZWJLaXRXZWJQ
b2xpY3lEZWNpc2lvbiogZGVjaXNpb24pCiAgICAgV2ViS2l0V2ViUG9saWN5RGVjaXNpb25Qcml2
YXRlKiBwcml2ID0gZGVjaXNpb24tPnByaXY7CiAKICAgICBpZiAoIXByaXYtPmlzQ2FuY2VsbGVk
KQotICAgICAgICAoY29yZShwcml2LT5mcmFtZSktPmxvYWRlcigpLnBvbGljeUNoZWNrZXIoKS4q
KHByaXYtPmZyYW1lUG9saWN5RnVuY3Rpb24pKShXZWJDb3JlOjpQb2xpY3lVc2UpOworICAgICAg
ICBmcmFtZVBvbGljeUZ1bmN0aW9uKFdlYkNvcmU6OlBvbGljeVVzZSk7CiB9CiAKIC8qKgpAQCAt
MTAzLDcgKzEwMyw3IEBAIHZvaWQgd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25faWdub3JlKFdl
YktpdFdlYlBvbGljeURlY2lzaW9uKiBkZWNpc2lvbikKICAgICBXZWJLaXRXZWJQb2xpY3lEZWNp
c2lvblByaXZhdGUqIHByaXYgPSBkZWNpc2lvbi0+cHJpdjsKIAogICAgIGlmICghcHJpdi0+aXND
YW5jZWxsZWQpCi0gICAgICAgIChjb3JlKHByaXYtPmZyYW1lKS0+bG9hZGVyKCkucG9saWN5Q2hl
Y2tlcigpLioocHJpdi0+ZnJhbWVQb2xpY3lGdW5jdGlvbikpKFdlYkNvcmU6OlBvbGljeUlnbm9y
ZSk7CisgICAgICAgIGZyYW1lUG9saWN5RnVuY3Rpb24oV2ViQ29yZTo6UG9saWN5SWdub3JlKTsK
IH0KIAogLyoqCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCB3ZWJraXRfd2ViX3BvbGljeV9kZWNp
c2lvbl9kb3dubG9hZChXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiogZGVjaXNpb24pCiAgICAgV2Vi
S2l0V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlKiBwcml2ID0gZGVjaXNpb24tPnByaXY7CiAKICAg
ICBpZiAoIXByaXYtPmlzQ2FuY2VsbGVkKQotICAgICAgICAoY29yZShwcml2LT5mcmFtZSktPmxv
YWRlcigpLnBvbGljeUNoZWNrZXIoKS4qKHByaXYtPmZyYW1lUG9saWN5RnVuY3Rpb24pKShXZWJD
b3JlOjpQb2xpY3lEb3dubG9hZCk7CisgICAgICAgIGZyYW1lUG9saWN5RnVuY3Rpb24oV2ViQ29y
ZTo6UG9saWN5RG93bmxvYWQpOwogfQogCiB2b2lkIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9u
X2NhbmNlbChXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiogZGVjaXNpb24pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApp
bmRleCAxYmZkZDE5NjY1MDliYWZiMzA0OWEzN2Y4MDQ1OTE3ZjdhNjM2MGUzLi42YmQ1ODFjNDNk
NGExZDRjYWMzNWE0NzM1YTY2NTlhYWM2YzY5NjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTExMiwx
OCArMTEyLDE1IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpGcmFtZSogZGlzcGF0
Y2hDcmVhdGVQYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hTaG93KCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFtZVBvbGlj
eUZ1bmN0aW9uLCAKLSAgICAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0
aW9uLAotICAgICAgICBjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+LCBj
b25zdCBXVEY6OlN0cmluZyYgZnJhbWVOYW1lKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYkNvcmU6OkZyYW1lUG9s
aWN5RnVuY3Rpb24sCi0gICAgICAgIGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1T
dGF0ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZv
clJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3Qg
V2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPiwgY29uc3QgV1RGOjpTdHJpbmcmIGZy
YW1lTmFtZSwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBX
ZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+LCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1
bmN0aW9uKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUG9saWN5Q2hlY2soKSBP
VkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50UG9s
aWN5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBPVkVSUklERTsKIAogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaFdpbGxTZW5kU3VibWl0RXZlbnQoUGFzc1JlZlB0cjxXZWJDb3JlOjpG
b3JtU3RhdGU+KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU3VibWl0
Rm9ybShXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZv
cm1TdGF0ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTdWJtaXRG
b3JtKFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPiwgV2ViQ29yZTo6RnJhbWVQb2xpY3lG
dW5jdGlvbikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmV2ZXJ0VG9Qcm92aXNpb25h
bFN0YXRlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHNldE1haW5Eb2N1bWVudEVycm9yKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA3
MmM1MjdjYTY5ZTQ0NDMzNmMwN2ZlZDIwZWE1YTQ1M2RkZWNhODM4Li5kZDUyNjM1OWQzYTIxZDg1
ZjdmYTViMWE1ZDA3ZTY4ZjBjOTBkNWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtNzQzLDggKzc0
Myw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoU2hvdygpCiAgICAgW1t3
ZWJWaWV3IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3U2hvdzp3ZWJWaWV3XTsKIH0KIAot
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZShGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uLAotICAgIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24pCiB7CiAgICAgV2ViVmlldyAqd2ViVmlldyA9
IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAKQEAgLTc1MiwyOSArNzUxLDI3IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2Uo
RnJhbWVQb2xpY3lGdW5jdGlvbiBmCiAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpZGVQb2xp
Y3lGb3JNSU1FVHlwZTpyZXNwb25zZS5taW1lVHlwZSgpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChVcGRhdGVIVFRQ
Qm9keSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lOm1f
d2ViRnJhbWUuZ2V0KCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpc2lvbkxp
c3RlbmVyOnNldFVwUG9saWN5TGlzdGVuZXIoZnVuY3Rpb24pLmdldCgpXTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZWNpc2lvbkxpc3RlbmVyOnNldFVwUG9saWN5TGlzdGVuZXIo
c3RkOjptb3ZlKGZ1bmN0aW9uKSkuZ2V0KCldOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZVBvbGljeUZ1
bmN0aW9uIGZ1bmN0aW9uLAotICAgIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0
YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25B
Y3Rpb24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRy
PEZvcm1TdGF0ZT4gZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgRnJhbWVQb2xp
Y3lGdW5jdGlvbiBmdW5jdGlvbikKIHsKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2ViVmll
dyhtX3dlYkZyYW1lLmdldCgpKTsKICAgICBbW3dlYlZpZXcgX3BvbGljeURlbGVnYXRlRm9yd2Fy
ZGVyXSB3ZWJWaWV3OndlYlZpZXcKICAgICAgICAgICAgIGRlY2lkZVBvbGljeUZvck5ld1dpbmRv
d0FjdGlvbjphY3Rpb25EaWN0aW9uYXJ5KGFjdGlvbiwgZm9ybVN0YXRlKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KFVwZGF0
ZUhUVFBCb2R5KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RnJhbWVOYW1lOmZy
YW1lTmFtZQotICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpc2lvbkxpc3RlbmVyOnNldFVw
UG9saWN5TGlzdGVuZXIoZnVuY3Rpb24pLmdldCgpXTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVjaXNpb25MaXN0ZW5lcjpzZXRVcFBvbGljeUxpc3RlbmVyKHN0ZDo6bW92ZShmdW5jdGlv
bikpLmdldCgpXTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24s
Ci0gICAgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUpCit2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUsIEZyYW1lUG9saWN5RnVuY3Rp
b24gZnVuY3Rpb24pCiB7CiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJG
cmFtZS5nZXQoKSk7CiAgICAgW1t3ZWJWaWV3IF9wb2xpY3lEZWxlZ2F0ZUZvcndhcmRlcl0gd2Vi
Vmlldzp3ZWJWaWV3CiAgICAgICAgICAgICAgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbjphY3Rpb25EaWN0aW9uYXJ5KGFjdGlvbiwgZm9ybVN0YXRlKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoVXBk
YXRlSFRUUEJvZHkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
cmFtZTptX3dlYkZyYW1lLmdldCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVj
aXNpb25MaXN0ZW5lcjpzZXRVcFBvbGljeUxpc3RlbmVyKGZ1bmN0aW9uKS5nZXQoKV07CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaXNpb25MaXN0ZW5lcjpzZXRVcFBvbGljeUxp
c3RlbmVyKHN0ZDo6bW92ZShmdW5jdGlvbikpLmdldCgpXTsKIH0KIAogdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6Y2FuY2VsUG9saWN5Q2hlY2soKQpAQCAtODExLDE2ICs4MDgsMTYgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU2VuZFN1Ym1pdEV2ZW50KFBhc3NS
ZWZQdHI8V2ViQ29yZTo6Rm9ybVMKICAgICBDYWxsRm9ybURlbGVnYXRlKGdldFdlYlZpZXcobV93
ZWJGcmFtZS5nZXQoKSksIEBzZWxlY3Rvcih3aWxsU2VuZFN1Ym1pdEV2ZW50VG9Gb3JtOmluRnJh
bWU6d2l0aFZhbHVlczopLCBmb3JtRWxlbWVudCwgbV93ZWJGcmFtZS5nZXQoKSwgdmFsdWVzKTsK
IH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShG
cmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0
YXRlKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShQ
YXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlLCBGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0
aW9uKQogewogICAgIGlkIDxXZWJGb3JtRGVsZWdhdGU+IGZvcm1EZWxlZ2F0ZSA9IFtnZXRXZWJW
aWV3KG1fd2ViRnJhbWUuZ2V0KCkpIF9mb3JtRGVsZWdhdGVdOwogICAgIGlmICghZm9ybURlbGVn
YXRlKSB7Ci0gICAgICAgIChjb3JlKG1fd2ViRnJhbWUuZ2V0KCkpLT5sb2FkZXIoKS5wb2xpY3lD
aGVja2VyKCkuKmZ1bmN0aW9uKShQb2xpY3lVc2UpOworICAgICAgICBmdW5jdGlvbihQb2xpY3lV
c2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgTlNEaWN0aW9uYXJ5ICp2YWx1ZXMg
PSBtYWtlRm9ybUZpZWxkVmFsdWVzRGljdGlvbmFyeShmb3JtU3RhdGUuZ2V0KCkpOwotICAgIENh
bGxGb3JtRGVsZWdhdGUoZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKSwgQHNlbGVjdG9yKGZy
YW1lOnNvdXJjZUZyYW1lOndpbGxTdWJtaXRGb3JtOndpdGhWYWx1ZXM6c3VibWlzc2lvbkxpc3Rl
bmVyOiksIG1fd2ViRnJhbWUuZ2V0KCksIGtpdChmb3JtU3RhdGUtPnNvdXJjZURvY3VtZW50KCkt
PmZyYW1lKCkpLCBraXQoZm9ybVN0YXRlLT5mb3JtKCkpLCB2YWx1ZXMsIHNldFVwUG9saWN5TGlz
dGVuZXIoZnVuY3Rpb24pLmdldCgpKTsKKyAgICBDYWxsRm9ybURlbGVnYXRlKGdldFdlYlZpZXco
bV93ZWJGcmFtZS5nZXQoKSksIEBzZWxlY3RvcihmcmFtZTpzb3VyY2VGcmFtZTp3aWxsU3VibWl0
Rm9ybTp3aXRoVmFsdWVzOnN1Ym1pc3Npb25MaXN0ZW5lcjopLCBtX3dlYkZyYW1lLmdldCgpLCBr
aXQoZm9ybVN0YXRlLT5zb3VyY2VEb2N1bWVudCgpLT5mcmFtZSgpKSwga2l0KGZvcm1TdGF0ZS0+
Zm9ybSgpKSwgdmFsdWVzLCBzZXRVcFBvbGljeUxpc3RlbmVyKHN0ZDo6bW92ZShmdW5jdGlvbikp
LmdldCgpKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6cmV2ZXJ0VG9Qcm92aXNp
b25hbFN0YXRlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCkBAIC0yMDEzLDcgKzIwMTAsNyBAQCBQ
YXNzUmVmUHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpj
cmVhdGVOZXR3b3JraW5nQ29udGV4dAogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgX2ZyYW1l
ID0gZnJhbWU7Ci0gICAgX3BvbGljeUZ1bmN0aW9uID0gcG9saWN5RnVuY3Rpb247CisgICAgX3Bv
bGljeUZ1bmN0aW9uID0gc3RkOjptb3ZlKHBvbGljeUZ1bmN0aW9uKTsKIAogICAgIHJldHVybiBz
ZWxmOwogfQpAQCAtMjAzNywxMSArMjAzNCwxMSBAQCBQYXNzUmVmUHRyPEZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVOZXR3b3JraW5nQ29udGV4dAog
ICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIEZyYW1lUG9saWN5RnVuY3Rp
b24gcG9saWN5RnVuY3Rpb24gPSBfcG9saWN5RnVuY3Rpb247CisgICAgRnJhbWVQb2xpY3lGdW5j
dGlvbiBwb2xpY3lGdW5jdGlvbiA9IHN0ZDo6bW92ZShfcG9saWN5RnVuY3Rpb24pOwogICAgIF9w
b2xpY3lGdW5jdGlvbiA9IG51bGxwdHI7CiAKICAgICBBU1NFUlQocG9saWN5RnVuY3Rpb24pOwot
ICAgIChmcmFtZS0+bG9hZGVyKCkucG9saWN5Q2hlY2tlcigpLipwb2xpY3lGdW5jdGlvbikoYWN0
aW9uKTsKKyAgICBwb2xpY3lGdW5jdGlvbihhY3Rpb24pOwogfQogCiAtICh2b2lkKWlnbm9yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCmluZGV4IGRjNWJkMWUzN2RhMDFjNDE1NDc1OGRlMjk3MGI3NjMxMzg3
NWQ2ODIuLjRlZmU0NTFmZTczZjRkZTUyMDdjNDc3MTViYWM2NDFmMDBlMDZlM2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKQEAgLTU1OCw3ICs1NTgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaFNob3coKQogICAgICAgICB1aS0+d2ViVmlld1Nob3cod2ViVmlldyk7CiB9CiAK
LXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UoRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3ZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRnJh
bWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbikKIHsKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gbV93
ZWJGcmFtZS0+d2ViVmlldygpOwogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKG1fd2ViRnJh
bWUpOwpAQCAtNTczLDEwICs1NzMsMTAgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZVBvbGljeUZ1bmN0aW9uIGYKICAgICBp
ZiAoU1VDQ0VFREVEKHBvbGljeURlbGVnYXRlLT5kZWNpZGVQb2xpY3lGb3JNSU1FVHlwZSh3ZWJW
aWV3LCBCU3RyaW5nKHJlc3BvbnNlLm1pbWVUeXBlKCkpLCB1cmxSZXF1ZXN0LmdldCgpLCBtX3dl
YkZyYW1lLCBzZXRVcFBvbGljeUxpc3RlbmVyKGZ1bmN0aW9uKS5nZXQoKSkpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICAoY29yZUZyYW1lLT5sb2FkZXIoKS5wb2xpY3lDaGVja2VyKCkuKmZ1bmN0
aW9uKShQb2xpY3lVc2UpOworICAgIGZ1bmN0aW9uKFBvbGljeVVzZSk7CiB9CiAKLXZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9u
KEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24sIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFj
dGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0
ZT4gZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSkKK3ZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5h
dmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQ
YXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwg
RnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbikKIHsKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0g
bV93ZWJGcmFtZS0+d2ViVmlldygpOwogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKG1fd2Vi
RnJhbWUpOwpAQCAtNTkyLDEwICs1OTIsMTAgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVQb2xpY3lGdW4KICAg
ICBpZiAoU1VDQ0VFREVEKHBvbGljeURlbGVnYXRlLT5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dB
Y3Rpb24od2ViVmlldywgYWN0aW9uSW5mb3JtYXRpb24uZ2V0KCksIHVybFJlcXVlc3QuZ2V0KCks
IEJTdHJpbmcoZnJhbWVOYW1lKSwgc2V0VXBQb2xpY3lMaXN0ZW5lcihmdW5jdGlvbikuZ2V0KCkp
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgKGNvcmVGcmFtZS0+bG9hZGVyKCkucG9saWN5Q2hl
Y2tlcigpLipmdW5jdGlvbikoUG9saWN5VXNlKTsKKyAgICBmdW5jdGlvbihQb2xpY3lVc2UpOwog
fQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwgY29uc3QgTmF2aWdh
dGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBhc3NS
ZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFj
dGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBhc3NSZWZQdHI8
Rm9ybVN0YXRlPiBmb3JtU3RhdGUsIEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24pCiB7CiAg
ICAgV2ViVmlldyogd2ViVmlldyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKICAgICBGcmFtZSog
Y29yZUZyYW1lID0gY29yZShtX3dlYkZyYW1lKTsKQEAgLTYxMSw3ICs2MTEsNyBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24oRnJhbWVQb2xpY3lGdQogICAgIGlmIChTVUNDRUVERUQocG9saWN5RGVsZWdhdGUtPmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24od2ViVmlldywgYWN0aW9uSW5mb3JtYXRpb24uZ2V0
KCksIHVybFJlcXVlc3QuZ2V0KCksIG1fd2ViRnJhbWUsIHNldFVwUG9saWN5TGlzdGVuZXIoZnVu
Y3Rpb24pLmdldCgpKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIChjb3JlRnJhbWUtPmxvYWRl
cigpLnBvbGljeUNoZWNrZXIoKS4qZnVuY3Rpb24pKFBvbGljeVVzZSk7CisgICAgZnVuY3Rpb24o
UG9saWN5VXNlKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hVbmFi
bGVUb0ltcGxlbWVudFBvbGljeShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAgLTYyOSw3
ICs2MjksNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTZW5kU3Vi
bWl0RXZlbnQoUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtUwogewogfQogCi12b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKEZyYW1lUG9saWN5RnVuY3Rpb24g
ZnVuY3Rpb24sIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUpCit2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKFBhc3NSZWZQdHI8Rm9ybVN0YXRl
PiBmb3JtU3RhdGUsIEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24pCiB7CiAgICAgV2ViVmll
dyogd2ViVmlldyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKICAgICBGcmFtZSogY29yZUZyYW1l
ID0gY29yZShtX3dlYkZyYW1lKTsKQEAgLTYzOCw3ICs2MzgsNyBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVu
Y3Rpb24sCiAgICAgQ09NUHRyPElXZWJGb3JtRGVsZWdhdGU+IGZvcm1EZWxlZ2F0ZTsKIAogICAg
IGlmIChGQUlMRUQod2ViVmlldy0+Zm9ybURlbGVnYXRlKCZmb3JtRGVsZWdhdGUpKSkgewotICAg
ICAgICAoY29yZUZyYW1lLT5sb2FkZXIoKS5wb2xpY3lDaGVja2VyKCkuKmZ1bmN0aW9uKShQb2xp
Y3lVc2UpOworICAgICAgICBmdW5jdGlvbihQb2xpY3lVc2UpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC02NTcsNyArNjU3LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hXaWxsU3VibWl0Rm9ybShGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uLAogICAgICAg
ICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogQWRkIGEgc2FuZSBkZWZhdWx0IGltcGxlbWVudGF0
aW9uCi0gICAgKGNvcmVGcmFtZS0+bG9hZGVyKCkucG9saWN5Q2hlY2tlcigpLipmdW5jdGlvbiko
UG9saWN5VXNlKTsKKyAgICBmdW5jdGlvbihQb2xpY3lVc2UpOwogfQogCiB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpzZXRNYWluRG9jdW1lbnRFcnJvcihEb2N1bWVudExvYWRlciosIGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQpAQCAtMTM3OSw1ICsxMzc5LDUgQEAgdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9u
KQogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKG1fd2ViRnJhbWUpOwogICAgIEFTU0VSVChj
b3JlRnJhbWUpOwogCi0gICAgKGNvcmVGcmFtZS0+bG9hZGVyKCkucG9saWN5Q2hlY2tlcigpLipm
dW5jdGlvbikoYWN0aW9uKTsKKyAgICBmdW5jdGlvbihhY3Rpb24pOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgK
aW5kZXggNTFiNjJkNmFmY2UxNDAyYjdkNzg2MzcxNzkzYmE4MzI2Yjk2ZGM5Ny4uMDZmMGUyN2Qw
YmY2MTJiZDM4ZGFhNjE0NzFkMDY1MzE2NjQ1ZmQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC05Nyw5
ICs5Nyw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2Fk
KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTGF5b3V0KFdlYkNvcmU6
OkxheW91dE1pbGVzdG9uZXMpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRv
d0FjdGlvbihXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uLCBjb25zdCBXZWJDb3JlOjpOYXZp
Z2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpGb3JtU3RhdGU+LCBjb25zdCBXVEY6OlN0cmluZyYgZnJhbWVOYW1lKSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uKFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24sIGNvbnN0IFdlYkNvcmU6Ok5hdmln
YXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRy
PFdlYkNvcmU6OkZvcm1TdGF0ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1
bmN0aW9uKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRl
PiwgY29uc3QgV1RGOjpTdHJpbmcmIGZyYW1lTmFtZSwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5j
dGlvbikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+
LCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgY2FuY2VsUG9saWN5Q2hlY2soKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
KSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggYThkYjYw
N2ZhYjQzZGZjNjc3YTA2MTMxNjA2OGExYWRiMDAyMDdmYS4uM2NlM2UwNzk4ZGIwOWQ2YzBhYmFh
OWQ4ZGU5YzgxOWZkYjhkM2FmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
QEAgLTYxOCwxNCArNjE4LDE0IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
U2hvdygpCiAgICAgd2ViUGFnZS0+c2hvdygpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZyYW1lUG9saWN5RnVuY3Rpb24g
ZnVuY3Rpb24sIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERl
Y2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rp
b24pCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAo
IXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghcmVxdWVzdC51cmwoKS5zdHJp
bmcoKSkgewotICAgICAgICAobV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnBvbGljeUNo
ZWNrZXIoKS4qZnVuY3Rpb24pKFBvbGljeVVzZSk7CisgICAgICAgIGZ1bmN0aW9uKFBvbGljeVVz
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTYzNCwxMSArNjM0LDExIEBAIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoRnJh
bWVQb2xpY3lGdW5jdGlvbiBmCiAgICAgLy8gTm90aWZ5IHRoZSBidW5kbGUgY2xpZW50LgogICAg
IFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBwb2xpY3kgPSB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRs
ZVBvbGljeUNsaWVudCgpLmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKHdlYlBhZ2UsIG1fZnJhbWUs
IHJlc3BvbnNlLCByZXF1ZXN0LCB1c2VyRGF0YSk7CiAgICAgaWYgKHBvbGljeSA9PSBXS0J1bmRs
ZVBhZ2VQb2xpY3lBY3Rpb25Vc2UpIHsKLSAgICAgICAgKG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5s
b2FkZXIoKS5wb2xpY3lDaGVja2VyKCkuKmZ1bmN0aW9uKShQb2xpY3lVc2UpOworICAgICAgICBm
dW5jdGlvbihQb2xpY3lVc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0
X3QgbGlzdGVuZXJJRCA9IG1fZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXIoZnVuY3Rpb24pOwor
ICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKHN0
ZDo6bW92ZShmdW5jdGlvbikpOwogICAgIGJvb2wgcmVjZWl2ZWRQb2xpY3lBY3Rpb247CiAgICAg
dWludDY0X3QgcG9saWN5QWN0aW9uOwogICAgIHVpbnQ2NF90IGRvd25sb2FkSUQ7CkBAIC02NTIs
NyArNjUyLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xp
Y3lGb3JSZXNwb25zZShGcmFtZVBvbGljeUZ1bmN0aW9uIGYKICAgICAgICAgbV9mcmFtZS0+ZGlk
UmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIHN0YXRpY19jYXN0PFBvbGljeUFjdGlv
bj4ocG9saWN5QWN0aW9uKSwgZG93bmxvYWRJRCk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1lUG9saWN5
RnVuY3Rpb24gZnVuY3Rpb24sIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rp
b24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+
IGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUpCit2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZp
Z2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJh
bWVOYW1lLCBGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uKQogewogICAgIFdlYlBhZ2UqIHdl
YlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCF3ZWJQYWdlKQpAQCAtNjY1LDI3ICs2
NjUsMjcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVQb2xpY3lGdW4KICAgICAvLyBOb3RpZnkgdGhlIGJ1bmRs
ZSBjbGllbnQuCiAgICAgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIHBvbGljeSA9IHdlYlBhZ2Ut
PmluamVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0
aW9uKHdlYlBhZ2UsIG1fZnJhbWUsIGFjdGlvbi5nZXQoKSwgcmVxdWVzdCwgZnJhbWVOYW1lLCB1
c2VyRGF0YSk7CiAgICAgaWYgKHBvbGljeSA9PSBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb25Vc2Up
IHsKLSAgICAgICAgKG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5wb2xpY3lDaGVja2Vy
KCkuKmZ1bmN0aW9uKShQb2xpY3lVc2UpOworICAgICAgICBmdW5jdGlvbihQb2xpY3lVc2UpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCiAKLSAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbV9m
cmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihmdW5jdGlvbik7CisgICAgdWludDY0X3QgbGlzdGVu
ZXJJRCA9IG1fZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXIoc3RkOjptb3ZlKGZ1bmN0aW9uKSk7
CiAKICAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KICAgICB3ZWJQYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihtX2ZyYW1l
LT5mcmFtZUlEKCksIGFjdGlvbi0+bmF2aWdhdGlvblR5cGUoKSwgYWN0aW9uLT5tb2RpZmllcnMo
KSwgYWN0aW9uLT5tb3VzZUJ1dHRvbigpLCByZXF1ZXN0LCBmcmFtZU5hbWUsIGxpc3RlbmVySUQs
IEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOwogfQog
Ci12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwgY29uc3QgTmF2aWdhdGlv
bkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlKQordm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmln
YXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSwgRnJhbWVQb2xpY3lGdW5jdGlv
biBmdW5jdGlvbikKIHsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwog
ICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gQWx3YXlzIGlnbm9y
ZSByZXF1ZXN0cyB3aXRoIGVtcHR5IFVSTHMuIAotICAgIGlmIChyZXF1ZXN0LmlzRW1wdHkoKSkg
eyAKLSAgICAgICAgKG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5wb2xpY3lDaGVja2Vy
KCkuKmZ1bmN0aW9uKShQb2xpY3lJZ25vcmUpOyAKLSAgICAgICAgcmV0dXJuOyAKKyAgICBpZiAo
cmVxdWVzdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgZnVuY3Rpb24oUG9saWN5SWdub3JlKTsKKyAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOwpA
QCAtNjk1LDExICs2OTUsMTEgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKEZyYW1lUG9saWN5RnUKICAgICAvLyBOb3Rp
ZnkgdGhlIGJ1bmRsZSBjbGllbnQuCiAgICAgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIHBvbGlj
eSA9IHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KCkuZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbih3ZWJQYWdlLCBtX2ZyYW1lLCBhY3Rpb24uZ2V0KCksIHJlcXVlc3Qs
IHVzZXJEYXRhKTsKICAgICBpZiAocG9saWN5ID09IFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvblVz
ZSkgewotICAgICAgICAobV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnBvbGljeUNoZWNr
ZXIoKS4qZnVuY3Rpb24pKFBvbGljeVVzZSk7CisgICAgICAgIGZ1bmN0aW9uKFBvbGljeVVzZSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgbGlzdGVuZXJJRCA9
IG1fZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXIoZnVuY3Rpb24pOworICAgIHVpbnQ2NF90IGxp
c3RlbmVySUQgPSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKHN0ZDo6bW92ZShmdW5jdGlv
bikpOwogICAgIGJvb2wgcmVjZWl2ZWRQb2xpY3lBY3Rpb247CiAgICAgdWludDY0X3QgcG9saWN5
QWN0aW9uOwogICAgIHVpbnQ2NF90IGRvd25sb2FkSUQ7CkBAIC03NDksNyArNzQ5LDcgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU2VuZFN1Ym1pdEV2ZW50KFBhc3NS
ZWZQdHI8Rm9ybVN0YXRlPiBwcnAKICAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUZvcm1DbGll
bnQoKS53aWxsU2VuZFN1Ym1pdEV2ZW50KHdlYlBhZ2UsIGZvcm0sIG1fZnJhbWUsIHNvdXJjZUZy
YW1lLCBmb3JtU3RhdGUtPnRleHRGaWVsZFZhbHVlcygpKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1
bmN0aW9uLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gcHJwRm9ybVN0YXRlKQordm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShQYXNzUmVmUHRyPEZvcm1TdGF0
ZT4gcHJwRm9ybVN0YXRlLCBGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uKQogewogICAgIFdl
YlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCF3ZWJQYWdlKQpAQCAt
NzcwLDcgKzc3MCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFN1
Ym1pdEZvcm0oRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwKICAgICB3ZWJQYWdlLT5pbmpl
Y3RlZEJ1bmRsZUZvcm1DbGllbnQoKS53aWxsU3VibWl0Rm9ybSh3ZWJQYWdlLCBmb3JtLCBtX2Zy
YW1lLCBzb3VyY2VGcmFtZSwgdmFsdWVzLCB1c2VyRGF0YSk7CiAKIAotICAgIHVpbnQ2NF90IGxp
c3RlbmVySUQgPSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKGZ1bmN0aW9uKTsKKyAgICB1
aW50NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihzdGQ6Om1v
dmUoZnVuY3Rpb24pKTsKIAogICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6V2lsbFN1Ym1pdEZvcm0obV9mcmFtZS0+ZnJhbWVJRCgpLCBzb3VyY2VGcmFtZS0+ZnJhbWVJ
RCgpLCB2YWx1ZXMsIGxpc3RlbmVySUQsIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVy
KHVzZXJEYXRhLmdldCgpKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4
IDhkM2JlOTllNGM5ZjAzMGYxM2I2OGVkMDYxNzIzMjhjZDlkNTQ4NzcuLjZmODBhNTA2NzExOGFm
ZjhmZTExNzVjMDY4NmVhNDcxNmIwZGIxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgKQEAgLTk2LDE1ICs5NiwxNSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6RnJh
bWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoU2hvdygpIE9WRVJSSURFOwogICAg
IAotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdlYkNv
cmU6OkZyYW1lUG9saWN5RnVuY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oV2ViQ29yZTo6RnJh
bWVQb2xpY3lGdW5jdGlvbiwgY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRl
PiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2ViQ29yZTo6RnJhbWVQb2xp
Y3lGdW5jdGlvbiwgY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2Uo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24pIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBX
ZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFt
ZSwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBXZWJDb3Jl
OjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUGFz
c1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+LCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9u
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUG9saWN5Q2hlY2soKSBPVkVSUklE
RTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBvbGlj
eShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgT1ZFUlJJREU7CiAgICAgCiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChQYXNzUmVmUHRyPFdlYkNvcmU6
OkZvcm1TdGF0ZT4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTdWJt
aXRGb3JtKFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24sIFBhc3NSZWZQdHI8V2ViQ29yZTo6
Rm9ybVN0YXRlPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFN1Ym1p
dEZvcm0oUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+LCBXZWJDb3JlOjpGcmFtZVBvbGlj
eUZ1bmN0aW9uKSBPVkVSUklERTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgcmV2ZXJ0VG9Qcm92
aXNpb25hbFN0YXRlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIHNldE1haW5Eb2N1bWVudEVycm9yKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggOGU1YTAxNGUzNDRiNmU0
ZjE2NDk1MWNhNjdiYTMwN2FiMDljN2EwNC4uZmY5NmY2YTdiN2E4NGM3Y2ZhMDM0NGMxZTE5ZmIz
OTY1MTE0NDYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwCkBAIC0yMTYsMTMgKzIxNiwxMiBAQCB2b2lkIFdlYkZyYW1lOjpkaWRSZWNlaXZl
UG9saWN5RGVjaXNpb24odWludDY0X3QgbGlzdGVuZXJJRCwgUG9saWN5QWN0aW9uIGFjdGlvbgog
CiAgICAgQVNTRVJUKG1fcG9saWN5RnVuY3Rpb24pOwogCi0gICAgRnJhbWVQb2xpY3lGdW5jdGlv
biBmdW5jdGlvbiA9IG1fcG9saWN5RnVuY3Rpb247CisgICAgRnJhbWVQb2xpY3lGdW5jdGlvbiBm
dW5jdGlvbiA9IHN0ZDo6bW92ZShtX3BvbGljeUZ1bmN0aW9uKTsKIAogICAgIGludmFsaWRhdGVQ
b2xpY3lMaXN0ZW5lcigpOwogCiAgICAgbV9wb2xpY3lEb3dubG9hZElEID0gZG93bmxvYWRJRDsK
LQotICAgIChtX2NvcmVGcmFtZS0+bG9hZGVyKCkucG9saWN5Q2hlY2tlcigpLipmdW5jdGlvbiko
YWN0aW9uKTsKKyAgICBmdW5jdGlvbihhY3Rpb24pOwogfQogCiB2b2lkIFdlYkZyYW1lOjpzdGFy
dERvd25sb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213436</attachid>
            <date>2013-10-04 20:09:49 -0700</date>
            <delta_ts>2013-10-04 20:21:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122362-20131004200948.patch</filename>
            <type>text/plain</type>
            <size>51352</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2OTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDRiZDNhNTE3OGM3OWY5
YzhmZTQ4ZjRiYmMxMGRlODU3MzI5NDQ0Yi4uMjdiMTU4ZGM0YTIzNzdkNTE0NjA0NzRhOTIyZWE5
ODgxMTEyYzA2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEzLTEwLTA0ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgRnJhbWVQb2xpY3lG
dW5jdGlvbiBzaG91bGQgYmUgYW4gc3RkOjpmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBtYWtlcyBwb2xpY3kgY2FsbGJhY2sgaGFu
ZGxpbmcgc2ltcGxlciBpbnNpZGUgV2ViS2l0LgorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hXaWxsU3VibWl0Rm9ybSk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAg
ICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KToKKyAgICAgICAgKiBsb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xp
Y3kpOgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOZXdXaW5kb3dQb2xp
Y3kpOgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tDb250ZW50UG9saWN5
KToKKwogMjAxMy0xMC0wNCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBVc2UgbW9yZSByZWZlcmVuY2VzIGluc3RlYWQgb2YgcG9pbnRlcnMgaW4gRG9jdW1lbnRP
cmRlcmVkTWFwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggZmY0YWZhNzIzN2RiOTc5YmQ2NDZiMzE0NTM2
NWRlY2U4ZDRhMGFmOC4uZjJiNjYzODE5OTQyNTQ5NjE0YmFiOGIzNDVjZTQ1NGY1MGIzZDdmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEzLTEwLTA0ICBBbmRlcnMgQ2Fy
bHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgRnJhbWVQb2xpY3lGdW5jdGlv
biBzaG91bGQgYmUgYW4gc3RkOjpmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVm
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6Y2FsbFBvbGlj
eUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNw
YXRjaFdpbGxTdWJtaXRGb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
RWZsOjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0Fj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEVmbC5oOgorCiAyMDEzLTEwLTAzICBTYW0gV2VpbmlnICA8c2Ft
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHNob3VsZFJ1YmJlckJhbmRJbkRpcmVjdGlv
biBmcm9tIHRoZSBXS0J1bmRsZVBhZ2VVSUNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDJjMzY0
NzYyNzc0ZTZmODRiZGM2NDVhYTdlY2Q2NmE0NjMzMWVjODUuLmJjNjQwNTcwZDUwNThhNDQ5NzVl
ZTIzNjg4YTAxZDNiMGM3YmViMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAor
MjAxMy0xMC0wNCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAg
ICAgIEZyYW1lUG9saWN5RnVuY3Rpb24gc2hvdWxkIGJlIGFuIHN0ZDo6ZnVuY3Rpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjM2MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybSk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAg
KFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2lu
ZG93QWN0aW9uKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0
ay5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5jcHA6CisgICAg
ICAgICh3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl91c2UpOgorICAgICAgICAod2Via2l0X3dl
Yl9wb2xpY3lfZGVjaXNpb25faWdub3JlKToKKyAgICAgICAgKHdlYmtpdF93ZWJfcG9saWN5X2Rl
Y2lzaW9uX2Rvd25sb2FkKToKKwogMjAxMy0xMC0wMyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJlbW92ZSBzaG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rpb24gZnJvbSB0
aGUgV0tCdW5kbGVQYWdlVUlDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBkZTg1NGNkZjdmMGRk
OWRlOTc4NDQ2ZDAxMmI4NmM2ZTZmOTkwOGJhLi5jNjhmY2Q3MDViYTkzMGFjYTIwOGQ3ZGUwYWI2
M2EzZWVkMjUxMjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTMtMTAt
MDQgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBGcmFt
ZVBvbGljeUZ1bmN0aW9uIHNob3VsZCBiZSBhbiBzdGQ6OmZ1bmN0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIzNjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAoV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybSk6CisK
IDIwMTMtMTAtMDQgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIENo
YW5nZSBTY3JpcHREZWJ1Z1NlcnZlciB0byB1c2UgRGVidWdnZXJDYWxsRnJhbWUgaW5zdGVhZCBv
ZiBKYXZhU2NyaXB0Q2FsbEZyYW1lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IGQwMzExNjI2ZmRjMGU5
NjEwNjM3MmZjZmUyMTQ3ZTk2YWFjZmZjODUuLmQ1ZWRlYWNmYTY3NzZiNTc4NWUyNzVkOTM2YTAx
YWQ0OTI4ZTBkY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMy0xMC0w
NCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEZyYW1l
UG9saWN5RnVuY3Rpb24gc2hvdWxkIGJlIGFuIHN0ZDo6ZnVuY3Rpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjM2MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24pOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFN1Ym1pdEZv
cm0pOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJlY2VpdmVkUG9saWN5RGVjaXNp
b24pOgorCiAyMDEzLTEwLTAzICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmVtb3ZlIHNob3VsZFJ1YmJlckJhbmRJbkRpcmVjdGlvbiBmcm9tIHRoZSBXS0J1bmRsZVBh
Z2VVSUNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGE2NWJmNjRkZWIzZWRlNGY3YmIwYzVjZThmMDA3ODhl
NDU5Y2ZiNGEuLmE1YzAxZjEwYzdkNTE1N2VlNzdlNThiYjE2YWVjM2Y1ZTI4YTgyNGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMy0xMC0wNCAgQW5kZXJzIENhcmxzc29uICA8YW5k
ZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEZyYW1lUG9saWN5RnVuY3Rpb24gc2hvdWxkIGJl
IGFuIHN0ZDo6ZnVuY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyMjM2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERl
Y2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaFdpbGxTdWJtaXRGb3JtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmRpZFJlY2VpdmVQb2xp
Y3lEZWNpc2lvbik6CisKIDIwMTMtMTAtMDQgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBVbmlmeSBydWJiZXItYmFuZCBjb250cm9sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuY3BwCmluZGV4IGVmNjAyZDY2MTI2YzUwYzlkMzAwZGRiNDg5YzA2MzE1OGQ4
YjY4ZTYuLjM3MDI3MmM3MmNlNGFjNGY3OWRmNmVlMDUzZTBkYmU3MWFlZjdkODYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0xMTQsMTEgKzExNCwxMSBAQCB2b2lk
IEVtcHR5Q2hyb21lQ2xpZW50OjpydW5PcGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVD
aG9vc2VyPikKIHsKIH0KIAotdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZVBvbGljeUZ1bmN0aW9uLCBjb25zdCBO
YXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3Jt
U3RhdGU+LCBjb25zdCBTdHJpbmcmKQordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9u
JiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBjb25zdCBT
dHJpbmcmLCBGcmFtZVBvbGljeUZ1bmN0aW9uKQogewogfQogCi12b2lkIEVtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVBv
bGljeUZ1bmN0aW9uLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+KQordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlv
bkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwg
RnJhbWVQb2xpY3lGdW5jdGlvbikKIHsKIH0KIApAQCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQgRW1w
dHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU2VuZFN1Ym1pdEV2ZW50KFBhc3NSZWZQ
dHI8Rm9ybVN0YXRlPikKIHsKIH0KIAotdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaFdpbGxTdWJtaXRGb3JtKEZyYW1lUG9saWN5RnVuY3Rpb24sIFBhc3NSZWZQdHI8Rm9ybVN0
YXRlPikKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9y
bShQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIEZyYW1lUG9saWN5RnVuY3Rpb24pCiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCBhNjc3MjllMDhhOWEzNmI0YzdlYjU2
NDM1ZWJiZjYyOTBmY2Y4YTYzLi45MjAzNzQxYTFiOWRkYzM5ZDU5MzIwNzdjNjdhYTRkMjYyNTll
Zjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0yNjEsMTUgKzI2MSwx
NSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBGcmFtZSogZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0
IE5hdmlnYXRpb25BY3Rpb24mKSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoU2hvdygpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2UoRnJhbWVQb2xpY3lGdW5jdGlvbiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZVBvbGljeUZ1bmN0aW9uLCBjb25zdCBOYXZp
Z2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3Rh
dGU+LCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24sIGNvbnN0
IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZv
cm1TdGF0ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGlj
eUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBGcmFtZVBvbGljeUZ1bmN0aW9uKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFj
dGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgY29u
c3QgU3RyaW5nJiwgRnJhbWVQb2xpY3lGdW5jdGlvbikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0
aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+
LCBGcmFtZVBvbGljeUZ1bmN0aW9uKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2Vs
UG9saWN5Q2hlY2soKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFVuYWJsZVRvSW1w
bGVtZW50UG9saWN5KGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KIAogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaFdpbGxTZW5kU3VibWl0RXZlbnQoUGFzc1JlZlB0cjxGb3JtU3RhdGU+KSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShGcmFtZVBvbGlj
eUZ1bmN0aW9uLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgRnJhbWVQ
b2xpY3lGdW5jdGlvbikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmV2ZXJ0VG9Qcm92
aXNpb25hbFN0YXRlKERvY3VtZW50TG9hZGVyKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE1h
aW5Eb2N1bWVudEVycm9yKERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggMzIwMGIyNGNkNzM5ZWRh
YWVlNTdiZWU2NjBlNWQ3NDIxZDJhMmY2MS4uNzY4MTdkNmYyZjJmOWYwM2RjMDNkNDVlZDUwMjVj
NzBiMDRkYmU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0yODY5
LDEwICsyODY5LDE0IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdh
dGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBpZiAoZm9ybVN0YXRlKQotICAgICAgICBtX2NsaWVudC5kaXNwYXRjaFdp
bGxTdWJtaXRGb3JtKCZQb2xpY3lDaGVja2VyOjpjb250aW51ZUxvYWRBZnRlcldpbGxTdWJtaXRG
b3JtLCBmb3JtU3RhdGUpOwotICAgIGVsc2UKKyAgICBpZiAoIWZvcm1TdGF0ZSkgewogICAgICAg
ICBjb250aW51ZUxvYWRBZnRlcldpbGxTdWJtaXRGb3JtKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBtX2NsaWVudC5kaXNwYXRjaFdpbGxTdWJtaXRGb3JtKGZvcm1TdGF0ZSwgW3Ro
aXNdKFBvbGljeUFjdGlvbiBhY3Rpb24pIHsKKyAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNvbnRp
bnVlTG9hZEFmdGVyV2lsbFN1Ym1pdEZvcm0oYWN0aW9uKTsKKyAgICB9KTsKIH0KIAogdm9pZCBG
cmFtZUxvYWRlcjo6Y2FsbENvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5KHZvaWQqIGFy
Z3VtZW50LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBl
NDY4Y2ExZTk2NzI4MjVhNWVjMzA5NzE5MzQ3OWE2ZDEzYTVlNDVmLi41ZGNlZjdkZDY1ZGI4NGUw
ZDA4Y2JiOTk5OWZiYWU3OTdjYjdlZGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXJDbGllbnQuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkljb25VUkwuaCIKICNp
bmNsdWRlICJMYXlvdXRNaWxlc3RvbmVzLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkUHJpb3Jp
dHkuaCIKKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC05Nyw3ICs5OCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKICAgICBjbGFzcyBXaWRnZXQ7CiAKLSAg
ICB0eXBlZGVmIHZvaWQgKFBvbGljeUNoZWNrZXI6OipGcmFtZVBvbGljeUZ1bmN0aW9uKShQb2xp
Y3lBY3Rpb24pOworICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkIChQb2xpY3lBY3Rpb24p
PiBGcmFtZVBvbGljeUZ1bmN0aW9uOwogCiAgICAgY2xhc3MgRnJhbWVMb2FkZXJDbGllbnQgewog
ICAgIHB1YmxpYzoKQEAgLTE2Myw5ICsxNjQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZpcnR1YWwgRnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBOYXZpZ2F0aW9uQWN0
aW9uJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hTaG93KCkgPSAwOwogCi0g
ICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZyYW1l
UG9saWN5RnVuY3Rpb24sIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZv
ck5ld1dpbmRvd0FjdGlvbihGcmFtZVBvbGljeUZ1bmN0aW9uLCBjb25zdCBOYXZpZ2F0aW9uQWN0
aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBjb25z
dCBTdHJpbmcmIGZyYW1lTmFtZSkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24sIGNvbnN0
IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZv
cm1TdGF0ZT4pID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIEZyYW1lUG9saWN5RnVuY3Rpb24pID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24m
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIGNvbnN0IFN0
cmluZyYgZnJhbWVOYW1lLCBGcmFtZVBvbGljeUZ1bmN0aW9uKSA9IDA7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2
aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0
YXRlPiwgRnJhbWVQb2xpY3lGdW5jdGlvbikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgY2Fu
Y2VsUG9saWN5Q2hlY2soKSA9IDA7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoVW5h
YmxlVG9JbXBsZW1lbnRQb2xpY3koY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKQEAgLTE3Myw3
ICsxNzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaFdpbGxSZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0KikgeyB9CiAKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChQYXNzUmVmUHRy
PEZvcm1TdGF0ZT4pID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFN1Ym1p
dEZvcm0oRnJhbWVQb2xpY3lGdW5jdGlvbiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+KSA9IDA7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKFBhc3NSZWZQdHI8Rm9y
bVN0YXRlPiwgRnJhbWVQb2xpY3lGdW5jdGlvbikgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCByZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUoRG9jdW1lbnRMb2FkZXIqKSA9IDA7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBzZXRNYWluRG9jdW1lbnRFcnJvcihEb2N1bWVudExvYWRlciosIGNvbnN0
IFJlc291cmNlRXJyb3ImKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UG9saWN5Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5j
cHAKaW5kZXggMjhmOGIzN2ZiOWY5ZTNmYjNjNDM0N2JhMDE4NjAwM2Q1NmIxNmVlMC4uZGU4ZGZh
OGQ4MGYxYjUzMWY1MTkyMjA0NDhkYTE1MTY1YTBkMjU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Qb2xpY3lDaGVja2VyLmNwcApAQCAtOTUsOCArOTUsOSBAQCB2b2lkIFBvbGljeUNoZWNrZXI6
OmNoZWNrTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIERv
Y3VtZQogICAgIG1fY2FsbGJhY2suc2V0KHJlcXVlc3QsIGZvcm1TdGF0ZS5nZXQoKSwgZnVuY3Rp
b24sIGFyZ3VtZW50KTsKIAogICAgIG1fZGVsZWdhdGVJc0RlY2lkaW5nTmF2aWdhdGlvblBvbGlj
eSA9IHRydWU7Ci0gICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24oJlBvbGljeUNoZWNrZXI6OmNvbnRpbnVlQWZ0ZXJOYXZp
Z2F0aW9uUG9saWN5LAotICAgICAgICBhY3Rpb24sIHJlcXVlc3QsIGZvcm1TdGF0ZSk7CisgICAg
bV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24oYWN0aW9uLCByZXF1ZXN0LCBmb3JtU3RhdGUsIFt0aGlzXShQb2xpY3lBY3Rpb24g
YWN0aW9uKSB7CisgICAgICAgIGNvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGFjdGlvbik7
CisgICAgfSk7CiAgICAgbV9kZWxlZ2F0ZUlzRGVjaWRpbmdOYXZpZ2F0aW9uUG9saWN5ID0gZmFs
c2U7CiB9CiAKQEAgLTExMCwxNSArMTExLDE3IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tO
ZXdXaW5kb3dQb2xpY3koY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBOZXdXaW5kCiAg
ICAgICAgIHJldHVybiBjb250aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeShQb2xpY3lJZ25vcmUp
OwogCiAgICAgbV9jYWxsYmFjay5zZXQocmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFtZU5hbWUsIGFj
dGlvbiwgZnVuY3Rpb24sIGFyZ3VtZW50KTsKLSAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgp
LmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKCZQb2xpY3lDaGVja2VyOjpj
b250aW51ZUFmdGVyTmV3V2luZG93UG9saWN5LAotICAgICAgICBhY3Rpb24sIHJlcXVlc3QsIGZv
cm1TdGF0ZSwgZnJhbWVOYW1lKTsKKyAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGFjdGlvbiwgcmVxdWVzdCwgZm9ybVN0
YXRlLCBmcmFtZU5hbWUsIFt0aGlzXShQb2xpY3lBY3Rpb24gYWN0aW9uKSB7CisgICAgICAgIGNv
bnRpbnVlQWZ0ZXJOZXdXaW5kb3dQb2xpY3koYWN0aW9uKTsKKyAgICB9KTsKIH0KIAogdm9pZCBQ
b2xpY3lDaGVja2VyOjpjaGVja0NvbnRlbnRQb2xpY3koY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIENvbnRlbnRQb2xpY3lEZWNpc2lvbkZ1bmN0aW9uIGZ1bmN0aW9uLCB2b2lkKiBh
cmd1bWVudCkKIHsKICAgICBtX2NhbGxiYWNrLnNldChmdW5jdGlvbiwgYXJndW1lbnQpOwotICAg
IG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZSgmUG9saWN5Q2hlY2tlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3ksCi0gICAgICAgIHJl
c3BvbnNlLCBtX2ZyYW1lLmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPnJlcXVlc3Qo
KSk7CisgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERlY2lkZVBvbGljeUZv
clJlc3BvbnNlKHJlc3BvbnNlLCBtX2ZyYW1lLT5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRl
cigpLT5yZXF1ZXN0KCksIFt0aGlzXShQb2xpY3lBY3Rpb24gYWN0aW9uKSB7CisgICAgICAgIGNv
bnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KGFjdGlvbik7CisgICAgfSk7CiB9CiAKIHZvaWQgUG9s
aWN5Q2hlY2tlcjo6Y2FuY2VsQ2hlY2soKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9l
ZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCmluZGV4IDc4YzM0M2U4
ZDAzNTIxNDU3MWFiZjA3OTk3MjBjN2ZhYjdiMTNmZjkuLjg4MjEzZjQzZTRjNTgxMmUxZTdjNGUw
NGQyMGEyODY0MTMwNzc1NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAKQEAgLTEwNiw5ICsxMDYsNyBA
QCBTdHJpbmcgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnVzZXJBZ2VudChjb25zdCBVUkwmKQogCiB2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjYWxsUG9saWN5RnVuY3Rpb24oRnJhbWVQb2xpY3lG
dW5jdGlvbiBmdW5jdGlvbiwgUG9saWN5QWN0aW9uIGFjdGlvbikKIHsKLSAgICBGcmFtZSogZiA9
IEVXS1ByaXZhdGU6OmNvcmVGcmFtZShtX2ZyYW1lKTsKLSAgICBBU1NFUlQoZik7Ci0gICAgKGYt
PmxvYWRlcigpLnBvbGljeUNoZWNrZXIoKS4qZnVuY3Rpb24pKGFjdGlvbik7CisgICAgZnVuY3Rp
b24oYWN0aW9uKTsKIH0KIAogV1RGOjpQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBGcmFtZUxv
YWRlckNsaWVudEVmbDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCkBAIC0xMTks
NyArMTE3LDcgQEAgV1RGOjpQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBGcmFtZUxvYWRlckNs
aWVudEVmbDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QKICAgICByZXR1cm4gbG9hZGVyLnJl
bGVhc2UoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hXaWxsU3Vi
bWl0Rm9ybShGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uLCBQYXNzUmVmUHRyPEZvcm1TdGF0
ZT4pCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKFBh
c3NSZWZQdHI8Rm9ybVN0YXRlPiwgRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbikKIHsKICAg
ICAvLyBGSVhNRTogVGhpcyBpcyBzdXJlbHkgdG9vIHNpbXBsZQogICAgIEFTU0VSVChmdW5jdGlv
bik7CkBAIC0yODcsNyArMjg1LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0
Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW4KICAgICBldmFz
X29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgInJlc291cmNlLHJlc3BvbnNlLHJl
Y2VpdmVkIiwgJnJlc3BvbnNlKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9u
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXNvdXJjZVJlcXVlc3QpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERl
Y2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgRnJhbWVQb2xpY3lGdW5jdGlv
biBmdW5jdGlvbikKIHsKICAgICAvLyB3ZSBuZWVkIHRvIGNhbGwgZGlyZWN0bHkgaGVyZSAoY3Vy
cmVudGx5IGNhbGxQb2xpY3lGdW5jdGlvbiBkb2VzIHRoYXQhKQogICAgIEFTU0VSVChmdW5jdGlv
bik7CkBAIC0zMDksNyArMzA3LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0
Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZVBvbGljeUZ1bmN0aW9uIGYKICAgICAgICAg
Y2FsbFBvbGljeUZ1bmN0aW9uKGZ1bmN0aW9uLCBQb2xpY3lEb3dubG9hZCk7CiB9CiAKLXZvaWQg
RnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0
aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24sIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24m
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgUGFzc1JlZlB0cjxGb3Jt
U3RhdGU+LCBjb25zdCBTdHJpbmcmKQordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0
Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1T
dGF0ZT4sIGNvbnN0IFN0cmluZyYsIEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24pCiB7CiAg
ICAgQVNTRVJUKGZ1bmN0aW9uKTsKICAgICBBU1NFUlQobV9mcmFtZSk7CkBAIC0zMjYsNyArMzI0
LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JO
ZXdXaW5kb3dBY3Rpb24oRnJhbWVQb2xpY3lGdW4KICAgICBjYWxsUG9saWN5RnVuY3Rpb24oZnVu
Y3Rpb24sIFBvbGljeVVzZSk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1
bmN0aW9uLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pCit2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
c291cmNlUmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBGcmFtZVBvbGljeUZ1bmN0aW9u
IGZ1bmN0aW9uKQogewogICAgIEFTU0VSVChmdW5jdGlvbik7CiAgICAgQVNTRVJUKG1fZnJhbWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50RWZsLmgKaW5kZXggYjBkNmZjMjY0YWNhMGNhMWJhMTZiNGUxZWUwMGFmZTU2Zjkw
Mzg1OC4uODY4NmVlOTVkMjU3YWMwYTNiZDJmYWMwNmRhOTI2ZThjZDg5MmIyOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEVmbC5oCkBAIC0xMTEsMTUgKzExMSwxNSBAQCBjbGFzcyBGcmFtZUxvYWRlckNsaWVudEVmbCA6
IHB1YmxpYyBGcmFtZUxvYWRlckNsaWVudCB7CiAgICAgdmlydHVhbCBGcmFtZSogZGlzcGF0Y2hD
cmVhdGVQYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hTaG93KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZShGcmFtZVBvbGljeUZ1bmN0aW9uLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24sIGNvbnN0
IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBXVEY6OlBhc3NSZWZQ
dHI8Rm9ybVN0YXRlPiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUpOwotICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oRnJhbWVQb2xpY3lGdW5j
dGlvbiwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFdU
Rjo6UGFzc1JlZlB0cjxGb3JtU3RhdGU+KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgRnJhbWVQb2xpY3lGdW5jdGlvbik7CisgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24m
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBXVEY6OlBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgY29u
c3QgU3RyaW5nJiBmcmFtZU5hbWUsIEZyYW1lUG9saWN5RnVuY3Rpb24pOworICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdh
dGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFdURjo6UGFzc1JlZlB0cjxGb3Jt
U3RhdGU+LCBGcmFtZVBvbGljeUZ1bmN0aW9uKTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUG9s
aWN5Q2hlY2soKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50
UG9saWN5KGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aFdpbGxTZW5kU3VibWl0RXZlbnQoV1RGOjpQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pIHsgfQotICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKEZyYW1lUG9saWN5RnVuY3Rpb24s
IFdURjo6UGFzc1JlZlB0cjxGb3JtU3RhdGU+KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hX
aWxsU3VibWl0Rm9ybShXVEY6OlBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgRnJhbWVQb2xpY3lGdW5j
dGlvbik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmV2ZXJ0VG9Qcm92aXNpb25hbFN0YXRlKERvY3Vt
ZW50TG9hZGVyKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE1haW5Eb2N1bWVudEVycm9yKERv
Y3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwIGIvU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCmlu
ZGV4IDE1OGQ5M2IwYTcxNGJhNjg5YTc0YjhiZTc1YTFlNGRhYmY1NGI1NTMuLjc2ZmY1MWE1MzYx
NWI5NzJlNWFhODQ3ZTI5NDUwZTk1OWNlMThkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKQEAgLTE1
MCwxMyArMTUwLDEzIEBAIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4g
RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyCiAgICAgcmV0dXJuIGxvYWRl
ci5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFN1
Ym1pdEZvcm0oRnJhbWVQb2xpY3lGdW5jdGlvbiBwb2xpY3lGdW5jdGlvbiwgUGFzc1JlZlB0cjxG
b3JtU3RhdGU+KQordm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9y
bShQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIEZyYW1lUG9saWN5RnVuY3Rpb24gcG9saWN5RnVuY3Rp
b24pCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgaXMgc3VyZWx5IHRvbyBzaW1wbGUKICAgICBBU1NF
UlQocG9saWN5RnVuY3Rpb24pOwogICAgIGlmICghcG9saWN5RnVuY3Rpb24pCiAgICAgICAgIHJl
dHVybjsKLSAgICAoY29yZShtX2ZyYW1lKS0+bG9hZGVyKCkucG9saWN5Q2hlY2tlcigpLipwb2xp
Y3lGdW5jdGlvbikoUG9saWN5VXNlKTsKKyAgICBwb2xpY3lGdW5jdGlvbihQb2xpY3lVc2UpOwog
fQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCkBAIC0zMzks
MTQgKzMzOSwxNCBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVS
ZXNwb25zZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9hZAogICAgIGdfc2lnbmFsX2VtaXRf
YnlfbmFtZSh3ZWJWaWV3LCAicmVzb3VyY2UtcmVzcG9uc2UtcmVjZWl2ZWQiLCBtX2ZyYW1lLCB3
ZWJSZXNvdXJjZSwgbmV0d29ya1Jlc3BvbnNlLmdldCgpKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZVBvbGljeUZ1bmN0
aW9uIHBvbGljeUZ1bmN0aW9uLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCit2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgRnJh
bWVQb2xpY3lGdW5jdGlvbiBwb2xpY3lGdW5jdGlvbikKIHsKICAgICBBU1NFUlQocG9saWN5RnVu
Y3Rpb24pOwogICAgIGlmICghcG9saWN5RnVuY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmIChyZXNvdXJjZVJlcXVlc3QuaXNOdWxsKCkpIHsKLSAgICAgICAgKGNvcmUobV9mcmFtZSkt
PmxvYWRlcigpLnBvbGljeUNoZWNrZXIoKS4qcG9saWN5RnVuY3Rpb24pKFBvbGljeUlnbm9yZSk7
CisgICAgICAgIHBvbGljeUZ1bmN0aW9uKFBvbGljeUlnbm9yZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTQxNSwxNCArNDE1LDE0IEBAIHN0YXRpYyBXZWJLaXRXZWJOYXZpZ2F0aW9u
QWN0aW9uKiBnZXROYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwp
KTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JO
ZXdXaW5kb3dBY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiBwb2xpY3lGdW5jdGlvbiwgY29uc3Qg
TmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNl
UmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSkK
K3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93
QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXNvdXJjZVJlcXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgY29uc3QgU3RyaW5n
JiBmcmFtZU5hbWUsIEZyYW1lUG9saWN5RnVuY3Rpb24gcG9saWN5RnVuY3Rpb24pCiB7CiAgICAg
QVNTRVJUKHBvbGljeUZ1bmN0aW9uKTsKICAgICBpZiAoIXBvbGljeUZ1bmN0aW9uKQogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAocmVzb3VyY2VSZXF1ZXN0LmlzTnVsbCgpKSB7Ci0gICAgICAg
IChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS5wb2xpY3lDaGVja2VyKCkuKnBvbGljeUZ1bmN0aW9u
KShQb2xpY3lJZ25vcmUpOworICAgICAgICBwb2xpY3lGdW5jdGlvbihQb2xpY3lJZ25vcmUpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NDIsMTcgKzQ0MiwxNyBAQCB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFt
ZVBvbGljeUZ1bmN0aQogICAgIC8vIEZJWE1FOiBJIHRoaW5rIFF0IHZlcnNpb24gbWFyc2hhbHMg
dGhpcyB0byBhbm90aGVyIHRocmVhZCBzbyB3aGVuIHdlCiAgICAgLy8gaGF2ZSBtdWx0aS10aHJl
YWRlZCBkb3dubG9hZCwgd2UgbWlnaHQgbmVlZCB0byBkbyB0aGUgc2FtZQogICAgIGlmICghaXNI
YW5kbGVkKQotICAgICAgICAoY29yZShtX2ZyYW1lKS0+bG9hZGVyKCkucG9saWN5Q2hlY2tlcigp
Lipwb2xpY3lGdW5jdGlvbikoUG9saWN5VXNlKTsKKyAgICAgICAgcG9saWN5RnVuY3Rpb24oUG9s
aWN5VXNlKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24gcG9saWN5RnVuY3Rpb24s
IGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXNvdXJjZVJlcXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPikKK3ZvaWQgRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZp
Z2F0aW9uQWN0aW9uJiBhY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1
ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIEZyYW1lUG9saWN5RnVuY3Rpb24gcG9saWN5RnVu
Y3Rpb24pCiB7CiAgICAgQVNTRVJUKHBvbGljeUZ1bmN0aW9uKTsKICAgICBpZiAoIXBvbGljeUZ1
bmN0aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAocmVzb3VyY2VSZXF1ZXN0LmlzTnVs
bCgpKSB7Ci0gICAgICAgIChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS5wb2xpY3lDaGVja2VyKCku
KnBvbGljeUZ1bmN0aW9uKShQb2xpY3lJZ25vcmUpOworICAgICAgICBwb2xpY3lGdW5jdGlvbihQ
b2xpY3lJZ25vcmUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NjksNyArNDY5LDcg
QEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKEZyYW1lUG9saWN5RnVuY3QKICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod2Vi
VmlldywgIm5hdmlnYXRpb24tcmVxdWVzdGVkIiwgbV9mcmFtZSwgcmVxdWVzdC5nZXQoKSwgJnJl
c3BvbnNlKTsKIAogICAgIGlmIChyZXNwb25zZSA9PSBXRUJLSVRfTkFWSUdBVElPTl9SRVNQT05T
RV9JR05PUkUpIHsKLSAgICAgICAgKGNvcmUobV9mcmFtZSktPmxvYWRlcigpLnBvbGljeUNoZWNr
ZXIoKS4qcG9saWN5RnVuY3Rpb24pKFBvbGljeUlnbm9yZSk7CisgICAgICAgIHBvbGljeUZ1bmN0
aW9uKFBvbGljeUlnbm9yZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5o
CmluZGV4IGY1NmZiNTRiZjYwZTQ3MDVkMjk4ZDI0MzMyOGQ2ZWNhNTVhNTk0MGMuLmRiNGI2MTU5
N2I0M2JmMzU1NjY2ZWEyYjZmZGJmNDNlOTE2OWQ2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKKysrIGIvU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaApAQCAtOTgs
MTUgKzk4LDE1IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIFdlYkNvcmU6
OkZyYW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlv
biYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hTaG93KCk7CiAKLSAgICAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVQ
b2xpY3lGdW5jdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlv
biwgY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+LCBjb25zdCBX
VEY6OlN0cmluZyYgZnJhbWVOYW1lKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9u
LCBjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4pOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
V2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0
aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4sIGNvbnN0IFdURjo6U3RyaW5nJiBmcmFtZU5hbWUsIFdl
YkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24pOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRp
b25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXVEY6OlBhc3NSZWZQ
dHI8V2ViQ29yZTo6Rm9ybVN0YXRlPiwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbik7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxQb2xpY3lDaGVjaygpOwogCiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU2VuZFN1
Ym1pdEV2ZW50KFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+KSB7IH0KLSAgICAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0oV2ViQ29yZTo6RnJhbWVQb2xp
Y3lGdW5jdGlvbiwgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4pOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShXVEY6OlBhc3NSZWZQdHI8V2Vi
Q29yZTo6Rm9ybVN0YXRlPiwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbik7CiAKICAgICAg
ICAgdmlydHVhbCB2b2lkIHJldmVydFRvUHJvdmlzaW9uYWxTdGF0ZShXZWJDb3JlOjpEb2N1bWVu
dExvYWRlciopIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0TWFpbkRvY3VtZW50RXJyb3Io
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicG9saWN5ZGVj
aXNpb24uY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBvbGljeWRlY2lz
aW9uLmNwcAppbmRleCAxMzY1NzNkMWM5ZTliZWU1ZDZlMzU1ODlhZTFjM2UyZTM0ZTJiYTAyLi45
MmNlM2I2ZGZmNDlhMmUwMDcxOWFjMmEwMmYzZjY4NjkxMTgyMjkyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicG9saWN5ZGVjaXNpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5jcHAKQEAgLTg1
LDcgKzg1LDcgQEAgdm9pZCB3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl91c2UoV2ViS2l0V2Vi
UG9saWN5RGVjaXNpb24qIGRlY2lzaW9uKQogICAgIFdlYktpdFdlYlBvbGljeURlY2lzaW9uUHJp
dmF0ZSogcHJpdiA9IGRlY2lzaW9uLT5wcml2OwogCiAgICAgaWYgKCFwcml2LT5pc0NhbmNlbGxl
ZCkKLSAgICAgICAgKGNvcmUocHJpdi0+ZnJhbWUpLT5sb2FkZXIoKS5wb2xpY3lDaGVja2VyKCku
Kihwcml2LT5mcmFtZVBvbGljeUZ1bmN0aW9uKSkoV2ViQ29yZTo6UG9saWN5VXNlKTsKKyAgICAg
ICAgZnJhbWVQb2xpY3lGdW5jdGlvbihXZWJDb3JlOjpQb2xpY3lVc2UpOwogfQogCiAvKioKQEAg
LTEwMyw3ICsxMDMsNyBAQCB2b2lkIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2lnbm9yZShX
ZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiogZGVjaXNpb24pCiAgICAgV2ViS2l0V2ViUG9saWN5RGVj
aXNpb25Qcml2YXRlKiBwcml2ID0gZGVjaXNpb24tPnByaXY7CiAKICAgICBpZiAoIXByaXYtPmlz
Q2FuY2VsbGVkKQotICAgICAgICAoY29yZShwcml2LT5mcmFtZSktPmxvYWRlcigpLnBvbGljeUNo
ZWNrZXIoKS4qKHByaXYtPmZyYW1lUG9saWN5RnVuY3Rpb24pKShXZWJDb3JlOjpQb2xpY3lJZ25v
cmUpOworICAgICAgICBmcmFtZVBvbGljeUZ1bmN0aW9uKFdlYkNvcmU6OlBvbGljeUlnbm9yZSk7
CiB9CiAKIC8qKgpAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgd2Via2l0X3dlYl9wb2xpY3lfZGVj
aXNpb25fZG93bmxvYWQoV2ViS2l0V2ViUG9saWN5RGVjaXNpb24qIGRlY2lzaW9uKQogICAgIFdl
YktpdFdlYlBvbGljeURlY2lzaW9uUHJpdmF0ZSogcHJpdiA9IGRlY2lzaW9uLT5wcml2OwogCiAg
ICAgaWYgKCFwcml2LT5pc0NhbmNlbGxlZCkKLSAgICAgICAgKGNvcmUocHJpdi0+ZnJhbWUpLT5s
b2FkZXIoKS5wb2xpY3lDaGVja2VyKCkuKihwcml2LT5mcmFtZVBvbGljeUZ1bmN0aW9uKSkoV2Vi
Q29yZTo6UG9saWN5RG93bmxvYWQpOworICAgICAgICBmcmFtZVBvbGljeUZ1bmN0aW9uKFdlYkNv
cmU6OlBvbGljeURvd25sb2FkKTsKIH0KIAogdm9pZCB3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lv
bl9jYW5jZWwoV2ViS2l0V2ViUG9saWN5RGVjaXNpb24qIGRlY2lzaW9uKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgK
aW5kZXggMWJmZGQxOTY2NTA5YmFmYjMwNDlhMzdmODA0NTkxN2Y3YTYzNjBlMy4uNmJkNTgxYzQz
ZDRhMWQ0Y2FjMzVhNDczNWE2NjU5YWFjNmM2OTY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xMTIs
MTggKzExMiwxNSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6RnJhbWUqIGRpc3Bh
dGNoQ3JlYXRlUGFnZShjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJikgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoU2hvdygpIE9WRVJSSURFOwogCi0gICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVQb2xp
Y3lGdW5jdGlvbiwgCi0gICAgICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5j
dGlvbiwKLSAgICAgICAgY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPiwg
Y29uc3QgV1RGOjpTdHJpbmcmIGZyYW1lTmFtZSkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJDb3JlOjpGcmFtZVBv
bGljeUZ1bmN0aW9uLAotICAgICAgICBjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3Jt
U3RhdGU+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbik7CisgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0
IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4sIGNvbnN0IFdURjo6U3RyaW5nJiBm
cmFtZU5hbWUsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24pIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3Qg
V2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPiwgV2ViQ29yZTo6RnJhbWVQb2xpY3lG
dW5jdGlvbikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbFBvbGljeUNoZWNrKCkg
T1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBv
bGljeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgT1ZFUlJJREU7CiAKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU2VuZFN1Ym1pdEV2ZW50KFBhc3NSZWZQdHI8V2ViQ29yZTo6
Rm9ybVN0YXRlPikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFN1Ym1p
dEZvcm0oV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpG
b3JtU3RhdGU+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU3VibWl0
Rm9ybShQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4sIFdlYkNvcmU6OkZyYW1lUG9saWN5
RnVuY3Rpb24pIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIHJldmVydFRvUHJvdmlzaW9u
YWxTdGF0ZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciopIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRNYWluRG9jdW1lbnRFcnJvcihXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXgg
NzJjNTI3Y2E2OWU0NDQzMzZjMDdmZWQyMGVhNWE0NTNkZGVjYTgzOC4uZGQ1MjYzNTlkM2EyMWQ4
NWY3ZmE1YjFhNWQwN2U2OGYwYzkwZDVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTc0Myw4ICs3
NDMsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFNob3coKQogICAgIFtb
d2ViVmlldyBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlld1Nob3c6d2ViVmlld107CiB9CiAK
LXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UoRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwKLSAgICBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQordm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uKQogewogICAgIFdlYlZpZXcgKndlYlZpZXcg
PSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOwogCkBAIC03NTIsMjkgKzc1MSwyNyBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNl
KEZyYW1lUG9saWN5RnVuY3Rpb24gZgogICAgICAgICAgICAgICAgICAgICAgICAgZGVjaWRlUG9s
aWN5Rm9yTUlNRVR5cGU6cmVzcG9uc2UubWltZVR5cGUoKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoVXBkYXRlSFRU
UEJvZHkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZTpt
X3dlYkZyYW1lLmdldCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaXNpb25M
aXN0ZW5lcjpzZXRVcFBvbGljeUxpc3RlbmVyKGZ1bmN0aW9uKS5nZXQoKV07CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVjaXNpb25MaXN0ZW5lcjpzZXRVcFBvbGljeUxpc3RlbmVy
KHN0ZDo6bW92ZShmdW5jdGlvbikpLmdldCgpXTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVQb2xpY3lG
dW5jdGlvbiBmdW5jdGlvbiwKLSAgICBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1T
dGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aW9u
QWN0aW9uJiBhY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFzc1JlZlB0
cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIEZyYW1lUG9s
aWN5RnVuY3Rpb24gZnVuY3Rpb24pCiB7CiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZp
ZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAgICAgW1t3ZWJWaWV3IF9wb2xpY3lEZWxlZ2F0ZUZvcndh
cmRlcl0gd2ViVmlldzp3ZWJWaWV3CiAgICAgICAgICAgICBkZWNpZGVQb2xpY3lGb3JOZXdXaW5k
b3dBY3Rpb246YWN0aW9uRGljdGlvbmFyeShhY3Rpb24sIGZvcm1TdGF0ZSkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChVcGRh
dGVIVFRQQm9keSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0ZyYW1lTmFtZTpm
cmFtZU5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaXNpb25MaXN0ZW5lcjpzZXRV
cFBvbGljeUxpc3RlbmVyKGZ1bmN0aW9uKS5nZXQoKV07CisgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRlY2lzaW9uTGlzdGVuZXI6c2V0VXBQb2xpY3lMaXN0ZW5lcihzdGQ6Om1vdmUoZnVuY3Rp
b24pKS5nZXQoKV07CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9u
LAotICAgIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlKQordm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
KGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlLCBGcmFtZVBvbGljeUZ1bmN0
aW9uIGZ1bmN0aW9uKQogewogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBnZXRXZWJWaWV3KG1fd2Vi
RnJhbWUuZ2V0KCkpOwogICAgIFtbd2ViVmlldyBfcG9saWN5RGVsZWdhdGVGb3J3YXJkZXJdIHdl
YlZpZXc6d2ViVmlldwogICAgICAgICAgICAgICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb246YWN0aW9uRGljdGlvbmFyeShhY3Rpb24sIGZvcm1TdGF0ZSkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KFVw
ZGF0ZUhUVFBCb2R5KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZnJhbWU6bV93ZWJGcmFtZS5nZXQoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
Y2lzaW9uTGlzdGVuZXI6c2V0VXBQb2xpY3lMaXN0ZW5lcihmdW5jdGlvbikuZ2V0KCldOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2lzaW9uTGlzdGVuZXI6c2V0VXBQb2xpY3lM
aXN0ZW5lcihzdGQ6Om1vdmUoZnVuY3Rpb24pKS5nZXQoKV07CiB9CiAKIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmNhbmNlbFBvbGljeUNoZWNrKCkKQEAgLTgxMSwxNiArODA4LDE2IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChQYXNz
UmVmUHRyPFdlYkNvcmU6OkZvcm1TCiAgICAgQ2FsbEZvcm1EZWxlZ2F0ZShnZXRXZWJWaWV3KG1f
d2ViRnJhbWUuZ2V0KCkpLCBAc2VsZWN0b3Iod2lsbFNlbmRTdWJtaXRFdmVudFRvRm9ybTppbkZy
YW1lOndpdGhWYWx1ZXM6KSwgZm9ybUVsZW1lbnQsIG1fd2ViRnJhbWUuZ2V0KCksIHZhbHVlcyk7
CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0o
RnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1T
dGF0ZSkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0o
UGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSwgRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5j
dGlvbikKIHsKICAgICBpZCA8V2ViRm9ybURlbGVnYXRlPiBmb3JtRGVsZWdhdGUgPSBbZ2V0V2Vi
VmlldyhtX3dlYkZyYW1lLmdldCgpKSBfZm9ybURlbGVnYXRlXTsKICAgICBpZiAoIWZvcm1EZWxl
Z2F0ZSkgewotICAgICAgICAoY29yZShtX3dlYkZyYW1lLmdldCgpKS0+bG9hZGVyKCkucG9saWN5
Q2hlY2tlcigpLipmdW5jdGlvbikoUG9saWN5VXNlKTsKKyAgICAgICAgZnVuY3Rpb24oUG9saWN5
VXNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIE5TRGljdGlvbmFyeSAqdmFsdWVz
ID0gbWFrZUZvcm1GaWVsZFZhbHVlc0RpY3Rpb25hcnkoZm9ybVN0YXRlLmdldCgpKTsKLSAgICBD
YWxsRm9ybURlbGVnYXRlKGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSksIEBzZWxlY3Rvcihm
cmFtZTpzb3VyY2VGcmFtZTp3aWxsU3VibWl0Rm9ybTp3aXRoVmFsdWVzOnN1Ym1pc3Npb25MaXN0
ZW5lcjopLCBtX3dlYkZyYW1lLmdldCgpLCBraXQoZm9ybVN0YXRlLT5zb3VyY2VEb2N1bWVudCgp
LT5mcmFtZSgpKSwga2l0KGZvcm1TdGF0ZS0+Zm9ybSgpKSwgdmFsdWVzLCBzZXRVcFBvbGljeUxp
c3RlbmVyKGZ1bmN0aW9uKS5nZXQoKSk7CisgICAgQ2FsbEZvcm1EZWxlZ2F0ZShnZXRXZWJWaWV3
KG1fd2ViRnJhbWUuZ2V0KCkpLCBAc2VsZWN0b3IoZnJhbWU6c291cmNlRnJhbWU6d2lsbFN1Ym1p
dEZvcm06d2l0aFZhbHVlczpzdWJtaXNzaW9uTGlzdGVuZXI6KSwgbV93ZWJGcmFtZS5nZXQoKSwg
a2l0KGZvcm1TdGF0ZS0+c291cmNlRG9jdW1lbnQoKS0+ZnJhbWUoKSksIGtpdChmb3JtU3RhdGUt
PmZvcm0oKSksIHZhbHVlcywgc2V0VXBQb2xpY3lMaXN0ZW5lcihzdGQ6Om1vdmUoZnVuY3Rpb24p
KS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJldmVydFRvUHJvdmlz
aW9uYWxTdGF0ZShEb2N1bWVudExvYWRlciogbG9hZGVyKQpAQCAtMjAxMyw3ICsyMDEwLDcgQEAg
UGFzc1JlZlB0cjxGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6
Y3JlYXRlTmV0d29ya2luZ0NvbnRleHQKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIF9mcmFt
ZSA9IGZyYW1lOwotICAgIF9wb2xpY3lGdW5jdGlvbiA9IHBvbGljeUZ1bmN0aW9uOworICAgIF9w
b2xpY3lGdW5jdGlvbiA9IHN0ZDo6bW92ZShwb2xpY3lGdW5jdGlvbik7CiAKICAgICByZXR1cm4g
c2VsZjsKIH0KQEAgLTIwMzcsMTEgKzIwMzQsMTEgQEAgUGFzc1JlZlB0cjxGcmFtZU5ldHdvcmtp
bmdDb250ZXh0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlTmV0d29ya2luZ0NvbnRleHQK
ICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBGcmFtZVBvbGljeUZ1bmN0
aW9uIHBvbGljeUZ1bmN0aW9uID0gX3BvbGljeUZ1bmN0aW9uOworICAgIEZyYW1lUG9saWN5RnVu
Y3Rpb24gcG9saWN5RnVuY3Rpb24gPSBzdGQ6Om1vdmUoX3BvbGljeUZ1bmN0aW9uKTsKICAgICBf
cG9saWN5RnVuY3Rpb24gPSBudWxscHRyOwogCiAgICAgQVNTRVJUKHBvbGljeUZ1bmN0aW9uKTsK
LSAgICAoZnJhbWUtPmxvYWRlcigpLnBvbGljeUNoZWNrZXIoKS4qcG9saWN5RnVuY3Rpb24pKGFj
dGlvbik7CisgICAgcG9saWN5RnVuY3Rpb24oYWN0aW9uKTsKIH0KIAogLSAodm9pZClpZ25vcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcAppbmRleCBkYzViZDFlMzdkYTAxYzQxNTQ3NThkZTI5NzBiNzYzMTM4
NzVkNjgyLi40ZWZlNDUxZmU3M2Y0ZGU1MjA3YzQ3NzE1YmFjNjQxZjAwZTA2ZTNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCkBAIC01NTgsNyArNTU4LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hTaG93KCkKICAgICAgICAgdWktPndlYlZpZXdTaG93KHdlYlZpZXcpOwogfQog
Ci12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3Bv
bnNlKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24sIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZy
YW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24pCiB7CiAgICAgV2ViVmlldyogd2ViVmlldyA9IG1f
d2ViRnJhbWUtPndlYlZpZXcoKTsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShtX3dlYkZy
YW1lKTsKQEAgLTU3MywxMCArNTczLDEwIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoRnJhbWVQb2xpY3lGdW5jdGlvbiBmCiAgICAg
aWYgKFNVQ0NFRURFRChwb2xpY3lEZWxlZ2F0ZS0+ZGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUod2Vi
VmlldywgQlN0cmluZyhyZXNwb25zZS5taW1lVHlwZSgpKSwgdXJsUmVxdWVzdC5nZXQoKSwgbV93
ZWJGcmFtZSwgc2V0VXBQb2xpY3lMaXN0ZW5lcihmdW5jdGlvbikuZ2V0KCkpKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgKGNvcmVGcmFtZS0+bG9hZGVyKCkucG9saWN5Q2hlY2tlcigpLipmdW5j
dGlvbikoUG9saWN5VXNlKTsKKyAgICBmdW5jdGlvbihQb2xpY3lVc2UpOwogfQogCi12b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlv
bihGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBh
Y3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3Rh
dGU+IGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUpCit2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBO
YXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
UGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUs
IEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24pCiB7CiAgICAgV2ViVmlldyogd2ViVmlldyA9
IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShtX3dl
YkZyYW1lKTsKQEAgLTU5MiwxMCArNTkyLDEwIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1lUG9saWN5RnVuCiAg
ICAgaWYgKFNVQ0NFRURFRChwb2xpY3lEZWxlZ2F0ZS0+ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93
QWN0aW9uKHdlYlZpZXcsIGFjdGlvbkluZm9ybWF0aW9uLmdldCgpLCB1cmxSZXF1ZXN0LmdldCgp
LCBCU3RyaW5nKGZyYW1lTmFtZSksIHNldFVwUG9saWN5TGlzdGVuZXIoZnVuY3Rpb24pLmdldCgp
KSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIChjb3JlRnJhbWUtPmxvYWRlcigpLnBvbGljeUNo
ZWNrZXIoKS4qZnVuY3Rpb24pKFBvbGljeVVzZSk7CisgICAgZnVuY3Rpb24oUG9saWN5VXNlKTsK
IH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24sIGNvbnN0IE5hdmln
YXRpb25BY3Rpb24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNz
UmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25B
Y3Rpb24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRy
PEZvcm1TdGF0ZT4gZm9ybVN0YXRlLCBGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uKQogewog
ICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7CiAgICAgRnJhbWUq
IGNvcmVGcmFtZSA9IGNvcmUobV93ZWJGcmFtZSk7CkBAIC02MTEsNyArNjExLDcgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKEZyYW1lUG9saWN5RnUKICAgICBpZiAoU1VDQ0VFREVEKHBvbGljeURlbGVnYXRlLT5kZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHdlYlZpZXcsIGFjdGlvbkluZm9ybWF0aW9uLmdl
dCgpLCB1cmxSZXF1ZXN0LmdldCgpLCBtX3dlYkZyYW1lLCBzZXRVcFBvbGljeUxpc3RlbmVyKGZ1
bmN0aW9uKS5nZXQoKSkpKQogICAgICAgICByZXR1cm47CiAKLSAgICAoY29yZUZyYW1lLT5sb2Fk
ZXIoKS5wb2xpY3lDaGVja2VyKCkuKmZ1bmN0aW9uKShQb2xpY3lVc2UpOworICAgIGZ1bmN0aW9u
KFBvbGljeVVzZSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoVW5h
YmxlVG9JbXBsZW1lbnRQb2xpY3koY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCkBAIC02Mjks
NyArNjI5LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU2VuZFN1
Ym1pdEV2ZW50KFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVMKIHsKIH0KIAotdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShGcmFtZVBvbGljeUZ1bmN0aW9u
IGZ1bmN0aW9uLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlKQordm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShQYXNzUmVmUHRyPEZvcm1TdGF0
ZT4gZm9ybVN0YXRlLCBGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uKQogewogICAgIFdlYlZp
ZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7CiAgICAgRnJhbWUqIGNvcmVGcmFt
ZSA9IGNvcmUobV93ZWJGcmFtZSk7CkBAIC02MzgsNyArNjM4LDcgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1
bmN0aW9uLAogICAgIENPTVB0cjxJV2ViRm9ybURlbGVnYXRlPiBmb3JtRGVsZWdhdGU7CiAKICAg
ICBpZiAoRkFJTEVEKHdlYlZpZXctPmZvcm1EZWxlZ2F0ZSgmZm9ybURlbGVnYXRlKSkpIHsKLSAg
ICAgICAgKGNvcmVGcmFtZS0+bG9hZGVyKCkucG9saWN5Q2hlY2tlcigpLipmdW5jdGlvbikoUG9s
aWN5VXNlKTsKKyAgICAgICAgZnVuY3Rpb24oUG9saWN5VXNlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtNjU3LDcgKzY1Nyw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoV2lsbFN1Ym1pdEZvcm0oRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUU6IEFkZCBhIHNhbmUgZGVmYXVsdCBpbXBsZW1lbnRh
dGlvbgotICAgIChjb3JlRnJhbWUtPmxvYWRlcigpLnBvbGljeUNoZWNrZXIoKS4qZnVuY3Rpb24p
KFBvbGljeVVzZSk7CisgICAgZnVuY3Rpb24oUG9saWN5VXNlKTsKIH0KIAogdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6c2V0TWFpbkRvY3VtZW50RXJyb3IoRG9jdW1lbnRMb2FkZXIqLCBjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAgLTEzNzksNSArMTM3OSw1IEBAIHZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlv
bikKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShtX3dlYkZyYW1lKTsKICAgICBBU1NFUlQo
Y29yZUZyYW1lKTsKIAotICAgIChjb3JlRnJhbWUtPmxvYWRlcigpLnBvbGljeUNoZWNrZXIoKS4q
ZnVuY3Rpb24pKGFjdGlvbik7CisgICAgZnVuY3Rpb24oYWN0aW9uKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
CmluZGV4IDUxYjYyZDZhZmNlMTQwMmI3ZDc4NjM3MTc5M2JhODMyNmI5NmRjOTcuLjA2ZjBlMjdk
MGJmNjEyYmQzOGRhYTYxNDcxZDA2NTMxNjY0NWZkNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtOTcs
OSArOTcsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9h
ZCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZExheW91dChXZWJDb3Jl
OjpMYXlvdXRNaWxlc3RvbmVzKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24sIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5k
b3dBY3Rpb24oV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiwgY29uc3QgV2ViQ29yZTo6TmF2
aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6Rm9ybVN0YXRlPiwgY29uc3QgV1RGOjpTdHJpbmcmIGZyYW1lTmFtZSkgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbihXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uLCBjb25zdCBXZWJDb3JlOjpOYXZp
Z2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpGb3JtU3RhdGU+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6RnJhbWVQb2xpY3lG
dW5jdGlvbikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0
ZT4sIGNvbnN0IFdURjo6U3RyaW5nJiBmcmFtZU5hbWUsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVu
Y3Rpb24pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRl
PiwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIGNhbmNlbFBvbGljeUNoZWNrKCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hVbmFibGVUb0ltcGxlbWVudFBvbGljeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JikgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGE4ZGI2
MDdmYWI0M2RmYzY3N2EwNjEzMTYwNjhhMWFkYjAwMjA3ZmEuLjNjZTNlMDc5OGRiMDlkNmMwYWJh
YTlkOGRlOWM4MTlmZGI4ZDNhZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CkBAIC02MTgsMTQgKzYxOCwxNCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aFNob3coKQogICAgIHdlYlBhZ2UtPnNob3coKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZVBvbGljeUZ1bmN0aW9u
IGZ1bmN0aW9uLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0
aW9uKQogewogICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgaWYg
KCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIXJlcXVlc3QudXJsKCkuc3Ry
aW5nKCkpIHsKLSAgICAgICAgKG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5wb2xpY3lD
aGVja2VyKCkuKmZ1bmN0aW9uKShQb2xpY3lVc2UpOworICAgICAgICBmdW5jdGlvbihQb2xpY3lV
c2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02MzQsMTEgKzYzNCwxMSBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZy
YW1lUG9saWN5RnVuY3Rpb24gZgogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KICAg
ICBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb24gcG9saWN5ID0gd2ViUGFnZS0+aW5qZWN0ZWRCdW5k
bGVQb2xpY3lDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh3ZWJQYWdlLCBtX2ZyYW1l
LCByZXNwb25zZSwgcmVxdWVzdCwgdXNlckRhdGEpOwogICAgIGlmIChwb2xpY3kgPT0gV0tCdW5k
bGVQYWdlUG9saWN5QWN0aW9uVXNlKSB7Ci0gICAgICAgIChtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+
bG9hZGVyKCkucG9saWN5Q2hlY2tlcigpLipmdW5jdGlvbikoUG9saWN5VXNlKTsKKyAgICAgICAg
ZnVuY3Rpb24oUG9saWN5VXNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2
NF90IGxpc3RlbmVySUQgPSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKGZ1bmN0aW9uKTsK
KyAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihz
dGQ6Om1vdmUoZnVuY3Rpb24pKTsKICAgICBib29sIHJlY2VpdmVkUG9saWN5QWN0aW9uOwogICAg
IHVpbnQ2NF90IHBvbGljeUFjdGlvbjsKICAgICB1aW50NjRfdCBkb3dubG9hZElEOwpAQCAtNjUy
LDcgKzY1Miw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yUmVzcG9uc2UoRnJhbWVQb2xpY3lGdW5jdGlvbiBmCiAgICAgICAgIG1fZnJhbWUtPmRp
ZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBzdGF0aWNfY2FzdDxQb2xpY3lBY3Rp
b24+KHBvbGljeUFjdGlvbiksIGRvd25sb2FkSUQpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZVBvbGlj
eUZ1bmN0aW9uIGZ1bmN0aW9uLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0
aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRl
PiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lKQordm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2
aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbikKIHsKICAgICBXZWJQYWdlKiB3
ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghd2ViUGFnZSkKQEAgLTY2NSwyNyAr
NjY1LDI3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1lUG9saWN5RnVuCiAgICAgLy8gTm90aWZ5IHRoZSBidW5k
bGUgY2xpZW50LgogICAgIFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBwb2xpY3kgPSB3ZWJQYWdl
LT5pbmplY3RlZEJ1bmRsZVBvbGljeUNsaWVudCgpLmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0Fj
dGlvbih3ZWJQYWdlLCBtX2ZyYW1lLCBhY3Rpb24uZ2V0KCksIHJlcXVlc3QsIGZyYW1lTmFtZSwg
dXNlckRhdGEpOwogICAgIGlmIChwb2xpY3kgPT0gV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uVXNl
KSB7Ci0gICAgICAgIChtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkucG9saWN5Q2hlY2tl
cigpLipmdW5jdGlvbikoUG9saWN5VXNlKTsKKyAgICAgICAgZnVuY3Rpb24oUG9saWN5VXNlKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogCi0gICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IG1f
ZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXIoZnVuY3Rpb24pOworICAgIHVpbnQ2NF90IGxpc3Rl
bmVySUQgPSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKHN0ZDo6bW92ZShmdW5jdGlvbikp
OwogCiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCiAgICAgd2ViUGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24obV9mcmFt
ZS0+ZnJhbWVJRCgpLCBhY3Rpb24tPm5hdmlnYXRpb25UeXBlKCksIGFjdGlvbi0+bW9kaWZpZXJz
KCksIGFjdGlvbi0+bW91c2VCdXR0b24oKSwgcmVxdWVzdCwgZnJhbWVOYW1lLCBsaXN0ZW5lcklE
LCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKIH0K
IAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24sIGNvbnN0IE5hdmlnYXRp
b25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZp
Z2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUsIEZyYW1lUG9saWN5RnVuY3Rp
b24gZnVuY3Rpb24pCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsK
ICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEFsd2F5cyBpZ25v
cmUgcmVxdWVzdHMgd2l0aCBlbXB0eSBVUkxzLiAKLSAgICBpZiAocmVxdWVzdC5pc0VtcHR5KCkp
IHsgCi0gICAgICAgIChtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkucG9saWN5Q2hlY2tl
cigpLipmdW5jdGlvbikoUG9saWN5SWdub3JlKTsgCi0gICAgICAgIHJldHVybjsgCisgICAgaWYg
KHJlcXVlc3QuaXNFbXB0eSgpKSB7CisgICAgICAgIGZ1bmN0aW9uKFBvbGljeUlnbm9yZSk7Cisg
ICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBSZWZQdHI8QVBJT2JqZWN0PiB1c2VyRGF0YTsK
QEAgLTY5NSwxMSArNjk1LDExIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1CiAgICAgLy8gTm90
aWZ5IHRoZSBidW5kbGUgY2xpZW50LgogICAgIFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBwb2xp
Y3kgPSB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZVBvbGljeUNsaWVudCgpLmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24od2ViUGFnZSwgbV9mcmFtZSwgYWN0aW9uLmdldCgpLCByZXF1ZXN0
LCB1c2VyRGF0YSk7CiAgICAgaWYgKHBvbGljeSA9PSBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb25V
c2UpIHsKLSAgICAgICAgKG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5wb2xpY3lDaGVj
a2VyKCkuKmZ1bmN0aW9uKShQb2xpY3lVc2UpOworICAgICAgICBmdW5jdGlvbihQb2xpY3lVc2Up
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGxpc3RlbmVySUQg
PSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKGZ1bmN0aW9uKTsKKyAgICB1aW50NjRfdCBs
aXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihzdGQ6Om1vdmUoZnVuY3Rp
b24pKTsKICAgICBib29sIHJlY2VpdmVkUG9saWN5QWN0aW9uOwogICAgIHVpbnQ2NF90IHBvbGlj
eUFjdGlvbjsKICAgICB1aW50NjRfdCBkb3dubG9hZElEOwpAQCAtNzQ5LDcgKzc0OSw3IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChQYXNz
UmVmUHRyPEZvcm1TdGF0ZT4gcHJwCiAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVGb3JtQ2xp
ZW50KCkud2lsbFNlbmRTdWJtaXRFdmVudCh3ZWJQYWdlLCBmb3JtLCBtX2ZyYW1lLCBzb3VyY2VG
cmFtZSwgZm9ybVN0YXRlLT50ZXh0RmllbGRWYWx1ZXMoKSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0oRnJhbWVQb2xpY3lGdW5jdGlvbiBm
dW5jdGlvbiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IHBycEZvcm1TdGF0ZSkKK3ZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0oUGFzc1JlZlB0cjxGb3JtU3Rh
dGU+IHBycEZvcm1TdGF0ZSwgRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbikKIHsKICAgICBX
ZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghd2ViUGFnZSkKQEAg
LTc3MCw3ICs3NzAsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxT
dWJtaXRGb3JtKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24sCiAgICAgd2ViUGFnZS0+aW5q
ZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KCkud2lsbFN1Ym1pdEZvcm0od2ViUGFnZSwgZm9ybSwgbV9m
cmFtZSwgc291cmNlRnJhbWUsIHZhbHVlcywgdXNlckRhdGEpOwogCiAKLSAgICB1aW50NjRfdCBs
aXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihmdW5jdGlvbik7CisgICAg
dWludDY0X3QgbGlzdGVuZXJJRCA9IG1fZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXIoc3RkOjpt
b3ZlKGZ1bmN0aW9uKSk7CiAKICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OldpbGxTdWJtaXRGb3JtKG1fZnJhbWUtPmZyYW1lSUQoKSwgc291cmNlRnJhbWUtPmZyYW1l
SUQoKSwgdmFsdWVzLCBsaXN0ZW5lcklELCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rl
cih1c2VyRGF0YS5nZXQoKSkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRl
eCA4ZDNiZTk5ZTRjOWYwMzBmMTNiNjhlZDA2MTcyMzI4Y2Q5ZDU0ODc3Li42ZjgwYTUwNjcxMThh
ZmY4ZmUxMTc1YzA2ODZlYTQ3MTZiMGRiMWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCkBAIC05NiwxNSArOTYsMTUgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZy
YW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFNob3coKSBPVkVSUklERTsKICAg
ICAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJD
b3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYkNvcmU6OkZy
YW1lUG9saWN5RnVuY3Rpb24sIGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0
ZT4sIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYkNvcmU6OkZyYW1lUG9s
aWN5RnVuY3Rpb24sIGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4pIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNl
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3Qg
V2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPiwgY29uc3QgU3RyaW5nJiBmcmFtZU5h
bWUsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24pIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgV2ViQ29y
ZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFBh
c3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPiwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlv
bikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbFBvbGljeUNoZWNrKCkgT1ZFUlJJ
REU7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xp
Y3koY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIE9WRVJSSURFOwogICAgIAogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTZW5kU3VibWl0RXZlbnQoUGFzc1JlZlB0cjxXZWJDb3Jl
OjpGb3JtU3RhdGU+KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU3Vi
bWl0Rm9ybShXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uLCBQYXNzUmVmUHRyPFdlYkNvcmU6
OkZvcm1TdGF0ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTdWJt
aXRGb3JtKFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPiwgV2ViQ29yZTo6RnJhbWVQb2xp
Y3lGdW5jdGlvbikgT1ZFUlJJREU7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIHJldmVydFRvUHJv
dmlzaW9uYWxTdGF0ZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciopIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRNYWluRG9jdW1lbnRFcnJvcihXZWJDb3JlOjpEb2N1bWVudExvYWRlcios
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDhlNWEwMTRlMzQ0YjZl
NGYxNjQ5NTFjYTY3YmEzMDdhYjA5YzdhMDQuLmZmOTZmNmE3YjdhODRjN2NmYTAzNDRjMWUxOWZi
Mzk2NTExNDQ2MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcApAQCAtMjE2LDEzICsyMTYsMTIgQEAgdm9pZCBXZWJGcmFtZTo6ZGlkUmVjZWl2
ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGxpc3RlbmVySUQsIFBvbGljeUFjdGlvbiBhY3Rpb24K
IAogICAgIEFTU0VSVChtX3BvbGljeUZ1bmN0aW9uKTsKIAotICAgIEZyYW1lUG9saWN5RnVuY3Rp
b24gZnVuY3Rpb24gPSBtX3BvbGljeUZ1bmN0aW9uOworICAgIEZyYW1lUG9saWN5RnVuY3Rpb24g
ZnVuY3Rpb24gPSBzdGQ6Om1vdmUobV9wb2xpY3lGdW5jdGlvbik7CiAKICAgICBpbnZhbGlkYXRl
UG9saWN5TGlzdGVuZXIoKTsKIAogICAgIG1fcG9saWN5RG93bmxvYWRJRCA9IGRvd25sb2FkSUQ7
Ci0KLSAgICAobV9jb3JlRnJhbWUtPmxvYWRlcigpLnBvbGljeUNoZWNrZXIoKS4qZnVuY3Rpb24p
KGFjdGlvbik7CisgICAgZnVuY3Rpb24oYWN0aW9uKTsKIH0KIAogdm9pZCBXZWJGcmFtZTo6c3Rh
cnREb3dubG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213437</attachid>
            <date>2013-10-04 20:21:31 -0700</date>
            <delta_ts>2013-10-04 20:56:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122362-20131004202130.patch</filename>
            <type>text/plain</type>
            <size>51351</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2OTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDRiZDNhNTE3OGM3OWY5
YzhmZTQ4ZjRiYmMxMGRlODU3MzI5NDQ0Yi4uMjdiMTU4ZGM0YTIzNzdkNTE0NjA0NzRhOTIyZWE5
ODgxMTEyYzA2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEzLTEwLTA0ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgRnJhbWVQb2xpY3lG
dW5jdGlvbiBzaG91bGQgYmUgYW4gc3RkOjpmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBtYWtlcyBwb2xpY3kgY2FsbGJhY2sgaGFu
ZGxpbmcgc2ltcGxlciBpbnNpZGUgV2ViS2l0LgorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hXaWxsU3VibWl0Rm9ybSk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAg
ICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KToKKyAgICAgICAgKiBsb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xp
Y3kpOgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOZXdXaW5kb3dQb2xp
Y3kpOgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tDb250ZW50UG9saWN5
KToKKwogMjAxMy0xMC0wNCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBVc2UgbW9yZSByZWZlcmVuY2VzIGluc3RlYWQgb2YgcG9pbnRlcnMgaW4gRG9jdW1lbnRP
cmRlcmVkTWFwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggZmY0YWZhNzIzN2RiOTc5YmQ2NDZiMzE0NTM2
NWRlY2U4ZDRhMGFmOC4uZjJiNjYzODE5OTQyNTQ5NjE0YmFiOGIzNDVjZTQ1NGY1MGIzZDdmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEzLTEwLTA0ICBBbmRlcnMgQ2Fy
bHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgRnJhbWVQb2xpY3lGdW5jdGlv
biBzaG91bGQgYmUgYW4gc3RkOjpmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVm
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6Y2FsbFBvbGlj
eUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNw
YXRjaFdpbGxTdWJtaXRGb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
RWZsOjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0Fj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEVmbC5oOgorCiAyMDEzLTEwLTAzICBTYW0gV2VpbmlnICA8c2Ft
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHNob3VsZFJ1YmJlckJhbmRJbkRpcmVjdGlv
biBmcm9tIHRoZSBXS0J1bmRsZVBhZ2VVSUNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDJjMzY0
NzYyNzc0ZTZmODRiZGM2NDVhYTdlY2Q2NmE0NjMzMWVjODUuLmJjNjQwNTcwZDUwNThhNDQ5NzVl
ZTIzNjg4YTAxZDNiMGM3YmViMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAor
MjAxMy0xMC0wNCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAg
ICAgIEZyYW1lUG9saWN5RnVuY3Rpb24gc2hvdWxkIGJlIGFuIHN0ZDo6ZnVuY3Rpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjM2MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybSk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAg
KFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2lu
ZG93QWN0aW9uKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0
ay5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5jcHA6CisgICAg
ICAgICh3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl91c2UpOgorICAgICAgICAod2Via2l0X3dl
Yl9wb2xpY3lfZGVjaXNpb25faWdub3JlKToKKyAgICAgICAgKHdlYmtpdF93ZWJfcG9saWN5X2Rl
Y2lzaW9uX2Rvd25sb2FkKToKKwogMjAxMy0xMC0wMyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJlbW92ZSBzaG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rpb24gZnJvbSB0
aGUgV0tCdW5kbGVQYWdlVUlDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBkZTg1NGNkZjdmMGRk
OWRlOTc4NDQ2ZDAxMmI4NmM2ZTZmOTkwOGJhLi5jNjhmY2Q3MDViYTkzMGFjYTIwOGQ3ZGUwYWI2
M2EzZWVkMjUxMjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTMtMTAt
MDQgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBGcmFt
ZVBvbGljeUZ1bmN0aW9uIHNob3VsZCBiZSBhbiBzdGQ6OmZ1bmN0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIzNjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAoV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybSk6CisK
IDIwMTMtMTAtMDQgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIENo
YW5nZSBTY3JpcHREZWJ1Z1NlcnZlciB0byB1c2UgRGVidWdnZXJDYWxsRnJhbWUgaW5zdGVhZCBv
ZiBKYXZhU2NyaXB0Q2FsbEZyYW1lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IGQwMzExNjI2ZmRjMGU5
NjEwNjM3MmZjZmUyMTQ3ZTk2YWFjZmZjODUuLmQ1ZWRlYWNmYTY3NzZiNTc4NWUyNzVkOTM2YTAx
YWQ0OTI4ZTBkY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMy0xMC0w
NCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEZyYW1l
UG9saWN5RnVuY3Rpb24gc2hvdWxkIGJlIGFuIHN0ZDo6ZnVuY3Rpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjM2MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24pOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFN1Ym1pdEZv
cm0pOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJlY2VpdmVkUG9saWN5RGVjaXNp
b24pOgorCiAyMDEzLTEwLTAzICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmVtb3ZlIHNob3VsZFJ1YmJlckJhbmRJbkRpcmVjdGlvbiBmcm9tIHRoZSBXS0J1bmRsZVBh
Z2VVSUNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGE2NWJmNjRkZWIzZWRlNGY3YmIwYzVjZThmMDA3ODhl
NDU5Y2ZiNGEuLmE1YzAxZjEwYzdkNTE1N2VlNzdlNThiYjE2YWVjM2Y1ZTI4YTgyNGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMy0xMC0wNCAgQW5kZXJzIENhcmxzc29uICA8YW5k
ZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEZyYW1lUG9saWN5RnVuY3Rpb24gc2hvdWxkIGJl
IGFuIHN0ZDo6ZnVuY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyMjM2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERl
Y2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaFdpbGxTdWJtaXRGb3JtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmRpZFJlY2VpdmVQb2xp
Y3lEZWNpc2lvbik6CisKIDIwMTMtMTAtMDQgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBVbmlmeSBydWJiZXItYmFuZCBjb250cm9sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuY3BwCmluZGV4IGVmNjAyZDY2MTI2YzUwYzlkMzAwZGRiNDg5YzA2MzE1OGQ4
YjY4ZTYuLjM3MDI3MmM3MmNlNGFjNGY3OWRmNmVlMDUzZTBkYmU3MWFlZjdkODYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0xMTQsMTEgKzExNCwxMSBAQCB2b2lk
IEVtcHR5Q2hyb21lQ2xpZW50OjpydW5PcGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVD
aG9vc2VyPikKIHsKIH0KIAotdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZVBvbGljeUZ1bmN0aW9uLCBjb25zdCBO
YXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3Jt
U3RhdGU+LCBjb25zdCBTdHJpbmcmKQordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9u
JiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBjb25zdCBT
dHJpbmcmLCBGcmFtZVBvbGljeUZ1bmN0aW9uKQogewogfQogCi12b2lkIEVtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVBv
bGljeUZ1bmN0aW9uLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+KQordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlv
bkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwg
RnJhbWVQb2xpY3lGdW5jdGlvbikKIHsKIH0KIApAQCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQgRW1w
dHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU2VuZFN1Ym1pdEV2ZW50KFBhc3NSZWZQ
dHI8Rm9ybVN0YXRlPikKIHsKIH0KIAotdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaFdpbGxTdWJtaXRGb3JtKEZyYW1lUG9saWN5RnVuY3Rpb24sIFBhc3NSZWZQdHI8Rm9ybVN0
YXRlPikKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9y
bShQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIEZyYW1lUG9saWN5RnVuY3Rpb24pCiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCBhNjc3MjllMDhhOWEzNmI0YzdlYjU2
NDM1ZWJiZjYyOTBmY2Y4YTYzLi45MjAzNzQxYTFiOWRkYzM5ZDU5MzIwNzdjNjdhYTRkMjYyNTll
Zjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0yNjEsMTUgKzI2MSwx
NSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBGcmFtZSogZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0
IE5hdmlnYXRpb25BY3Rpb24mKSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoU2hvdygpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2UoRnJhbWVQb2xpY3lGdW5jdGlvbiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZVBvbGljeUZ1bmN0aW9uLCBjb25zdCBOYXZp
Z2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3Rh
dGU+LCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24sIGNvbnN0
IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZv
cm1TdGF0ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGlj
eUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBGcmFtZVBvbGljeUZ1bmN0aW9uKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFj
dGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgY29u
c3QgU3RyaW5nJiwgRnJhbWVQb2xpY3lGdW5jdGlvbikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0
aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+
LCBGcmFtZVBvbGljeUZ1bmN0aW9uKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2Vs
UG9saWN5Q2hlY2soKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFVuYWJsZVRvSW1w
bGVtZW50UG9saWN5KGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KIAogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaFdpbGxTZW5kU3VibWl0RXZlbnQoUGFzc1JlZlB0cjxGb3JtU3RhdGU+KSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShGcmFtZVBvbGlj
eUZ1bmN0aW9uLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgRnJhbWVQ
b2xpY3lGdW5jdGlvbikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmV2ZXJ0VG9Qcm92
aXNpb25hbFN0YXRlKERvY3VtZW50TG9hZGVyKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE1h
aW5Eb2N1bWVudEVycm9yKERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggMzIwMGIyNGNkNzM5ZWRh
YWVlNTdiZWU2NjBlNWQ3NDIxZDJhMmY2MS4uNzY4MTdkNmYyZjJmOWYwM2RjMDNkNDVlZDUwMjVj
NzBiMDRkYmU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0yODY5
LDEwICsyODY5LDE0IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdh
dGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBpZiAoZm9ybVN0YXRlKQotICAgICAgICBtX2NsaWVudC5kaXNwYXRjaFdp
bGxTdWJtaXRGb3JtKCZQb2xpY3lDaGVja2VyOjpjb250aW51ZUxvYWRBZnRlcldpbGxTdWJtaXRG
b3JtLCBmb3JtU3RhdGUpOwotICAgIGVsc2UKKyAgICBpZiAoIWZvcm1TdGF0ZSkgewogICAgICAg
ICBjb250aW51ZUxvYWRBZnRlcldpbGxTdWJtaXRGb3JtKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBtX2NsaWVudC5kaXNwYXRjaFdpbGxTdWJtaXRGb3JtKGZvcm1TdGF0ZSwgW3Ro
aXNdKFBvbGljeUFjdGlvbiBhY3Rpb24pIHsKKyAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNvbnRp
bnVlTG9hZEFmdGVyV2lsbFN1Ym1pdEZvcm0oYWN0aW9uKTsKKyAgICB9KTsKIH0KIAogdm9pZCBG
cmFtZUxvYWRlcjo6Y2FsbENvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5KHZvaWQqIGFy
Z3VtZW50LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBl
NDY4Y2ExZTk2NzI4MjVhNWVjMzA5NzE5MzQ3OWE2ZDEzYTVlNDVmLi41ZGNlZjdkZDY1ZGI4NGUw
ZDA4Y2JiOTk5OWZiYWU3OTdjYjdlZGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXJDbGllbnQuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkljb25VUkwuaCIKICNp
bmNsdWRlICJMYXlvdXRNaWxlc3RvbmVzLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkUHJpb3Jp
dHkuaCIKKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC05Nyw3ICs5OCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKICAgICBjbGFzcyBXaWRnZXQ7CiAKLSAg
ICB0eXBlZGVmIHZvaWQgKFBvbGljeUNoZWNrZXI6OipGcmFtZVBvbGljeUZ1bmN0aW9uKShQb2xp
Y3lBY3Rpb24pOworICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkIChQb2xpY3lBY3Rpb24p
PiBGcmFtZVBvbGljeUZ1bmN0aW9uOwogCiAgICAgY2xhc3MgRnJhbWVMb2FkZXJDbGllbnQgewog
ICAgIHB1YmxpYzoKQEAgLTE2Myw5ICsxNjQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZpcnR1YWwgRnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBOYXZpZ2F0aW9uQWN0
aW9uJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hTaG93KCkgPSAwOwogCi0g
ICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZyYW1l
UG9saWN5RnVuY3Rpb24sIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZv
ck5ld1dpbmRvd0FjdGlvbihGcmFtZVBvbGljeUZ1bmN0aW9uLCBjb25zdCBOYXZpZ2F0aW9uQWN0
aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBjb25z
dCBTdHJpbmcmIGZyYW1lTmFtZSkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24sIGNvbnN0
IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZv
cm1TdGF0ZT4pID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIEZyYW1lUG9saWN5RnVuY3Rpb24pID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24m
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIGNvbnN0IFN0
cmluZyYgZnJhbWVOYW1lLCBGcmFtZVBvbGljeUZ1bmN0aW9uKSA9IDA7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2
aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0
YXRlPiwgRnJhbWVQb2xpY3lGdW5jdGlvbikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgY2Fu
Y2VsUG9saWN5Q2hlY2soKSA9IDA7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoVW5h
YmxlVG9JbXBsZW1lbnRQb2xpY3koY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKQEAgLTE3Myw3
ICsxNzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaFdpbGxSZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0KikgeyB9CiAKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChQYXNzUmVmUHRy
PEZvcm1TdGF0ZT4pID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFN1Ym1p
dEZvcm0oRnJhbWVQb2xpY3lGdW5jdGlvbiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+KSA9IDA7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKFBhc3NSZWZQdHI8Rm9y
bVN0YXRlPiwgRnJhbWVQb2xpY3lGdW5jdGlvbikgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCByZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUoRG9jdW1lbnRMb2FkZXIqKSA9IDA7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBzZXRNYWluRG9jdW1lbnRFcnJvcihEb2N1bWVudExvYWRlciosIGNvbnN0
IFJlc291cmNlRXJyb3ImKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UG9saWN5Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5j
cHAKaW5kZXggMjhmOGIzN2ZiOWY5ZTNmYjNjNDM0N2JhMDE4NjAwM2Q1NmIxNmVlMC4uMWJmZWNl
NmI0MjYyNjAzM2QxM2ZlZDczMzhmNDYwZDg4MmVmYzViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Qb2xpY3lDaGVja2VyLmNwcApAQCAtOTUsOCArOTUsOSBAQCB2b2lkIFBvbGljeUNoZWNrZXI6
OmNoZWNrTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIERv
Y3VtZQogICAgIG1fY2FsbGJhY2suc2V0KHJlcXVlc3QsIGZvcm1TdGF0ZS5nZXQoKSwgZnVuY3Rp
b24sIGFyZ3VtZW50KTsKIAogICAgIG1fZGVsZWdhdGVJc0RlY2lkaW5nTmF2aWdhdGlvblBvbGlj
eSA9IHRydWU7Ci0gICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24oJlBvbGljeUNoZWNrZXI6OmNvbnRpbnVlQWZ0ZXJOYXZp
Z2F0aW9uUG9saWN5LAotICAgICAgICBhY3Rpb24sIHJlcXVlc3QsIGZvcm1TdGF0ZSk7CisgICAg
bV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24oYWN0aW9uLCByZXF1ZXN0LCBmb3JtU3RhdGUsIFt0aGlzXShQb2xpY3lBY3Rpb24g
YWN0aW9uKSB7CisgICAgICAgIGNvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGFjdGlvbik7
CisgICAgfSk7CiAgICAgbV9kZWxlZ2F0ZUlzRGVjaWRpbmdOYXZpZ2F0aW9uUG9saWN5ID0gZmFs
c2U7CiB9CiAKQEAgLTExMCwxNSArMTExLDE3IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tO
ZXdXaW5kb3dQb2xpY3koY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBOZXdXaW5kCiAg
ICAgICAgIHJldHVybiBjb250aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeShQb2xpY3lJZ25vcmUp
OwogCiAgICAgbV9jYWxsYmFjay5zZXQocmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFtZU5hbWUsIGFj
dGlvbiwgZnVuY3Rpb24sIGFyZ3VtZW50KTsKLSAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgp
LmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKCZQb2xpY3lDaGVja2VyOjpj
b250aW51ZUFmdGVyTmV3V2luZG93UG9saWN5LAotICAgICAgICBhY3Rpb24sIHJlcXVlc3QsIGZv
cm1TdGF0ZSwgZnJhbWVOYW1lKTsKKyAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGFjdGlvbiwgcmVxdWVzdCwgZm9ybVN0
YXRlLCBmcmFtZU5hbWUsIFt0aGlzXShQb2xpY3lBY3Rpb24gYWN0aW9uKSB7CisgICAgICAgIGNv
bnRpbnVlQWZ0ZXJOZXdXaW5kb3dQb2xpY3koYWN0aW9uKTsKKyAgICB9KTsKIH0KIAogdm9pZCBQ
b2xpY3lDaGVja2VyOjpjaGVja0NvbnRlbnRQb2xpY3koY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIENvbnRlbnRQb2xpY3lEZWNpc2lvbkZ1bmN0aW9uIGZ1bmN0aW9uLCB2b2lkKiBh
cmd1bWVudCkKIHsKICAgICBtX2NhbGxiYWNrLnNldChmdW5jdGlvbiwgYXJndW1lbnQpOwotICAg
IG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZSgmUG9saWN5Q2hlY2tlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3ksCi0gICAgICAgIHJl
c3BvbnNlLCBtX2ZyYW1lLmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPnJlcXVlc3Qo
KSk7CisgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERlY2lkZVBvbGljeUZv
clJlc3BvbnNlKHJlc3BvbnNlLCBtX2ZyYW1lLmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVy
KCktPnJlcXVlc3QoKSwgW3RoaXNdKFBvbGljeUFjdGlvbiBhY3Rpb24pIHsKKyAgICAgICAgY29u
dGludWVBZnRlckNvbnRlbnRQb2xpY3koYWN0aW9uKTsKKyAgICB9KTsKIH0KIAogdm9pZCBQb2xp
Y3lDaGVja2VyOjpjYW5jZWxDaGVjaygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAKaW5kZXggNzhjMzQzZThk
MDM1MjE0NTcxYWJmMDc5OTcyMGM3ZmFiN2IxM2ZmOS4uODgyMTNmNDNlNGM1ODEyZTFlN2M0ZTA0
ZDIwYTI4NjQxMzA3NzU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcApAQCAtMTA2LDkgKzEwNiw3IEBA
IFN0cmluZyBGcmFtZUxvYWRlckNsaWVudEVmbDo6dXNlckFnZW50KGNvbnN0IFVSTCYpCiAKIHZv
aWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmNhbGxQb2xpY3lGdW5jdGlvbihGcmFtZVBvbGljeUZ1
bmN0aW9uIGZ1bmN0aW9uLCBQb2xpY3lBY3Rpb24gYWN0aW9uKQogewotICAgIEZyYW1lKiBmID0g
RVdLUHJpdmF0ZTo6Y29yZUZyYW1lKG1fZnJhbWUpOwotICAgIEFTU0VSVChmKTsKLSAgICAoZi0+
bG9hZGVyKCkucG9saWN5Q2hlY2tlcigpLipmdW5jdGlvbikoYWN0aW9uKTsKKyAgICBmdW5jdGlv
bihhY3Rpb24pOwogfQogCiBXVEY6OlBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IEZyYW1lTG9h
ZGVyQ2xpZW50RWZsOjpjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKQEAgLTExOSw3
ICsxMTcsNyBAQCBXVEY6OlBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IEZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdAogICAgIHJldHVybiBsb2FkZXIucmVs
ZWFzZSgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaFdpbGxTdWJt
aXRGb3JtKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24sIFBhc3NSZWZQdHI8Rm9ybVN0YXRl
PikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0oUGFz
c1JlZlB0cjxGb3JtU3RhdGU+LCBGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uKQogewogICAg
IC8vIEZJWE1FOiBUaGlzIGlzIHN1cmVseSB0b28gc2ltcGxlCiAgICAgQVNTRVJUKGZ1bmN0aW9u
KTsKQEAgLTI4Nyw3ICsyODUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRj
aERpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bgogICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAicmVzb3VyY2UscmVzcG9uc2UscmVj
ZWl2ZWQiLCAmcmVzcG9uc2UpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNw
YXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24s
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlc291cmNlUmVxdWVzdCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBGcmFtZVBvbGljeUZ1bmN0aW9u
IGZ1bmN0aW9uKQogewogICAgIC8vIHdlIG5lZWQgdG8gY2FsbCBkaXJlY3RseSBoZXJlIChjdXJy
ZW50bHkgY2FsbFBvbGljeUZ1bmN0aW9uIGRvZXMgdGhhdCEpCiAgICAgQVNTRVJUKGZ1bmN0aW9u
KTsKQEAgLTMwOSw3ICszMDcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRj
aERlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZyYW1lUG9saWN5RnVuY3Rpb24gZgogICAgICAgICBj
YWxsUG9saWN5RnVuY3Rpb24oZnVuY3Rpb24sIFBvbGljeURvd25sb2FkKTsKIH0KIAotdm9pZCBG
cmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rp
b24oRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1T
dGF0ZT4sIGNvbnN0IFN0cmluZyYpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRj
aERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0
YXRlPiwgY29uc3QgU3RyaW5nJiwgRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbikKIHsKICAg
ICBBU1NFUlQoZnVuY3Rpb24pOwogICAgIEFTU0VSVChtX2ZyYW1lKTsKQEAgLTMyNiw3ICszMjQs
NyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbihGcmFtZVBvbGljeUZ1bgogICAgIGNhbGxQb2xpY3lGdW5jdGlvbihmdW5j
dGlvbiwgUG9saWN5VXNlKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0
Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVu
Y3Rpb24sIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXNvdXJjZVJlcXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPikKK3ZvaWQgRnJhbWVM
b2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihj
b25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVz
b3VyY2VSZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIEZyYW1lUG9saWN5RnVuY3Rpb24g
ZnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKGZ1bmN0aW9uKTsKICAgICBBU1NFUlQobV9mcmFtZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRFZmwuaAppbmRleCBiMGQ2ZmMyNjRhY2EwY2ExYmExNmI0ZTFlZTAwYWZlNTZmOTAz
ODU4Li44Njg2ZWU5NWQyNTdhYzBhM2JkMmZhYzA2ZGE5MjZlOGNkODkyYjI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
RWZsLmgKQEAgLTExMSwxNSArMTExLDE1IEBAIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50RWZsIDog
cHVibGljIEZyYW1lTG9hZGVyQ2xpZW50IHsKICAgICB2aXJ0dWFsIEZyYW1lKiBkaXNwYXRjaENy
ZWF0ZVBhZ2UoY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYpOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaFNob3coKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBv
bGljeUZvclJlc3BvbnNlKEZyYW1lUG9saWN5RnVuY3Rpb24sIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiwgY29uc3Qg
TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFdURjo6UGFzc1JlZlB0
cjxGb3JtU3RhdGU+LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSk7Ci0gICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1bmN0
aW9uLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgV1RG
OjpQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lk
ZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBGcmFtZVBvbGljeUZ1bmN0aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFdURjo6UGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBjb25z
dCBTdHJpbmcmIGZyYW1lTmFtZSwgRnJhbWVQb2xpY3lGdW5jdGlvbik7CisgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0
aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgV1RGOjpQYXNzUmVmUHRyPEZvcm1T
dGF0ZT4sIEZyYW1lUG9saWN5RnVuY3Rpb24pOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxQb2xp
Y3lDaGVjaygpOwogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQ
b2xpY3koY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
V2lsbFNlbmRTdWJtaXRFdmVudChXVEY6OlBhc3NSZWZQdHI8Rm9ybVN0YXRlPikgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0oRnJhbWVQb2xpY3lGdW5jdGlvbiwg
V1RGOjpQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdp
bGxTdWJtaXRGb3JtKFdURjo6UGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBGcmFtZVBvbGljeUZ1bmN0
aW9uKTsKIAogICAgIHZpcnR1YWwgdm9pZCByZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUoRG9jdW1l
bnRMb2FkZXIqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TWFpbkRvY3VtZW50RXJyb3IoRG9j
dW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKaW5k
ZXggMTU4ZDkzYjBhNzE0YmE2ODlhNzRiOGJlNzVhMWU0ZGFiZjU0YjU1My4uNzZmZjUxYTUzNjE1
Yjk3MmU1YWE4NDdlMjk0NTBlOTU5Y2UxOGRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcApAQCAtMTUw
LDEzICsxNTAsMTMgQEAgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBG
cmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIKICAgICByZXR1cm4gbG9hZGVy
LnJlbGVhc2UoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3Vi
bWl0Rm9ybShGcmFtZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0aW9uLCBQYXNzUmVmUHRyPEZv
cm1TdGF0ZT4pCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTdWJtaXRGb3Jt
KFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgRnJhbWVQb2xpY3lGdW5jdGlvbiBwb2xpY3lGdW5jdGlv
bikKIHsKICAgICAvLyBGSVhNRTogVGhpcyBpcyBzdXJlbHkgdG9vIHNpbXBsZQogICAgIEFTU0VS
VChwb2xpY3lGdW5jdGlvbik7CiAgICAgaWYgKCFwb2xpY3lGdW5jdGlvbikKICAgICAgICAgcmV0
dXJuOwotICAgIChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS5wb2xpY3lDaGVja2VyKCkuKnBvbGlj
eUZ1bmN0aW9uKShQb2xpY3lVc2UpOworICAgIHBvbGljeUZ1bmN0aW9uKFBvbGljeVVzZSk7CiB9
CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKQEAgLTMzOSwx
NCArMzM5LDE0IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBsb2FkCiAgICAgZ19zaWduYWxfZW1pdF9i
eV9uYW1lKHdlYlZpZXcsICJyZXNvdXJjZS1yZXNwb25zZS1yZWNlaXZlZCIsIG1fZnJhbWUsIHdl
YlJlc291cmNlLCBuZXR3b3JrUmVzcG9uc2UuZ2V0KCkpOwogfQogCi12b2lkIEZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZyYW1lUG9saWN5RnVuY3Rp
b24gcG9saWN5RnVuY3Rpb24sIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBGcmFt
ZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0aW9uKQogewogICAgIEFTU0VSVChwb2xpY3lGdW5j
dGlvbik7CiAgICAgaWYgKCFwb2xpY3lGdW5jdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKHJlc291cmNlUmVxdWVzdC5pc051bGwoKSkgewotICAgICAgICAoY29yZShtX2ZyYW1lKS0+
bG9hZGVyKCkucG9saWN5Q2hlY2tlcigpLipwb2xpY3lGdW5jdGlvbikoUG9saWN5SWdub3JlKTsK
KyAgICAgICAgcG9saWN5RnVuY3Rpb24oUG9saWN5SWdub3JlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtNDE1LDE0ICs0MTUsMTQgQEAgc3RhdGljIFdlYktpdFdlYk5hdmlnYXRpb25B
Y3Rpb24qIGdldE5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWMKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCkp
OwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbihGcmFtZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0aW9uLCBjb25zdCBO
YXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VS
ZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lKQor
dm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dB
Y3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlc291cmNlUmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBjb25zdCBTdHJpbmcm
IGZyYW1lTmFtZSwgRnJhbWVQb2xpY3lGdW5jdGlvbiBwb2xpY3lGdW5jdGlvbikKIHsKICAgICBB
U1NFUlQocG9saWN5RnVuY3Rpb24pOwogICAgIGlmICghcG9saWN5RnVuY3Rpb24pCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChyZXNvdXJjZVJlcXVlc3QuaXNOdWxsKCkpIHsKLSAgICAgICAg
KGNvcmUobV9mcmFtZSktPmxvYWRlcigpLnBvbGljeUNoZWNrZXIoKS4qcG9saWN5RnVuY3Rpb24p
KFBvbGljeUlnbm9yZSk7CisgICAgICAgIHBvbGljeUZ1bmN0aW9uKFBvbGljeUlnbm9yZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ0MiwxNyArNDQyLDE3IEBAIHZvaWQgRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1l
UG9saWN5RnVuY3RpCiAgICAgLy8gRklYTUU6IEkgdGhpbmsgUXQgdmVyc2lvbiBtYXJzaGFscyB0
aGlzIHRvIGFub3RoZXIgdGhyZWFkIHNvIHdoZW4gd2UKICAgICAvLyBoYXZlIG11bHRpLXRocmVh
ZGVkIGRvd25sb2FkLCB3ZSBtaWdodCBuZWVkIHRvIGRvIHRoZSBzYW1lCiAgICAgaWYgKCFpc0hh
bmRsZWQpCi0gICAgICAgIChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS5wb2xpY3lDaGVja2VyKCku
KnBvbGljeUZ1bmN0aW9uKShQb2xpY3lVc2UpOworICAgICAgICBwb2xpY3lGdW5jdGlvbihQb2xp
Y3lVc2UpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiBwb2xpY3lGdW5jdGlvbiwg
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
c291cmNlUmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+KQordm9pZCBGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmln
YXRpb25BY3Rpb24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVl
c3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgRnJhbWVQb2xpY3lGdW5jdGlvbiBwb2xpY3lGdW5j
dGlvbikKIHsKICAgICBBU1NFUlQocG9saWN5RnVuY3Rpb24pOwogICAgIGlmICghcG9saWN5RnVu
Y3Rpb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChyZXNvdXJjZVJlcXVlc3QuaXNOdWxs
KCkpIHsKLSAgICAgICAgKGNvcmUobV9mcmFtZSktPmxvYWRlcigpLnBvbGljeUNoZWNrZXIoKS4q
cG9saWN5RnVuY3Rpb24pKFBvbGljeUlnbm9yZSk7CisgICAgICAgIHBvbGljeUZ1bmN0aW9uKFBv
bGljeUlnbm9yZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ2OSw3ICs0NjksNyBA
QCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24oRnJhbWVQb2xpY3lGdW5jdAogICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJW
aWV3LCAibmF2aWdhdGlvbi1yZXF1ZXN0ZWQiLCBtX2ZyYW1lLCByZXF1ZXN0LmdldCgpLCAmcmVz
cG9uc2UpOwogCiAgICAgaWYgKHJlc3BvbnNlID09IFdFQktJVF9OQVZJR0FUSU9OX1JFU1BPTlNF
X0lHTk9SRSkgewotICAgICAgICAoY29yZShtX2ZyYW1lKS0+bG9hZGVyKCkucG9saWN5Q2hlY2tl
cigpLipwb2xpY3lGdW5jdGlvbikoUG9saWN5SWdub3JlKTsKKyAgICAgICAgcG9saWN5RnVuY3Rp
b24oUG9saWN5SWdub3JlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaCBi
L1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgK
aW5kZXggZjU2ZmI1NGJmNjBlNDcwNWQyOThkMjQzMzI4ZDZlY2E1NWE1OTQwYy4uZGI0YjYxNTk3
YjQzYmYzNTU2NjZlYTJiNmZkYmY0M2U5MTY5ZDY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCkBAIC05OCwx
NSArOTgsMTUgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgV2ViQ29yZTo6
RnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9u
Jik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFNob3coKTsKIAotICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFtZVBv
bGljeUZ1bmN0aW9uLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9u
LCBjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4sIGNvbnN0IFdU
Rjo6U3RyaW5nJiBmcmFtZU5hbWUpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24s
IGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPik7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBX
ZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRp
b25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXVEY6OlBhc3NSZWZQ
dHI8V2ViQ29yZTo6Rm9ybVN0YXRlPiwgY29uc3QgV1RGOjpTdHJpbmcmIGZyYW1lTmFtZSwgV2Vi
Q29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlv
bkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdURjo6UGFzc1JlZlB0
cjxXZWJDb3JlOjpGb3JtU3RhdGU+LCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uKTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGNhbmNlbFBvbGljeUNoZWNrKCk7CiAKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTZW5kU3Vi
bWl0RXZlbnQoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4pIHsgfQotICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShXZWJDb3JlOjpGcmFtZVBvbGlj
eUZ1bmN0aW9uLCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPik7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKFdURjo6UGFzc1JlZlB0cjxXZWJD
b3JlOjpGb3JtU3RhdGU+LCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uKTsKIAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgcmV2ZXJ0VG9Qcm92aXNpb25hbFN0YXRlKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyKikgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRNYWluRG9jdW1lbnRFcnJvcihX
ZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNp
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicG9saWN5ZGVjaXNp
b24uY3BwCmluZGV4IDEzNjU3M2QxYzllOWJlZTVkNmUzNTU4OWFlMWMzZTJlMzRlMmJhMDIuLjky
Y2UzYjZkZmY0OWEyZTAwNzE5YWMyYTAyZjNmNjg2OTExODIyOTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmNwcApAQCAtODUs
NyArODUsNyBAQCB2b2lkIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX3VzZShXZWJLaXRXZWJQ
b2xpY3lEZWNpc2lvbiogZGVjaXNpb24pCiAgICAgV2ViS2l0V2ViUG9saWN5RGVjaXNpb25Qcml2
YXRlKiBwcml2ID0gZGVjaXNpb24tPnByaXY7CiAKICAgICBpZiAoIXByaXYtPmlzQ2FuY2VsbGVk
KQotICAgICAgICAoY29yZShwcml2LT5mcmFtZSktPmxvYWRlcigpLnBvbGljeUNoZWNrZXIoKS4q
KHByaXYtPmZyYW1lUG9saWN5RnVuY3Rpb24pKShXZWJDb3JlOjpQb2xpY3lVc2UpOworICAgICAg
ICBmcmFtZVBvbGljeUZ1bmN0aW9uKFdlYkNvcmU6OlBvbGljeVVzZSk7CiB9CiAKIC8qKgpAQCAt
MTAzLDcgKzEwMyw3IEBAIHZvaWQgd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25faWdub3JlKFdl
YktpdFdlYlBvbGljeURlY2lzaW9uKiBkZWNpc2lvbikKICAgICBXZWJLaXRXZWJQb2xpY3lEZWNp
c2lvblByaXZhdGUqIHByaXYgPSBkZWNpc2lvbi0+cHJpdjsKIAogICAgIGlmICghcHJpdi0+aXND
YW5jZWxsZWQpCi0gICAgICAgIChjb3JlKHByaXYtPmZyYW1lKS0+bG9hZGVyKCkucG9saWN5Q2hl
Y2tlcigpLioocHJpdi0+ZnJhbWVQb2xpY3lGdW5jdGlvbikpKFdlYkNvcmU6OlBvbGljeUlnbm9y
ZSk7CisgICAgICAgIGZyYW1lUG9saWN5RnVuY3Rpb24oV2ViQ29yZTo6UG9saWN5SWdub3JlKTsK
IH0KIAogLyoqCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCB3ZWJraXRfd2ViX3BvbGljeV9kZWNp
c2lvbl9kb3dubG9hZChXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiogZGVjaXNpb24pCiAgICAgV2Vi
S2l0V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlKiBwcml2ID0gZGVjaXNpb24tPnByaXY7CiAKICAg
ICBpZiAoIXByaXYtPmlzQ2FuY2VsbGVkKQotICAgICAgICAoY29yZShwcml2LT5mcmFtZSktPmxv
YWRlcigpLnBvbGljeUNoZWNrZXIoKS4qKHByaXYtPmZyYW1lUG9saWN5RnVuY3Rpb24pKShXZWJD
b3JlOjpQb2xpY3lEb3dubG9hZCk7CisgICAgICAgIGZyYW1lUG9saWN5RnVuY3Rpb24oV2ViQ29y
ZTo6UG9saWN5RG93bmxvYWQpOwogfQogCiB2b2lkIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9u
X2NhbmNlbChXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiogZGVjaXNpb24pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApp
bmRleCAxYmZkZDE5NjY1MDliYWZiMzA0OWEzN2Y4MDQ1OTE3ZjdhNjM2MGUzLi42YmQ1ODFjNDNk
NGExZDRjYWMzNWE0NzM1YTY2NTlhYWM2YzY5NjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTExMiwx
OCArMTEyLDE1IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpGcmFtZSogZGlzcGF0
Y2hDcmVhdGVQYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hTaG93KCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFtZVBvbGlj
eUZ1bmN0aW9uLCAKLSAgICAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0
aW9uLAotICAgICAgICBjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+LCBj
b25zdCBXVEY6OlN0cmluZyYgZnJhbWVOYW1lKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYkNvcmU6OkZyYW1lUG9s
aWN5RnVuY3Rpb24sCi0gICAgICAgIGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1T
dGF0ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZv
clJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3Qg
V2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPiwgY29uc3QgV1RGOjpTdHJpbmcmIGZy
YW1lTmFtZSwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBX
ZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+LCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1
bmN0aW9uKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUG9saWN5Q2hlY2soKSBP
VkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50UG9s
aWN5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBPVkVSUklERTsKIAogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaFdpbGxTZW5kU3VibWl0RXZlbnQoUGFzc1JlZlB0cjxXZWJDb3JlOjpG
b3JtU3RhdGU+KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU3VibWl0
Rm9ybShXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZv
cm1TdGF0ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTdWJtaXRG
b3JtKFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPiwgV2ViQ29yZTo6RnJhbWVQb2xpY3lG
dW5jdGlvbikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmV2ZXJ0VG9Qcm92aXNpb25h
bFN0YXRlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHNldE1haW5Eb2N1bWVudEVycm9yKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA3
MmM1MjdjYTY5ZTQ0NDMzNmMwN2ZlZDIwZWE1YTQ1M2RkZWNhODM4Li5kZDUyNjM1OWQzYTIxZDg1
ZjdmYTViMWE1ZDA3ZTY4ZjBjOTBkNWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtNzQzLDggKzc0
Myw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoU2hvdygpCiAgICAgW1t3
ZWJWaWV3IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3U2hvdzp3ZWJWaWV3XTsKIH0KIAot
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZShGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uLAotICAgIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24pCiB7CiAgICAgV2ViVmlldyAqd2ViVmlldyA9
IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAKQEAgLTc1MiwyOSArNzUxLDI3IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2Uo
RnJhbWVQb2xpY3lGdW5jdGlvbiBmCiAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpZGVQb2xp
Y3lGb3JNSU1FVHlwZTpyZXNwb25zZS5taW1lVHlwZSgpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChVcGRhdGVIVFRQ
Qm9keSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lOm1f
d2ViRnJhbWUuZ2V0KCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpc2lvbkxp
c3RlbmVyOnNldFVwUG9saWN5TGlzdGVuZXIoZnVuY3Rpb24pLmdldCgpXTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZWNpc2lvbkxpc3RlbmVyOnNldFVwUG9saWN5TGlzdGVuZXIo
c3RkOjptb3ZlKGZ1bmN0aW9uKSkuZ2V0KCldOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZVBvbGljeUZ1
bmN0aW9uIGZ1bmN0aW9uLAotICAgIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0
YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25B
Y3Rpb24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRy
PEZvcm1TdGF0ZT4gZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgRnJhbWVQb2xp
Y3lGdW5jdGlvbiBmdW5jdGlvbikKIHsKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2ViVmll
dyhtX3dlYkZyYW1lLmdldCgpKTsKICAgICBbW3dlYlZpZXcgX3BvbGljeURlbGVnYXRlRm9yd2Fy
ZGVyXSB3ZWJWaWV3OndlYlZpZXcKICAgICAgICAgICAgIGRlY2lkZVBvbGljeUZvck5ld1dpbmRv
d0FjdGlvbjphY3Rpb25EaWN0aW9uYXJ5KGFjdGlvbiwgZm9ybVN0YXRlKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KFVwZGF0
ZUhUVFBCb2R5KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RnJhbWVOYW1lOmZy
YW1lTmFtZQotICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpc2lvbkxpc3RlbmVyOnNldFVw
UG9saWN5TGlzdGVuZXIoZnVuY3Rpb24pLmdldCgpXTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVjaXNpb25MaXN0ZW5lcjpzZXRVcFBvbGljeUxpc3RlbmVyKHN0ZDo6bW92ZShmdW5jdGlv
bikpLmdldCgpXTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24s
Ci0gICAgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUpCit2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUsIEZyYW1lUG9saWN5RnVuY3Rp
b24gZnVuY3Rpb24pCiB7CiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJG
cmFtZS5nZXQoKSk7CiAgICAgW1t3ZWJWaWV3IF9wb2xpY3lEZWxlZ2F0ZUZvcndhcmRlcl0gd2Vi
Vmlldzp3ZWJWaWV3CiAgICAgICAgICAgICAgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbjphY3Rpb25EaWN0aW9uYXJ5KGFjdGlvbiwgZm9ybVN0YXRlKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoVXBk
YXRlSFRUUEJvZHkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
cmFtZTptX3dlYkZyYW1lLmdldCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVj
aXNpb25MaXN0ZW5lcjpzZXRVcFBvbGljeUxpc3RlbmVyKGZ1bmN0aW9uKS5nZXQoKV07CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaXNpb25MaXN0ZW5lcjpzZXRVcFBvbGljeUxp
c3RlbmVyKHN0ZDo6bW92ZShmdW5jdGlvbikpLmdldCgpXTsKIH0KIAogdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6Y2FuY2VsUG9saWN5Q2hlY2soKQpAQCAtODExLDE2ICs4MDgsMTYgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU2VuZFN1Ym1pdEV2ZW50KFBhc3NS
ZWZQdHI8V2ViQ29yZTo6Rm9ybVMKICAgICBDYWxsRm9ybURlbGVnYXRlKGdldFdlYlZpZXcobV93
ZWJGcmFtZS5nZXQoKSksIEBzZWxlY3Rvcih3aWxsU2VuZFN1Ym1pdEV2ZW50VG9Gb3JtOmluRnJh
bWU6d2l0aFZhbHVlczopLCBmb3JtRWxlbWVudCwgbV93ZWJGcmFtZS5nZXQoKSwgdmFsdWVzKTsK
IH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShG
cmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0
YXRlKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShQ
YXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlLCBGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0
aW9uKQogewogICAgIGlkIDxXZWJGb3JtRGVsZWdhdGU+IGZvcm1EZWxlZ2F0ZSA9IFtnZXRXZWJW
aWV3KG1fd2ViRnJhbWUuZ2V0KCkpIF9mb3JtRGVsZWdhdGVdOwogICAgIGlmICghZm9ybURlbGVn
YXRlKSB7Ci0gICAgICAgIChjb3JlKG1fd2ViRnJhbWUuZ2V0KCkpLT5sb2FkZXIoKS5wb2xpY3lD
aGVja2VyKCkuKmZ1bmN0aW9uKShQb2xpY3lVc2UpOworICAgICAgICBmdW5jdGlvbihQb2xpY3lV
c2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgTlNEaWN0aW9uYXJ5ICp2YWx1ZXMg
PSBtYWtlRm9ybUZpZWxkVmFsdWVzRGljdGlvbmFyeShmb3JtU3RhdGUuZ2V0KCkpOwotICAgIENh
bGxGb3JtRGVsZWdhdGUoZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKSwgQHNlbGVjdG9yKGZy
YW1lOnNvdXJjZUZyYW1lOndpbGxTdWJtaXRGb3JtOndpdGhWYWx1ZXM6c3VibWlzc2lvbkxpc3Rl
bmVyOiksIG1fd2ViRnJhbWUuZ2V0KCksIGtpdChmb3JtU3RhdGUtPnNvdXJjZURvY3VtZW50KCkt
PmZyYW1lKCkpLCBraXQoZm9ybVN0YXRlLT5mb3JtKCkpLCB2YWx1ZXMsIHNldFVwUG9saWN5TGlz
dGVuZXIoZnVuY3Rpb24pLmdldCgpKTsKKyAgICBDYWxsRm9ybURlbGVnYXRlKGdldFdlYlZpZXco
bV93ZWJGcmFtZS5nZXQoKSksIEBzZWxlY3RvcihmcmFtZTpzb3VyY2VGcmFtZTp3aWxsU3VibWl0
Rm9ybTp3aXRoVmFsdWVzOnN1Ym1pc3Npb25MaXN0ZW5lcjopLCBtX3dlYkZyYW1lLmdldCgpLCBr
aXQoZm9ybVN0YXRlLT5zb3VyY2VEb2N1bWVudCgpLT5mcmFtZSgpKSwga2l0KGZvcm1TdGF0ZS0+
Zm9ybSgpKSwgdmFsdWVzLCBzZXRVcFBvbGljeUxpc3RlbmVyKHN0ZDo6bW92ZShmdW5jdGlvbikp
LmdldCgpKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6cmV2ZXJ0VG9Qcm92aXNp
b25hbFN0YXRlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCkBAIC0yMDEzLDcgKzIwMTAsNyBAQCBQ
YXNzUmVmUHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpj
cmVhdGVOZXR3b3JraW5nQ29udGV4dAogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgX2ZyYW1l
ID0gZnJhbWU7Ci0gICAgX3BvbGljeUZ1bmN0aW9uID0gcG9saWN5RnVuY3Rpb247CisgICAgX3Bv
bGljeUZ1bmN0aW9uID0gc3RkOjptb3ZlKHBvbGljeUZ1bmN0aW9uKTsKIAogICAgIHJldHVybiBz
ZWxmOwogfQpAQCAtMjAzNywxMSArMjAzNCwxMSBAQCBQYXNzUmVmUHRyPEZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVOZXR3b3JraW5nQ29udGV4dAog
ICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIEZyYW1lUG9saWN5RnVuY3Rp
b24gcG9saWN5RnVuY3Rpb24gPSBfcG9saWN5RnVuY3Rpb247CisgICAgRnJhbWVQb2xpY3lGdW5j
dGlvbiBwb2xpY3lGdW5jdGlvbiA9IHN0ZDo6bW92ZShfcG9saWN5RnVuY3Rpb24pOwogICAgIF9w
b2xpY3lGdW5jdGlvbiA9IG51bGxwdHI7CiAKICAgICBBU1NFUlQocG9saWN5RnVuY3Rpb24pOwot
ICAgIChmcmFtZS0+bG9hZGVyKCkucG9saWN5Q2hlY2tlcigpLipwb2xpY3lGdW5jdGlvbikoYWN0
aW9uKTsKKyAgICBwb2xpY3lGdW5jdGlvbihhY3Rpb24pOwogfQogCiAtICh2b2lkKWlnbm9yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCmluZGV4IGRjNWJkMWUzN2RhMDFjNDE1NDc1OGRlMjk3MGI3NjMxMzg3
NWQ2ODIuLjRlZmU0NTFmZTczZjRkZTUyMDdjNDc3MTViYWM2NDFmMDBlMDZlM2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKQEAgLTU1OCw3ICs1NTgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaFNob3coKQogICAgICAgICB1aS0+d2ViVmlld1Nob3cod2ViVmlldyk7CiB9CiAK
LXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UoRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3ZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRnJh
bWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbikKIHsKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gbV93
ZWJGcmFtZS0+d2ViVmlldygpOwogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKG1fd2ViRnJh
bWUpOwpAQCAtNTczLDEwICs1NzMsMTAgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZVBvbGljeUZ1bmN0aW9uIGYKICAgICBp
ZiAoU1VDQ0VFREVEKHBvbGljeURlbGVnYXRlLT5kZWNpZGVQb2xpY3lGb3JNSU1FVHlwZSh3ZWJW
aWV3LCBCU3RyaW5nKHJlc3BvbnNlLm1pbWVUeXBlKCkpLCB1cmxSZXF1ZXN0LmdldCgpLCBtX3dl
YkZyYW1lLCBzZXRVcFBvbGljeUxpc3RlbmVyKGZ1bmN0aW9uKS5nZXQoKSkpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICAoY29yZUZyYW1lLT5sb2FkZXIoKS5wb2xpY3lDaGVja2VyKCkuKmZ1bmN0
aW9uKShQb2xpY3lVc2UpOworICAgIGZ1bmN0aW9uKFBvbGljeVVzZSk7CiB9CiAKLXZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9u
KEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24sIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFj
dGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0
ZT4gZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSkKK3ZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5h
dmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQ
YXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwg
RnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbikKIHsKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0g
bV93ZWJGcmFtZS0+d2ViVmlldygpOwogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKG1fd2Vi
RnJhbWUpOwpAQCAtNTkyLDEwICs1OTIsMTAgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVQb2xpY3lGdW4KICAg
ICBpZiAoU1VDQ0VFREVEKHBvbGljeURlbGVnYXRlLT5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dB
Y3Rpb24od2ViVmlldywgYWN0aW9uSW5mb3JtYXRpb24uZ2V0KCksIHVybFJlcXVlc3QuZ2V0KCks
IEJTdHJpbmcoZnJhbWVOYW1lKSwgc2V0VXBQb2xpY3lMaXN0ZW5lcihmdW5jdGlvbikuZ2V0KCkp
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgKGNvcmVGcmFtZS0+bG9hZGVyKCkucG9saWN5Q2hl
Y2tlcigpLipmdW5jdGlvbikoUG9saWN5VXNlKTsKKyAgICBmdW5jdGlvbihQb2xpY3lVc2UpOwog
fQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwgY29uc3QgTmF2aWdh
dGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBhc3NS
ZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFj
dGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBhc3NSZWZQdHI8
Rm9ybVN0YXRlPiBmb3JtU3RhdGUsIEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24pCiB7CiAg
ICAgV2ViVmlldyogd2ViVmlldyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKICAgICBGcmFtZSog
Y29yZUZyYW1lID0gY29yZShtX3dlYkZyYW1lKTsKQEAgLTYxMSw3ICs2MTEsNyBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24oRnJhbWVQb2xpY3lGdQogICAgIGlmIChTVUNDRUVERUQocG9saWN5RGVsZWdhdGUtPmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24od2ViVmlldywgYWN0aW9uSW5mb3JtYXRpb24uZ2V0
KCksIHVybFJlcXVlc3QuZ2V0KCksIG1fd2ViRnJhbWUsIHNldFVwUG9saWN5TGlzdGVuZXIoZnVu
Y3Rpb24pLmdldCgpKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIChjb3JlRnJhbWUtPmxvYWRl
cigpLnBvbGljeUNoZWNrZXIoKS4qZnVuY3Rpb24pKFBvbGljeVVzZSk7CisgICAgZnVuY3Rpb24o
UG9saWN5VXNlKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hVbmFi
bGVUb0ltcGxlbWVudFBvbGljeShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAgLTYyOSw3
ICs2MjksNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTZW5kU3Vi
bWl0RXZlbnQoUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtUwogewogfQogCi12b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKEZyYW1lUG9saWN5RnVuY3Rpb24g
ZnVuY3Rpb24sIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUpCit2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKFBhc3NSZWZQdHI8Rm9ybVN0YXRl
PiBmb3JtU3RhdGUsIEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24pCiB7CiAgICAgV2ViVmll
dyogd2ViVmlldyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKICAgICBGcmFtZSogY29yZUZyYW1l
ID0gY29yZShtX3dlYkZyYW1lKTsKQEAgLTYzOCw3ICs2MzgsNyBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVu
Y3Rpb24sCiAgICAgQ09NUHRyPElXZWJGb3JtRGVsZWdhdGU+IGZvcm1EZWxlZ2F0ZTsKIAogICAg
IGlmIChGQUlMRUQod2ViVmlldy0+Zm9ybURlbGVnYXRlKCZmb3JtRGVsZWdhdGUpKSkgewotICAg
ICAgICAoY29yZUZyYW1lLT5sb2FkZXIoKS5wb2xpY3lDaGVja2VyKCkuKmZ1bmN0aW9uKShQb2xp
Y3lVc2UpOworICAgICAgICBmdW5jdGlvbihQb2xpY3lVc2UpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC02NTcsNyArNjU3LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hXaWxsU3VibWl0Rm9ybShGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uLAogICAgICAg
ICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogQWRkIGEgc2FuZSBkZWZhdWx0IGltcGxlbWVudGF0
aW9uCi0gICAgKGNvcmVGcmFtZS0+bG9hZGVyKCkucG9saWN5Q2hlY2tlcigpLipmdW5jdGlvbiko
UG9saWN5VXNlKTsKKyAgICBmdW5jdGlvbihQb2xpY3lVc2UpOwogfQogCiB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpzZXRNYWluRG9jdW1lbnRFcnJvcihEb2N1bWVudExvYWRlciosIGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQpAQCAtMTM3OSw1ICsxMzc5LDUgQEAgdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9u
KQogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKG1fd2ViRnJhbWUpOwogICAgIEFTU0VSVChj
b3JlRnJhbWUpOwogCi0gICAgKGNvcmVGcmFtZS0+bG9hZGVyKCkucG9saWN5Q2hlY2tlcigpLipm
dW5jdGlvbikoYWN0aW9uKTsKKyAgICBmdW5jdGlvbihhY3Rpb24pOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgK
aW5kZXggNTFiNjJkNmFmY2UxNDAyYjdkNzg2MzcxNzkzYmE4MzI2Yjk2ZGM5Ny4uMDZmMGUyN2Qw
YmY2MTJiZDM4ZGFhNjE0NzFkMDY1MzE2NjQ1ZmQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC05Nyw5
ICs5Nyw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2Fk
KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTGF5b3V0KFdlYkNvcmU6
OkxheW91dE1pbGVzdG9uZXMpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRv
d0FjdGlvbihXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uLCBjb25zdCBXZWJDb3JlOjpOYXZp
Z2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpGb3JtU3RhdGU+LCBjb25zdCBXVEY6OlN0cmluZyYgZnJhbWVOYW1lKSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uKFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24sIGNvbnN0IFdlYkNvcmU6Ok5hdmln
YXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRy
PFdlYkNvcmU6OkZvcm1TdGF0ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1
bmN0aW9uKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRl
PiwgY29uc3QgV1RGOjpTdHJpbmcmIGZyYW1lTmFtZSwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5j
dGlvbikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+
LCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgY2FuY2VsUG9saWN5Q2hlY2soKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
KSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggYThkYjYw
N2ZhYjQzZGZjNjc3YTA2MTMxNjA2OGExYWRiMDAyMDdmYS4uM2NlM2UwNzk4ZGIwOWQ2YzBhYmFh
OWQ4ZGU5YzgxOWZkYjhkM2FmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
QEAgLTYxOCwxNCArNjE4LDE0IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
U2hvdygpCiAgICAgd2ViUGFnZS0+c2hvdygpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZyYW1lUG9saWN5RnVuY3Rpb24g
ZnVuY3Rpb24sIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERl
Y2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rp
b24pCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAo
IXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghcmVxdWVzdC51cmwoKS5zdHJp
bmcoKSkgewotICAgICAgICAobV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnBvbGljeUNo
ZWNrZXIoKS4qZnVuY3Rpb24pKFBvbGljeVVzZSk7CisgICAgICAgIGZ1bmN0aW9uKFBvbGljeVVz
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTYzNCwxMSArNjM0LDExIEBAIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoRnJh
bWVQb2xpY3lGdW5jdGlvbiBmCiAgICAgLy8gTm90aWZ5IHRoZSBidW5kbGUgY2xpZW50LgogICAg
IFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBwb2xpY3kgPSB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRs
ZVBvbGljeUNsaWVudCgpLmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKHdlYlBhZ2UsIG1fZnJhbWUs
IHJlc3BvbnNlLCByZXF1ZXN0LCB1c2VyRGF0YSk7CiAgICAgaWYgKHBvbGljeSA9PSBXS0J1bmRs
ZVBhZ2VQb2xpY3lBY3Rpb25Vc2UpIHsKLSAgICAgICAgKG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5s
b2FkZXIoKS5wb2xpY3lDaGVja2VyKCkuKmZ1bmN0aW9uKShQb2xpY3lVc2UpOworICAgICAgICBm
dW5jdGlvbihQb2xpY3lVc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0
X3QgbGlzdGVuZXJJRCA9IG1fZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXIoZnVuY3Rpb24pOwor
ICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKHN0
ZDo6bW92ZShmdW5jdGlvbikpOwogICAgIGJvb2wgcmVjZWl2ZWRQb2xpY3lBY3Rpb247CiAgICAg
dWludDY0X3QgcG9saWN5QWN0aW9uOwogICAgIHVpbnQ2NF90IGRvd25sb2FkSUQ7CkBAIC02NTIs
NyArNjUyLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xp
Y3lGb3JSZXNwb25zZShGcmFtZVBvbGljeUZ1bmN0aW9uIGYKICAgICAgICAgbV9mcmFtZS0+ZGlk
UmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIHN0YXRpY19jYXN0PFBvbGljeUFjdGlv
bj4ocG9saWN5QWN0aW9uKSwgZG93bmxvYWRJRCk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1lUG9saWN5
RnVuY3Rpb24gZnVuY3Rpb24sIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rp
b24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+
IGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUpCit2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZp
Z2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJh
bWVOYW1lLCBGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uKQogewogICAgIFdlYlBhZ2UqIHdl
YlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCF3ZWJQYWdlKQpAQCAtNjY1LDI3ICs2
NjUsMjcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVQb2xpY3lGdW4KICAgICAvLyBOb3RpZnkgdGhlIGJ1bmRs
ZSBjbGllbnQuCiAgICAgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIHBvbGljeSA9IHdlYlBhZ2Ut
PmluamVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KCkuZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0
aW9uKHdlYlBhZ2UsIG1fZnJhbWUsIGFjdGlvbi5nZXQoKSwgcmVxdWVzdCwgZnJhbWVOYW1lLCB1
c2VyRGF0YSk7CiAgICAgaWYgKHBvbGljeSA9PSBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb25Vc2Up
IHsKLSAgICAgICAgKG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5wb2xpY3lDaGVja2Vy
KCkuKmZ1bmN0aW9uKShQb2xpY3lVc2UpOworICAgICAgICBmdW5jdGlvbihQb2xpY3lVc2UpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCiAKLSAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbV9m
cmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihmdW5jdGlvbik7CisgICAgdWludDY0X3QgbGlzdGVu
ZXJJRCA9IG1fZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXIoc3RkOjptb3ZlKGZ1bmN0aW9uKSk7
CiAKICAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KICAgICB3ZWJQYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihtX2ZyYW1l
LT5mcmFtZUlEKCksIGFjdGlvbi0+bmF2aWdhdGlvblR5cGUoKSwgYWN0aW9uLT5tb2RpZmllcnMo
KSwgYWN0aW9uLT5tb3VzZUJ1dHRvbigpLCByZXF1ZXN0LCBmcmFtZU5hbWUsIGxpc3RlbmVySUQs
IEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOwogfQog
Ci12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwgY29uc3QgTmF2aWdhdGlv
bkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlKQordm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmln
YXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSwgRnJhbWVQb2xpY3lGdW5jdGlv
biBmdW5jdGlvbikKIHsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwog
ICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gQWx3YXlzIGlnbm9y
ZSByZXF1ZXN0cyB3aXRoIGVtcHR5IFVSTHMuIAotICAgIGlmIChyZXF1ZXN0LmlzRW1wdHkoKSkg
eyAKLSAgICAgICAgKG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5wb2xpY3lDaGVja2Vy
KCkuKmZ1bmN0aW9uKShQb2xpY3lJZ25vcmUpOyAKLSAgICAgICAgcmV0dXJuOyAKKyAgICBpZiAo
cmVxdWVzdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgZnVuY3Rpb24oUG9saWN5SWdub3JlKTsKKyAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOwpA
QCAtNjk1LDExICs2OTUsMTEgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKEZyYW1lUG9saWN5RnUKICAgICAvLyBOb3Rp
ZnkgdGhlIGJ1bmRsZSBjbGllbnQuCiAgICAgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIHBvbGlj
eSA9IHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KCkuZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbih3ZWJQYWdlLCBtX2ZyYW1lLCBhY3Rpb24uZ2V0KCksIHJlcXVlc3Qs
IHVzZXJEYXRhKTsKICAgICBpZiAocG9saWN5ID09IFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvblVz
ZSkgewotICAgICAgICAobV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnBvbGljeUNoZWNr
ZXIoKS4qZnVuY3Rpb24pKFBvbGljeVVzZSk7CisgICAgICAgIGZ1bmN0aW9uKFBvbGljeVVzZSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgbGlzdGVuZXJJRCA9
IG1fZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXIoZnVuY3Rpb24pOworICAgIHVpbnQ2NF90IGxp
c3RlbmVySUQgPSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKHN0ZDo6bW92ZShmdW5jdGlv
bikpOwogICAgIGJvb2wgcmVjZWl2ZWRQb2xpY3lBY3Rpb247CiAgICAgdWludDY0X3QgcG9saWN5
QWN0aW9uOwogICAgIHVpbnQ2NF90IGRvd25sb2FkSUQ7CkBAIC03NDksNyArNzQ5LDcgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU2VuZFN1Ym1pdEV2ZW50KFBhc3NS
ZWZQdHI8Rm9ybVN0YXRlPiBwcnAKICAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUZvcm1DbGll
bnQoKS53aWxsU2VuZFN1Ym1pdEV2ZW50KHdlYlBhZ2UsIGZvcm0sIG1fZnJhbWUsIHNvdXJjZUZy
YW1lLCBmb3JtU3RhdGUtPnRleHRGaWVsZFZhbHVlcygpKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1
bmN0aW9uLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gcHJwRm9ybVN0YXRlKQordm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShQYXNzUmVmUHRyPEZvcm1TdGF0
ZT4gcHJwRm9ybVN0YXRlLCBGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uKQogewogICAgIFdl
YlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCF3ZWJQYWdlKQpAQCAt
NzcwLDcgKzc3MCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFN1
Ym1pdEZvcm0oRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwKICAgICB3ZWJQYWdlLT5pbmpl
Y3RlZEJ1bmRsZUZvcm1DbGllbnQoKS53aWxsU3VibWl0Rm9ybSh3ZWJQYWdlLCBmb3JtLCBtX2Zy
YW1lLCBzb3VyY2VGcmFtZSwgdmFsdWVzLCB1c2VyRGF0YSk7CiAKIAotICAgIHVpbnQ2NF90IGxp
c3RlbmVySUQgPSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKGZ1bmN0aW9uKTsKKyAgICB1
aW50NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihzdGQ6Om1v
dmUoZnVuY3Rpb24pKTsKIAogICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6V2lsbFN1Ym1pdEZvcm0obV9mcmFtZS0+ZnJhbWVJRCgpLCBzb3VyY2VGcmFtZS0+ZnJhbWVJ
RCgpLCB2YWx1ZXMsIGxpc3RlbmVySUQsIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVy
KHVzZXJEYXRhLmdldCgpKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4
IDhkM2JlOTllNGM5ZjAzMGYxM2I2OGVkMDYxNzIzMjhjZDlkNTQ4NzcuLjZmODBhNTA2NzExOGFm
ZjhmZTExNzVjMDY4NmVhNDcxNmIwZGIxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgKQEAgLTk2LDE1ICs5NiwxNSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6RnJh
bWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoU2hvdygpIE9WRVJSSURFOwogICAg
IAotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdlYkNv
cmU6OkZyYW1lUG9saWN5RnVuY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oV2ViQ29yZTo6RnJh
bWVQb2xpY3lGdW5jdGlvbiwgY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRl
PiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2ViQ29yZTo6RnJhbWVQb2xp
Y3lGdW5jdGlvbiwgY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2Uo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24pIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBX
ZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFt
ZSwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBXZWJDb3Jl
OjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUGFz
c1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+LCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9u
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUG9saWN5Q2hlY2soKSBPVkVSUklE
RTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBvbGlj
eShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgT1ZFUlJJREU7CiAgICAgCiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChQYXNzUmVmUHRyPFdlYkNvcmU6
OkZvcm1TdGF0ZT4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTdWJt
aXRGb3JtKFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24sIFBhc3NSZWZQdHI8V2ViQ29yZTo6
Rm9ybVN0YXRlPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFN1Ym1p
dEZvcm0oUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+LCBXZWJDb3JlOjpGcmFtZVBvbGlj
eUZ1bmN0aW9uKSBPVkVSUklERTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgcmV2ZXJ0VG9Qcm92
aXNpb25hbFN0YXRlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIHNldE1haW5Eb2N1bWVudEVycm9yKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggOGU1YTAxNGUzNDRiNmU0
ZjE2NDk1MWNhNjdiYTMwN2FiMDljN2EwNC4uZmY5NmY2YTdiN2E4NGM3Y2ZhMDM0NGMxZTE5ZmIz
OTY1MTE0NDYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwCkBAIC0yMTYsMTMgKzIxNiwxMiBAQCB2b2lkIFdlYkZyYW1lOjpkaWRSZWNlaXZl
UG9saWN5RGVjaXNpb24odWludDY0X3QgbGlzdGVuZXJJRCwgUG9saWN5QWN0aW9uIGFjdGlvbgog
CiAgICAgQVNTRVJUKG1fcG9saWN5RnVuY3Rpb24pOwogCi0gICAgRnJhbWVQb2xpY3lGdW5jdGlv
biBmdW5jdGlvbiA9IG1fcG9saWN5RnVuY3Rpb247CisgICAgRnJhbWVQb2xpY3lGdW5jdGlvbiBm
dW5jdGlvbiA9IHN0ZDo6bW92ZShtX3BvbGljeUZ1bmN0aW9uKTsKIAogICAgIGludmFsaWRhdGVQ
b2xpY3lMaXN0ZW5lcigpOwogCiAgICAgbV9wb2xpY3lEb3dubG9hZElEID0gZG93bmxvYWRJRDsK
LQotICAgIChtX2NvcmVGcmFtZS0+bG9hZGVyKCkucG9saWN5Q2hlY2tlcigpLipmdW5jdGlvbiko
YWN0aW9uKTsKKyAgICBmdW5jdGlvbihhY3Rpb24pOwogfQogCiB2b2lkIFdlYkZyYW1lOjpzdGFy
dERvd25sb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213438</attachid>
            <date>2013-10-04 20:56:48 -0700</date>
            <delta_ts>2013-10-04 21:47:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122362-20131004205647.patch</filename>
            <type>text/plain</type>
            <size>51922</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2OTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDRiZDNhNTE3OGM3OWY5
YzhmZTQ4ZjRiYmMxMGRlODU3MzI5NDQ0Yi4uMjdiMTU4ZGM0YTIzNzdkNTE0NjA0NzRhOTIyZWE5
ODgxMTEyYzA2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEzLTEwLTA0ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgRnJhbWVQb2xpY3lG
dW5jdGlvbiBzaG91bGQgYmUgYW4gc3RkOjpmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBtYWtlcyBwb2xpY3kgY2FsbGJhY2sgaGFu
ZGxpbmcgc2ltcGxlciBpbnNpZGUgV2ViS2l0LgorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hXaWxsU3VibWl0Rm9ybSk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAg
ICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KToKKyAgICAgICAgKiBsb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xp
Y3kpOgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOZXdXaW5kb3dQb2xp
Y3kpOgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tDb250ZW50UG9saWN5
KToKKwogMjAxMy0xMC0wNCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBVc2UgbW9yZSByZWZlcmVuY2VzIGluc3RlYWQgb2YgcG9pbnRlcnMgaW4gRG9jdW1lbnRP
cmRlcmVkTWFwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggZmY0YWZhNzIzN2RiOTc5YmQ2NDZiMzE0NTM2
NWRlY2U4ZDRhMGFmOC4uZjJiNjYzODE5OTQyNTQ5NjE0YmFiOGIzNDVjZTQ1NGY1MGIzZDdmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEzLTEwLTA0ICBBbmRlcnMgQ2Fy
bHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgRnJhbWVQb2xpY3lGdW5jdGlv
biBzaG91bGQgYmUgYW4gc3RkOjpmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVm
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6Y2FsbFBvbGlj
eUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNw
YXRjaFdpbGxTdWJtaXRGb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
RWZsOjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0Fj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEVmbC5oOgorCiAyMDEzLTEwLTAzICBTYW0gV2VpbmlnICA8c2Ft
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHNob3VsZFJ1YmJlckJhbmRJbkRpcmVjdGlv
biBmcm9tIHRoZSBXS0J1bmRsZVBhZ2VVSUNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDJjMzY0
NzYyNzc0ZTZmODRiZGM2NDVhYTdlY2Q2NmE0NjMzMWVjODUuLmJjNjQwNTcwZDUwNThhNDQ5NzVl
ZTIzNjg4YTAxZDNiMGM3YmViMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAor
MjAxMy0xMC0wNCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAg
ICAgIEZyYW1lUG9saWN5RnVuY3Rpb24gc2hvdWxkIGJlIGFuIHN0ZDo6ZnVuY3Rpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjM2MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybSk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAg
KFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2lu
ZG93QWN0aW9uKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0
ay5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5jcHA6CisgICAg
ICAgICh3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl91c2UpOgorICAgICAgICAod2Via2l0X3dl
Yl9wb2xpY3lfZGVjaXNpb25faWdub3JlKToKKyAgICAgICAgKHdlYmtpdF93ZWJfcG9saWN5X2Rl
Y2lzaW9uX2Rvd25sb2FkKToKKwogMjAxMy0xMC0wMyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJlbW92ZSBzaG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rpb24gZnJvbSB0
aGUgV0tCdW5kbGVQYWdlVUlDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBkZTg1NGNkZjdmMGRk
OWRlOTc4NDQ2ZDAxMmI4NmM2ZTZmOTkwOGJhLi5jNjhmY2Q3MDViYTkzMGFjYTIwOGQ3ZGUwYWI2
M2EzZWVkMjUxMjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTMtMTAt
MDQgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBGcmFt
ZVBvbGljeUZ1bmN0aW9uIHNob3VsZCBiZSBhbiBzdGQ6OmZ1bmN0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIzNjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAoV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybSk6CisK
IDIwMTMtMTAtMDQgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIENo
YW5nZSBTY3JpcHREZWJ1Z1NlcnZlciB0byB1c2UgRGVidWdnZXJDYWxsRnJhbWUgaW5zdGVhZCBv
ZiBKYXZhU2NyaXB0Q2FsbEZyYW1lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IGQwMzExNjI2ZmRjMGU5
NjEwNjM3MmZjZmUyMTQ3ZTk2YWFjZmZjODUuLmQ1ZWRlYWNmYTY3NzZiNTc4NWUyNzVkOTM2YTAx
YWQ0OTI4ZTBkY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMy0xMC0w
NCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEZyYW1l
UG9saWN5RnVuY3Rpb24gc2hvdWxkIGJlIGFuIHN0ZDo6ZnVuY3Rpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjM2MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24pOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFN1Ym1pdEZv
cm0pOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJlY2VpdmVkUG9saWN5RGVjaXNp
b24pOgorCiAyMDEzLTEwLTAzICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmVtb3ZlIHNob3VsZFJ1YmJlckJhbmRJbkRpcmVjdGlvbiBmcm9tIHRoZSBXS0J1bmRsZVBh
Z2VVSUNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGE2NWJmNjRkZWIzZWRlNGY3YmIwYzVjZThmMDA3ODhl
NDU5Y2ZiNGEuLmE1YzAxZjEwYzdkNTE1N2VlNzdlNThiYjE2YWVjM2Y1ZTI4YTgyNGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMy0xMC0wNCAgQW5kZXJzIENhcmxzc29uICA8YW5k
ZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEZyYW1lUG9saWN5RnVuY3Rpb24gc2hvdWxkIGJl
IGFuIHN0ZDo6ZnVuY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyMjM2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERl
Y2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaFdpbGxTdWJtaXRGb3JtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmRpZFJlY2VpdmVQb2xp
Y3lEZWNpc2lvbik6CisKIDIwMTMtMTAtMDQgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBVbmlmeSBydWJiZXItYmFuZCBjb250cm9sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuY3BwCmluZGV4IGVmNjAyZDY2MTI2YzUwYzlkMzAwZGRiNDg5YzA2MzE1OGQ4
YjY4ZTYuLjM3MDI3MmM3MmNlNGFjNGY3OWRmNmVlMDUzZTBkYmU3MWFlZjdkODYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0xMTQsMTEgKzExNCwxMSBAQCB2b2lk
IEVtcHR5Q2hyb21lQ2xpZW50OjpydW5PcGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVD
aG9vc2VyPikKIHsKIH0KIAotdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZVBvbGljeUZ1bmN0aW9uLCBjb25zdCBO
YXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3Jt
U3RhdGU+LCBjb25zdCBTdHJpbmcmKQordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9u
JiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBjb25zdCBT
dHJpbmcmLCBGcmFtZVBvbGljeUZ1bmN0aW9uKQogewogfQogCi12b2lkIEVtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVBv
bGljeUZ1bmN0aW9uLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+KQordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlv
bkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwg
RnJhbWVQb2xpY3lGdW5jdGlvbikKIHsKIH0KIApAQCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQgRW1w
dHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU2VuZFN1Ym1pdEV2ZW50KFBhc3NSZWZQ
dHI8Rm9ybVN0YXRlPikKIHsKIH0KIAotdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaFdpbGxTdWJtaXRGb3JtKEZyYW1lUG9saWN5RnVuY3Rpb24sIFBhc3NSZWZQdHI8Rm9ybVN0
YXRlPikKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9y
bShQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIEZyYW1lUG9saWN5RnVuY3Rpb24pCiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCBhNjc3MjllMDhhOWEzNmI0YzdlYjU2
NDM1ZWJiZjYyOTBmY2Y4YTYzLi45MjAzNzQxYTFiOWRkYzM5ZDU5MzIwNzdjNjdhYTRkMjYyNTll
Zjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0yNjEsMTUgKzI2MSwx
NSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBGcmFtZSogZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0
IE5hdmlnYXRpb25BY3Rpb24mKSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoU2hvdygpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2UoRnJhbWVQb2xpY3lGdW5jdGlvbiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZVBvbGljeUZ1bmN0aW9uLCBjb25zdCBOYXZp
Z2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3Rh
dGU+LCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24sIGNvbnN0
IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZv
cm1TdGF0ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGlj
eUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBGcmFtZVBvbGljeUZ1bmN0aW9uKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFj
dGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgY29u
c3QgU3RyaW5nJiwgRnJhbWVQb2xpY3lGdW5jdGlvbikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0
aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+
LCBGcmFtZVBvbGljeUZ1bmN0aW9uKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2Vs
UG9saWN5Q2hlY2soKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFVuYWJsZVRvSW1w
bGVtZW50UG9saWN5KGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KIAogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaFdpbGxTZW5kU3VibWl0RXZlbnQoUGFzc1JlZlB0cjxGb3JtU3RhdGU+KSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShGcmFtZVBvbGlj
eUZ1bmN0aW9uLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgRnJhbWVQ
b2xpY3lGdW5jdGlvbikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmV2ZXJ0VG9Qcm92
aXNpb25hbFN0YXRlKERvY3VtZW50TG9hZGVyKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE1h
aW5Eb2N1bWVudEVycm9yKERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggMzIwMGIyNGNkNzM5ZWRh
YWVlNTdiZWU2NjBlNWQ3NDIxZDJhMmY2MS4uNzY4MTdkNmYyZjJmOWYwM2RjMDNkNDVlZDUwMjVj
NzBiMDRkYmU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0yODY5
LDEwICsyODY5LDE0IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdh
dGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBpZiAoZm9ybVN0YXRlKQotICAgICAgICBtX2NsaWVudC5kaXNwYXRjaFdp
bGxTdWJtaXRGb3JtKCZQb2xpY3lDaGVja2VyOjpjb250aW51ZUxvYWRBZnRlcldpbGxTdWJtaXRG
b3JtLCBmb3JtU3RhdGUpOwotICAgIGVsc2UKKyAgICBpZiAoIWZvcm1TdGF0ZSkgewogICAgICAg
ICBjb250aW51ZUxvYWRBZnRlcldpbGxTdWJtaXRGb3JtKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBtX2NsaWVudC5kaXNwYXRjaFdpbGxTdWJtaXRGb3JtKGZvcm1TdGF0ZSwgW3Ro
aXNdKFBvbGljeUFjdGlvbiBhY3Rpb24pIHsKKyAgICAgICAgcG9saWN5Q2hlY2tlcigpLmNvbnRp
bnVlTG9hZEFmdGVyV2lsbFN1Ym1pdEZvcm0oYWN0aW9uKTsKKyAgICB9KTsKIH0KIAogdm9pZCBG
cmFtZUxvYWRlcjo6Y2FsbENvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5KHZvaWQqIGFy
Z3VtZW50LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBl
NDY4Y2ExZTk2NzI4MjVhNWVjMzA5NzE5MzQ3OWE2ZDEzYTVlNDVmLi41ZGNlZjdkZDY1ZGI4NGUw
ZDA4Y2JiOTk5OWZiYWU3OTdjYjdlZGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXJDbGllbnQuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkljb25VUkwuaCIKICNp
bmNsdWRlICJMYXlvdXRNaWxlc3RvbmVzLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkUHJpb3Jp
dHkuaCIKKyNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC05Nyw3ICs5OCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKICAgICBjbGFzcyBXaWRnZXQ7CiAKLSAg
ICB0eXBlZGVmIHZvaWQgKFBvbGljeUNoZWNrZXI6OipGcmFtZVBvbGljeUZ1bmN0aW9uKShQb2xp
Y3lBY3Rpb24pOworICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkIChQb2xpY3lBY3Rpb24p
PiBGcmFtZVBvbGljeUZ1bmN0aW9uOwogCiAgICAgY2xhc3MgRnJhbWVMb2FkZXJDbGllbnQgewog
ICAgIHB1YmxpYzoKQEAgLTE2Myw5ICsxNjQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZpcnR1YWwgRnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBOYXZpZ2F0aW9uQWN0
aW9uJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hTaG93KCkgPSAwOwogCi0g
ICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZyYW1l
UG9saWN5RnVuY3Rpb24sIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZv
ck5ld1dpbmRvd0FjdGlvbihGcmFtZVBvbGljeUZ1bmN0aW9uLCBjb25zdCBOYXZpZ2F0aW9uQWN0
aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBjb25z
dCBTdHJpbmcmIGZyYW1lTmFtZSkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24sIGNvbnN0
IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZv
cm1TdGF0ZT4pID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIEZyYW1lUG9saWN5RnVuY3Rpb24pID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24m
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIGNvbnN0IFN0
cmluZyYgZnJhbWVOYW1lLCBGcmFtZVBvbGljeUZ1bmN0aW9uKSA9IDA7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2
aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0
YXRlPiwgRnJhbWVQb2xpY3lGdW5jdGlvbikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgY2Fu
Y2VsUG9saWN5Q2hlY2soKSA9IDA7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoVW5h
YmxlVG9JbXBsZW1lbnRQb2xpY3koY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKQEAgLTE3Myw3
ICsxNzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaFdpbGxSZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0KikgeyB9CiAKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChQYXNzUmVmUHRy
PEZvcm1TdGF0ZT4pID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFN1Ym1p
dEZvcm0oRnJhbWVQb2xpY3lGdW5jdGlvbiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+KSA9IDA7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKFBhc3NSZWZQdHI8Rm9y
bVN0YXRlPiwgRnJhbWVQb2xpY3lGdW5jdGlvbikgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCByZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUoRG9jdW1lbnRMb2FkZXIqKSA9IDA7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBzZXRNYWluRG9jdW1lbnRFcnJvcihEb2N1bWVudExvYWRlciosIGNvbnN0
IFJlc291cmNlRXJyb3ImKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UG9saWN5Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5j
cHAKaW5kZXggMjhmOGIzN2ZiOWY5ZTNmYjNjNDM0N2JhMDE4NjAwM2Q1NmIxNmVlMC4uMWJmZWNl
NmI0MjYyNjAzM2QxM2ZlZDczMzhmNDYwZDg4MmVmYzViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Qb2xpY3lDaGVja2VyLmNwcApAQCAtOTUsOCArOTUsOSBAQCB2b2lkIFBvbGljeUNoZWNrZXI6
OmNoZWNrTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIERv
Y3VtZQogICAgIG1fY2FsbGJhY2suc2V0KHJlcXVlc3QsIGZvcm1TdGF0ZS5nZXQoKSwgZnVuY3Rp
b24sIGFyZ3VtZW50KTsKIAogICAgIG1fZGVsZWdhdGVJc0RlY2lkaW5nTmF2aWdhdGlvblBvbGlj
eSA9IHRydWU7Ci0gICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24oJlBvbGljeUNoZWNrZXI6OmNvbnRpbnVlQWZ0ZXJOYXZp
Z2F0aW9uUG9saWN5LAotICAgICAgICBhY3Rpb24sIHJlcXVlc3QsIGZvcm1TdGF0ZSk7CisgICAg
bV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24oYWN0aW9uLCByZXF1ZXN0LCBmb3JtU3RhdGUsIFt0aGlzXShQb2xpY3lBY3Rpb24g
YWN0aW9uKSB7CisgICAgICAgIGNvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGFjdGlvbik7
CisgICAgfSk7CiAgICAgbV9kZWxlZ2F0ZUlzRGVjaWRpbmdOYXZpZ2F0aW9uUG9saWN5ID0gZmFs
c2U7CiB9CiAKQEAgLTExMCwxNSArMTExLDE3IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tO
ZXdXaW5kb3dQb2xpY3koY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBOZXdXaW5kCiAg
ICAgICAgIHJldHVybiBjb250aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeShQb2xpY3lJZ25vcmUp
OwogCiAgICAgbV9jYWxsYmFjay5zZXQocmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFtZU5hbWUsIGFj
dGlvbiwgZnVuY3Rpb24sIGFyZ3VtZW50KTsKLSAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgp
LmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKCZQb2xpY3lDaGVja2VyOjpj
b250aW51ZUFmdGVyTmV3V2luZG93UG9saWN5LAotICAgICAgICBhY3Rpb24sIHJlcXVlc3QsIGZv
cm1TdGF0ZSwgZnJhbWVOYW1lKTsKKyAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGFjdGlvbiwgcmVxdWVzdCwgZm9ybVN0
YXRlLCBmcmFtZU5hbWUsIFt0aGlzXShQb2xpY3lBY3Rpb24gYWN0aW9uKSB7CisgICAgICAgIGNv
bnRpbnVlQWZ0ZXJOZXdXaW5kb3dQb2xpY3koYWN0aW9uKTsKKyAgICB9KTsKIH0KIAogdm9pZCBQ
b2xpY3lDaGVja2VyOjpjaGVja0NvbnRlbnRQb2xpY3koY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIENvbnRlbnRQb2xpY3lEZWNpc2lvbkZ1bmN0aW9uIGZ1bmN0aW9uLCB2b2lkKiBh
cmd1bWVudCkKIHsKICAgICBtX2NhbGxiYWNrLnNldChmdW5jdGlvbiwgYXJndW1lbnQpOwotICAg
IG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZSgmUG9saWN5Q2hlY2tlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3ksCi0gICAgICAgIHJl
c3BvbnNlLCBtX2ZyYW1lLmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPnJlcXVlc3Qo
KSk7CisgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERlY2lkZVBvbGljeUZv
clJlc3BvbnNlKHJlc3BvbnNlLCBtX2ZyYW1lLmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVy
KCktPnJlcXVlc3QoKSwgW3RoaXNdKFBvbGljeUFjdGlvbiBhY3Rpb24pIHsKKyAgICAgICAgY29u
dGludWVBZnRlckNvbnRlbnRQb2xpY3koYWN0aW9uKTsKKyAgICB9KTsKIH0KIAogdm9pZCBQb2xp
Y3lDaGVja2VyOjpjYW5jZWxDaGVjaygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAKaW5kZXggNzhjMzQzZThk
MDM1MjE0NTcxYWJmMDc5OTcyMGM3ZmFiN2IxM2ZmOS4uODgyMTNmNDNlNGM1ODEyZTFlN2M0ZTA0
ZDIwYTI4NjQxMzA3NzU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcApAQCAtMTA2LDkgKzEwNiw3IEBA
IFN0cmluZyBGcmFtZUxvYWRlckNsaWVudEVmbDo6dXNlckFnZW50KGNvbnN0IFVSTCYpCiAKIHZv
aWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmNhbGxQb2xpY3lGdW5jdGlvbihGcmFtZVBvbGljeUZ1
bmN0aW9uIGZ1bmN0aW9uLCBQb2xpY3lBY3Rpb24gYWN0aW9uKQogewotICAgIEZyYW1lKiBmID0g
RVdLUHJpdmF0ZTo6Y29yZUZyYW1lKG1fZnJhbWUpOwotICAgIEFTU0VSVChmKTsKLSAgICAoZi0+
bG9hZGVyKCkucG9saWN5Q2hlY2tlcigpLipmdW5jdGlvbikoYWN0aW9uKTsKKyAgICBmdW5jdGlv
bihhY3Rpb24pOwogfQogCiBXVEY6OlBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IEZyYW1lTG9h
ZGVyQ2xpZW50RWZsOjpjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKQEAgLTExOSw3
ICsxMTcsNyBAQCBXVEY6OlBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IEZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdAogICAgIHJldHVybiBsb2FkZXIucmVs
ZWFzZSgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaFdpbGxTdWJt
aXRGb3JtKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24sIFBhc3NSZWZQdHI8Rm9ybVN0YXRl
PikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0oUGFz
c1JlZlB0cjxGb3JtU3RhdGU+LCBGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uKQogewogICAg
IC8vIEZJWE1FOiBUaGlzIGlzIHN1cmVseSB0b28gc2ltcGxlCiAgICAgQVNTRVJUKGZ1bmN0aW9u
KTsKQEAgLTI4Nyw3ICsyODUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRj
aERpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bgogICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAicmVzb3VyY2UscmVzcG9uc2UscmVj
ZWl2ZWQiLCAmcmVzcG9uc2UpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNw
YXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24s
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlc291cmNlUmVxdWVzdCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBGcmFtZVBvbGljeUZ1bmN0aW9u
IGZ1bmN0aW9uKQogewogICAgIC8vIHdlIG5lZWQgdG8gY2FsbCBkaXJlY3RseSBoZXJlIChjdXJy
ZW50bHkgY2FsbFBvbGljeUZ1bmN0aW9uIGRvZXMgdGhhdCEpCiAgICAgQVNTRVJUKGZ1bmN0aW9u
KTsKQEAgLTMwOSw3ICszMDcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRj
aERlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZyYW1lUG9saWN5RnVuY3Rpb24gZgogICAgICAgICBj
YWxsUG9saWN5RnVuY3Rpb24oZnVuY3Rpb24sIFBvbGljeURvd25sb2FkKTsKIH0KIAotdm9pZCBG
cmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rp
b24oRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1T
dGF0ZT4sIGNvbnN0IFN0cmluZyYpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRj
aERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0
YXRlPiwgY29uc3QgU3RyaW5nJiwgRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbikKIHsKICAg
ICBBU1NFUlQoZnVuY3Rpb24pOwogICAgIEFTU0VSVChtX2ZyYW1lKTsKQEAgLTMyNiw3ICszMjQs
NyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbihGcmFtZVBvbGljeUZ1bgogICAgIGNhbGxQb2xpY3lGdW5jdGlvbihmdW5j
dGlvbiwgUG9saWN5VXNlKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0
Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVu
Y3Rpb24sIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXNvdXJjZVJlcXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPikKK3ZvaWQgRnJhbWVM
b2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihj
b25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVz
b3VyY2VSZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIEZyYW1lUG9saWN5RnVuY3Rpb24g
ZnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKGZ1bmN0aW9uKTsKICAgICBBU1NFUlQobV9mcmFtZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRFZmwuaAppbmRleCBiMGQ2ZmMyNjRhY2EwY2ExYmExNmI0ZTFlZTAwYWZlNTZmOTAz
ODU4Li44Njg2ZWU5NWQyNTdhYzBhM2JkMmZhYzA2ZGE5MjZlOGNkODkyYjI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
RWZsLmgKQEAgLTExMSwxNSArMTExLDE1IEBAIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50RWZsIDog
cHVibGljIEZyYW1lTG9hZGVyQ2xpZW50IHsKICAgICB2aXJ0dWFsIEZyYW1lKiBkaXNwYXRjaENy
ZWF0ZVBhZ2UoY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYpOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaFNob3coKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBv
bGljeUZvclJlc3BvbnNlKEZyYW1lUG9saWN5RnVuY3Rpb24sIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiwgY29uc3Qg
TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFdURjo6UGFzc1JlZlB0
cjxGb3JtU3RhdGU+LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSk7Ci0gICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1bmN0
aW9uLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgV1RG
OjpQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lk
ZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBGcmFtZVBvbGljeUZ1bmN0aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFdURjo6UGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBjb25z
dCBTdHJpbmcmIGZyYW1lTmFtZSwgRnJhbWVQb2xpY3lGdW5jdGlvbik7CisgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0
aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgV1RGOjpQYXNzUmVmUHRyPEZvcm1T
dGF0ZT4sIEZyYW1lUG9saWN5RnVuY3Rpb24pOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxQb2xp
Y3lDaGVjaygpOwogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQ
b2xpY3koY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
V2lsbFNlbmRTdWJtaXRFdmVudChXVEY6OlBhc3NSZWZQdHI8Rm9ybVN0YXRlPikgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0oRnJhbWVQb2xpY3lGdW5jdGlvbiwg
V1RGOjpQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdp
bGxTdWJtaXRGb3JtKFdURjo6UGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBGcmFtZVBvbGljeUZ1bmN0
aW9uKTsKIAogICAgIHZpcnR1YWwgdm9pZCByZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUoRG9jdW1l
bnRMb2FkZXIqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TWFpbkRvY3VtZW50RXJyb3IoRG9j
dW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKaW5k
ZXggMTU4ZDkzYjBhNzE0YmE2ODlhNzRiOGJlNzVhMWU0ZGFiZjU0YjU1My4uNzZmZjUxYTUzNjE1
Yjk3MmU1YWE4NDdlMjk0NTBlOTU5Y2UxOGRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcApAQCAtMTUw
LDEzICsxNTAsMTMgQEAgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBG
cmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIKICAgICByZXR1cm4gbG9hZGVy
LnJlbGVhc2UoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3Vi
bWl0Rm9ybShGcmFtZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0aW9uLCBQYXNzUmVmUHRyPEZv
cm1TdGF0ZT4pCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTdWJtaXRGb3Jt
KFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgRnJhbWVQb2xpY3lGdW5jdGlvbiBwb2xpY3lGdW5jdGlv
bikKIHsKICAgICAvLyBGSVhNRTogVGhpcyBpcyBzdXJlbHkgdG9vIHNpbXBsZQogICAgIEFTU0VS
VChwb2xpY3lGdW5jdGlvbik7CiAgICAgaWYgKCFwb2xpY3lGdW5jdGlvbikKICAgICAgICAgcmV0
dXJuOwotICAgIChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS5wb2xpY3lDaGVja2VyKCkuKnBvbGlj
eUZ1bmN0aW9uKShQb2xpY3lVc2UpOworICAgIHBvbGljeUZ1bmN0aW9uKFBvbGljeVVzZSk7CiB9
CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKQEAgLTMzOSwx
NCArMzM5LDE0IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBsb2FkCiAgICAgZ19zaWduYWxfZW1pdF9i
eV9uYW1lKHdlYlZpZXcsICJyZXNvdXJjZS1yZXNwb25zZS1yZWNlaXZlZCIsIG1fZnJhbWUsIHdl
YlJlc291cmNlLCBuZXR3b3JrUmVzcG9uc2UuZ2V0KCkpOwogfQogCi12b2lkIEZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZyYW1lUG9saWN5RnVuY3Rp
b24gcG9saWN5RnVuY3Rpb24sIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBGcmFt
ZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0aW9uKQogewogICAgIEFTU0VSVChwb2xpY3lGdW5j
dGlvbik7CiAgICAgaWYgKCFwb2xpY3lGdW5jdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKHJlc291cmNlUmVxdWVzdC5pc051bGwoKSkgewotICAgICAgICAoY29yZShtX2ZyYW1lKS0+
bG9hZGVyKCkucG9saWN5Q2hlY2tlcigpLipwb2xpY3lGdW5jdGlvbikoUG9saWN5SWdub3JlKTsK
KyAgICAgICAgcG9saWN5RnVuY3Rpb24oUG9saWN5SWdub3JlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtNDE1LDE0ICs0MTUsMTQgQEAgc3RhdGljIFdlYktpdFdlYk5hdmlnYXRpb25B
Y3Rpb24qIGdldE5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWMKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCkp
OwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbihGcmFtZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0aW9uLCBjb25zdCBO
YXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VS
ZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lKQor
dm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dB
Y3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlc291cmNlUmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBjb25zdCBTdHJpbmcm
IGZyYW1lTmFtZSwgRnJhbWVQb2xpY3lGdW5jdGlvbiBwb2xpY3lGdW5jdGlvbikKIHsKICAgICBB
U1NFUlQocG9saWN5RnVuY3Rpb24pOwogICAgIGlmICghcG9saWN5RnVuY3Rpb24pCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChyZXNvdXJjZVJlcXVlc3QuaXNOdWxsKCkpIHsKLSAgICAgICAg
KGNvcmUobV9mcmFtZSktPmxvYWRlcigpLnBvbGljeUNoZWNrZXIoKS4qcG9saWN5RnVuY3Rpb24p
KFBvbGljeUlnbm9yZSk7CisgICAgICAgIHBvbGljeUZ1bmN0aW9uKFBvbGljeUlnbm9yZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ0MiwxNyArNDQyLDE3IEBAIHZvaWQgRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1l
UG9saWN5RnVuY3RpCiAgICAgLy8gRklYTUU6IEkgdGhpbmsgUXQgdmVyc2lvbiBtYXJzaGFscyB0
aGlzIHRvIGFub3RoZXIgdGhyZWFkIHNvIHdoZW4gd2UKICAgICAvLyBoYXZlIG11bHRpLXRocmVh
ZGVkIGRvd25sb2FkLCB3ZSBtaWdodCBuZWVkIHRvIGRvIHRoZSBzYW1lCiAgICAgaWYgKCFpc0hh
bmRsZWQpCi0gICAgICAgIChjb3JlKG1fZnJhbWUpLT5sb2FkZXIoKS5wb2xpY3lDaGVja2VyKCku
KnBvbGljeUZ1bmN0aW9uKShQb2xpY3lVc2UpOworICAgICAgICBwb2xpY3lGdW5jdGlvbihQb2xp
Y3lVc2UpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiBwb2xpY3lGdW5jdGlvbiwg
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
c291cmNlUmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+KQordm9pZCBGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmln
YXRpb25BY3Rpb24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVl
c3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgRnJhbWVQb2xpY3lGdW5jdGlvbiBwb2xpY3lGdW5j
dGlvbikKIHsKICAgICBBU1NFUlQocG9saWN5RnVuY3Rpb24pOwogICAgIGlmICghcG9saWN5RnVu
Y3Rpb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChyZXNvdXJjZVJlcXVlc3QuaXNOdWxs
KCkpIHsKLSAgICAgICAgKGNvcmUobV9mcmFtZSktPmxvYWRlcigpLnBvbGljeUNoZWNrZXIoKS4q
cG9saWN5RnVuY3Rpb24pKFBvbGljeUlnbm9yZSk7CisgICAgICAgIHBvbGljeUZ1bmN0aW9uKFBv
bGljeUlnbm9yZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ2OSw3ICs0NjksNyBA
QCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24oRnJhbWVQb2xpY3lGdW5jdAogICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJW
aWV3LCAibmF2aWdhdGlvbi1yZXF1ZXN0ZWQiLCBtX2ZyYW1lLCByZXF1ZXN0LmdldCgpLCAmcmVz
cG9uc2UpOwogCiAgICAgaWYgKHJlc3BvbnNlID09IFdFQktJVF9OQVZJR0FUSU9OX1JFU1BPTlNF
X0lHTk9SRSkgewotICAgICAgICAoY29yZShtX2ZyYW1lKS0+bG9hZGVyKCkucG9saWN5Q2hlY2tl
cigpLipwb2xpY3lGdW5jdGlvbikoUG9saWN5SWdub3JlKTsKKyAgICAgICAgcG9saWN5RnVuY3Rp
b24oUG9saWN5SWdub3JlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaCBi
L1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgK
aW5kZXggZjU2ZmI1NGJmNjBlNDcwNWQyOThkMjQzMzI4ZDZlY2E1NWE1OTQwYy4uZGI0YjYxNTk3
YjQzYmYzNTU2NjZlYTJiNmZkYmY0M2U5MTY5ZDY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCkBAIC05OCwx
NSArOTgsMTUgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgV2ViQ29yZTo6
RnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9u
Jik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFNob3coKTsKIAotICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFtZVBv
bGljeUZ1bmN0aW9uLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9u
LCBjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4sIGNvbnN0IFdU
Rjo6U3RyaW5nJiBmcmFtZU5hbWUpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24s
IGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPik7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBX
ZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRp
b25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXVEY6OlBhc3NSZWZQ
dHI8V2ViQ29yZTo6Rm9ybVN0YXRlPiwgY29uc3QgV1RGOjpTdHJpbmcmIGZyYW1lTmFtZSwgV2Vi
Q29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlv
bkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdURjo6UGFzc1JlZlB0
cjxXZWJDb3JlOjpGb3JtU3RhdGU+LCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uKTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGNhbmNlbFBvbGljeUNoZWNrKCk7CiAKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTZW5kU3Vi
bWl0RXZlbnQoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4pIHsgfQotICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShXZWJDb3JlOjpGcmFtZVBvbGlj
eUZ1bmN0aW9uLCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPik7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKFdURjo6UGFzc1JlZlB0cjxXZWJD
b3JlOjpGb3JtU3RhdGU+LCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uKTsKIAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgcmV2ZXJ0VG9Qcm92aXNpb25hbFN0YXRlKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyKikgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRNYWluRG9jdW1lbnRFcnJvcihX
ZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNp
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicG9saWN5ZGVjaXNp
b24uY3BwCmluZGV4IDEzNjU3M2QxYzllOWJlZTVkNmUzNTU4OWFlMWMzZTJlMzRlMmJhMDIuLjky
Y2UzYjZkZmY0OWEyZTAwNzE5YWMyYTAyZjNmNjg2OTExODIyOTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmNwcApAQCAtODUs
NyArODUsNyBAQCB2b2lkIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX3VzZShXZWJLaXRXZWJQ
b2xpY3lEZWNpc2lvbiogZGVjaXNpb24pCiAgICAgV2ViS2l0V2ViUG9saWN5RGVjaXNpb25Qcml2
YXRlKiBwcml2ID0gZGVjaXNpb24tPnByaXY7CiAKICAgICBpZiAoIXByaXYtPmlzQ2FuY2VsbGVk
KQotICAgICAgICAoY29yZShwcml2LT5mcmFtZSktPmxvYWRlcigpLnBvbGljeUNoZWNrZXIoKS4q
KHByaXYtPmZyYW1lUG9saWN5RnVuY3Rpb24pKShXZWJDb3JlOjpQb2xpY3lVc2UpOworICAgICAg
ICBmcmFtZVBvbGljeUZ1bmN0aW9uKFdlYkNvcmU6OlBvbGljeVVzZSk7CiB9CiAKIC8qKgpAQCAt
MTAzLDcgKzEwMyw3IEBAIHZvaWQgd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25faWdub3JlKFdl
YktpdFdlYlBvbGljeURlY2lzaW9uKiBkZWNpc2lvbikKICAgICBXZWJLaXRXZWJQb2xpY3lEZWNp
c2lvblByaXZhdGUqIHByaXYgPSBkZWNpc2lvbi0+cHJpdjsKIAogICAgIGlmICghcHJpdi0+aXND
YW5jZWxsZWQpCi0gICAgICAgIChjb3JlKHByaXYtPmZyYW1lKS0+bG9hZGVyKCkucG9saWN5Q2hl
Y2tlcigpLioocHJpdi0+ZnJhbWVQb2xpY3lGdW5jdGlvbikpKFdlYkNvcmU6OlBvbGljeUlnbm9y
ZSk7CisgICAgICAgIGZyYW1lUG9saWN5RnVuY3Rpb24oV2ViQ29yZTo6UG9saWN5SWdub3JlKTsK
IH0KIAogLyoqCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCB3ZWJraXRfd2ViX3BvbGljeV9kZWNp
c2lvbl9kb3dubG9hZChXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiogZGVjaXNpb24pCiAgICAgV2Vi
S2l0V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlKiBwcml2ID0gZGVjaXNpb24tPnByaXY7CiAKICAg
ICBpZiAoIXByaXYtPmlzQ2FuY2VsbGVkKQotICAgICAgICAoY29yZShwcml2LT5mcmFtZSktPmxv
YWRlcigpLnBvbGljeUNoZWNrZXIoKS4qKHByaXYtPmZyYW1lUG9saWN5RnVuY3Rpb24pKShXZWJD
b3JlOjpQb2xpY3lEb3dubG9hZCk7CisgICAgICAgIGZyYW1lUG9saWN5RnVuY3Rpb24oV2ViQ29y
ZTo6UG9saWN5RG93bmxvYWQpOwogfQogCiB2b2lkIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9u
X2NhbmNlbChXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiogZGVjaXNpb24pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApp
bmRleCAxYmZkZDE5NjY1MDliYWZiMzA0OWEzN2Y4MDQ1OTE3ZjdhNjM2MGUzLi42YmQ1ODFjNDNk
NGExZDRjYWMzNWE0NzM1YTY2NTlhYWM2YzY5NjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTExMiwx
OCArMTEyLDE1IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpGcmFtZSogZGlzcGF0
Y2hDcmVhdGVQYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hTaG93KCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFtZVBvbGlj
eUZ1bmN0aW9uLCAKLSAgICAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0
aW9uLAotICAgICAgICBjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+LCBj
b25zdCBXVEY6OlN0cmluZyYgZnJhbWVOYW1lKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYkNvcmU6OkZyYW1lUG9s
aWN5RnVuY3Rpb24sCi0gICAgICAgIGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1T
dGF0ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZv
clJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3Qg
V2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPiwgY29uc3QgV1RGOjpTdHJpbmcmIGZy
YW1lTmFtZSwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBX
ZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+LCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1
bmN0aW9uKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUG9saWN5Q2hlY2soKSBP
VkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50UG9s
aWN5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBPVkVSUklERTsKIAogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaFdpbGxTZW5kU3VibWl0RXZlbnQoUGFzc1JlZlB0cjxXZWJDb3JlOjpG
b3JtU3RhdGU+KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU3VibWl0
Rm9ybShXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZv
cm1TdGF0ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTdWJtaXRG
b3JtKFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPiwgV2ViQ29yZTo6RnJhbWVQb2xpY3lG
dW5jdGlvbikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmV2ZXJ0VG9Qcm92aXNpb25h
bFN0YXRlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHNldE1haW5Eb2N1bWVudEVycm9yKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA3
MmM1MjdjYTY5ZTQ0NDMzNmMwN2ZlZDIwZWE1YTQ1M2RkZWNhODM4Li5kZDUyNjM1OWQzYTIxZDg1
ZjdmYTViMWE1ZDA3ZTY4ZjBjOTBkNWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtNzQzLDggKzc0
Myw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoU2hvdygpCiAgICAgW1t3
ZWJWaWV3IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3U2hvdzp3ZWJWaWV3XTsKIH0KIAot
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZShGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uLAotICAgIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24pCiB7CiAgICAgV2ViVmlldyAqd2ViVmlldyA9
IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAKQEAgLTc1MiwyOSArNzUxLDI3IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2Uo
RnJhbWVQb2xpY3lGdW5jdGlvbiBmCiAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpZGVQb2xp
Y3lGb3JNSU1FVHlwZTpyZXNwb25zZS5taW1lVHlwZSgpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChVcGRhdGVIVFRQ
Qm9keSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lOm1f
d2ViRnJhbWUuZ2V0KCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpc2lvbkxp
c3RlbmVyOnNldFVwUG9saWN5TGlzdGVuZXIoZnVuY3Rpb24pLmdldCgpXTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZWNpc2lvbkxpc3RlbmVyOnNldFVwUG9saWN5TGlzdGVuZXIo
c3RkOjptb3ZlKGZ1bmN0aW9uKSkuZ2V0KCldOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZVBvbGljeUZ1
bmN0aW9uIGZ1bmN0aW9uLAotICAgIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0
YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25B
Y3Rpb24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRy
PEZvcm1TdGF0ZT4gZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgRnJhbWVQb2xp
Y3lGdW5jdGlvbiBmdW5jdGlvbikKIHsKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2ViVmll
dyhtX3dlYkZyYW1lLmdldCgpKTsKICAgICBbW3dlYlZpZXcgX3BvbGljeURlbGVnYXRlRm9yd2Fy
ZGVyXSB3ZWJWaWV3OndlYlZpZXcKICAgICAgICAgICAgIGRlY2lkZVBvbGljeUZvck5ld1dpbmRv
d0FjdGlvbjphY3Rpb25EaWN0aW9uYXJ5KGFjdGlvbiwgZm9ybVN0YXRlKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KFVwZGF0
ZUhUVFBCb2R5KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RnJhbWVOYW1lOmZy
YW1lTmFtZQotICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpc2lvbkxpc3RlbmVyOnNldFVw
UG9saWN5TGlzdGVuZXIoZnVuY3Rpb24pLmdldCgpXTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVjaXNpb25MaXN0ZW5lcjpzZXRVcFBvbGljeUxpc3RlbmVyKHN0ZDo6bW92ZShmdW5jdGlv
bikpLmdldCgpXTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24s
Ci0gICAgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUpCit2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUsIEZyYW1lUG9saWN5RnVuY3Rp
b24gZnVuY3Rpb24pCiB7CiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJG
cmFtZS5nZXQoKSk7CiAgICAgW1t3ZWJWaWV3IF9wb2xpY3lEZWxlZ2F0ZUZvcndhcmRlcl0gd2Vi
Vmlldzp3ZWJWaWV3CiAgICAgICAgICAgICAgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbjphY3Rpb25EaWN0aW9uYXJ5KGFjdGlvbiwgZm9ybVN0YXRlKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoVXBk
YXRlSFRUUEJvZHkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
cmFtZTptX3dlYkZyYW1lLmdldCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVj
aXNpb25MaXN0ZW5lcjpzZXRVcFBvbGljeUxpc3RlbmVyKGZ1bmN0aW9uKS5nZXQoKV07CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaXNpb25MaXN0ZW5lcjpzZXRVcFBvbGljeUxp
c3RlbmVyKHN0ZDo6bW92ZShmdW5jdGlvbikpLmdldCgpXTsKIH0KIAogdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6Y2FuY2VsUG9saWN5Q2hlY2soKQpAQCAtODExLDE2ICs4MDgsMTYgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU2VuZFN1Ym1pdEV2ZW50KFBhc3NS
ZWZQdHI8V2ViQ29yZTo6Rm9ybVMKICAgICBDYWxsRm9ybURlbGVnYXRlKGdldFdlYlZpZXcobV93
ZWJGcmFtZS5nZXQoKSksIEBzZWxlY3Rvcih3aWxsU2VuZFN1Ym1pdEV2ZW50VG9Gb3JtOmluRnJh
bWU6d2l0aFZhbHVlczopLCBmb3JtRWxlbWVudCwgbV93ZWJGcmFtZS5nZXQoKSwgdmFsdWVzKTsK
IH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShG
cmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0
YXRlKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShQ
YXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlLCBGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0
aW9uKQogewogICAgIGlkIDxXZWJGb3JtRGVsZWdhdGU+IGZvcm1EZWxlZ2F0ZSA9IFtnZXRXZWJW
aWV3KG1fd2ViRnJhbWUuZ2V0KCkpIF9mb3JtRGVsZWdhdGVdOwogICAgIGlmICghZm9ybURlbGVn
YXRlKSB7Ci0gICAgICAgIChjb3JlKG1fd2ViRnJhbWUuZ2V0KCkpLT5sb2FkZXIoKS5wb2xpY3lD
aGVja2VyKCkuKmZ1bmN0aW9uKShQb2xpY3lVc2UpOworICAgICAgICBmdW5jdGlvbihQb2xpY3lV
c2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgTlNEaWN0aW9uYXJ5ICp2YWx1ZXMg
PSBtYWtlRm9ybUZpZWxkVmFsdWVzRGljdGlvbmFyeShmb3JtU3RhdGUuZ2V0KCkpOwotICAgIENh
bGxGb3JtRGVsZWdhdGUoZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKSwgQHNlbGVjdG9yKGZy
YW1lOnNvdXJjZUZyYW1lOndpbGxTdWJtaXRGb3JtOndpdGhWYWx1ZXM6c3VibWlzc2lvbkxpc3Rl
bmVyOiksIG1fd2ViRnJhbWUuZ2V0KCksIGtpdChmb3JtU3RhdGUtPnNvdXJjZURvY3VtZW50KCkt
PmZyYW1lKCkpLCBraXQoZm9ybVN0YXRlLT5mb3JtKCkpLCB2YWx1ZXMsIHNldFVwUG9saWN5TGlz
dGVuZXIoZnVuY3Rpb24pLmdldCgpKTsKKyAgICBDYWxsRm9ybURlbGVnYXRlKGdldFdlYlZpZXco
bV93ZWJGcmFtZS5nZXQoKSksIEBzZWxlY3RvcihmcmFtZTpzb3VyY2VGcmFtZTp3aWxsU3VibWl0
Rm9ybTp3aXRoVmFsdWVzOnN1Ym1pc3Npb25MaXN0ZW5lcjopLCBtX3dlYkZyYW1lLmdldCgpLCBr
aXQoZm9ybVN0YXRlLT5zb3VyY2VEb2N1bWVudCgpLT5mcmFtZSgpKSwga2l0KGZvcm1TdGF0ZS0+
Zm9ybSgpKSwgdmFsdWVzLCBzZXRVcFBvbGljeUxpc3RlbmVyKHN0ZDo6bW92ZShmdW5jdGlvbikp
LmdldCgpKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6cmV2ZXJ0VG9Qcm92aXNp
b25hbFN0YXRlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCkBAIC0yMDEzLDcgKzIwMTAsNyBAQCBQ
YXNzUmVmUHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpj
cmVhdGVOZXR3b3JraW5nQ29udGV4dAogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgX2ZyYW1l
ID0gZnJhbWU7Ci0gICAgX3BvbGljeUZ1bmN0aW9uID0gcG9saWN5RnVuY3Rpb247CisgICAgX3Bv
bGljeUZ1bmN0aW9uID0gc3RkOjptb3ZlKHBvbGljeUZ1bmN0aW9uKTsKIAogICAgIHJldHVybiBz
ZWxmOwogfQpAQCAtMjAzNywxMSArMjAzNCwxMSBAQCBQYXNzUmVmUHRyPEZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVOZXR3b3JraW5nQ29udGV4dAog
ICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIEZyYW1lUG9saWN5RnVuY3Rp
b24gcG9saWN5RnVuY3Rpb24gPSBfcG9saWN5RnVuY3Rpb247CisgICAgRnJhbWVQb2xpY3lGdW5j
dGlvbiBwb2xpY3lGdW5jdGlvbiA9IHN0ZDo6bW92ZShfcG9saWN5RnVuY3Rpb24pOwogICAgIF9w
b2xpY3lGdW5jdGlvbiA9IG51bGxwdHI7CiAKICAgICBBU1NFUlQocG9saWN5RnVuY3Rpb24pOwot
ICAgIChmcmFtZS0+bG9hZGVyKCkucG9saWN5Q2hlY2tlcigpLipwb2xpY3lGdW5jdGlvbikoYWN0
aW9uKTsKKyAgICBwb2xpY3lGdW5jdGlvbihhY3Rpb24pOwogfQogCiAtICh2b2lkKWlnbm9yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCmluZGV4IGRjNWJkMWUzN2RhMDFjNDE1NDc1OGRlMjk3MGI3NjMxMzg3
NWQ2ODIuLjRlZmU0NTFmZTczZjRkZTUyMDdjNDc3MTViYWM2NDFmMDBlMDZlM2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKQEAgLTU1OCw3ICs1NTgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaFNob3coKQogICAgICAgICB1aS0+d2ViVmlld1Nob3cod2ViVmlldyk7CiB9CiAK
LXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UoRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3ZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRnJh
bWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbikKIHsKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gbV93
ZWJGcmFtZS0+d2ViVmlldygpOwogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKG1fd2ViRnJh
bWUpOwpAQCAtNTczLDEwICs1NzMsMTAgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZVBvbGljeUZ1bmN0aW9uIGYKICAgICBp
ZiAoU1VDQ0VFREVEKHBvbGljeURlbGVnYXRlLT5kZWNpZGVQb2xpY3lGb3JNSU1FVHlwZSh3ZWJW
aWV3LCBCU3RyaW5nKHJlc3BvbnNlLm1pbWVUeXBlKCkpLCB1cmxSZXF1ZXN0LmdldCgpLCBtX3dl
YkZyYW1lLCBzZXRVcFBvbGljeUxpc3RlbmVyKGZ1bmN0aW9uKS5nZXQoKSkpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICAoY29yZUZyYW1lLT5sb2FkZXIoKS5wb2xpY3lDaGVja2VyKCkuKmZ1bmN0
aW9uKShQb2xpY3lVc2UpOworICAgIGZ1bmN0aW9uKFBvbGljeVVzZSk7CiB9CiAKLXZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9u
KEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24sIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFj
dGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0
ZT4gZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSkKK3ZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5h
dmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQ
YXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwg
RnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbikKIHsKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0g
bV93ZWJGcmFtZS0+d2ViVmlldygpOwogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKG1fd2Vi
RnJhbWUpOwpAQCAtNTkyLDEwICs1OTIsMTAgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVQb2xpY3lGdW4KICAg
ICBpZiAoU1VDQ0VFREVEKHBvbGljeURlbGVnYXRlLT5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dB
Y3Rpb24od2ViVmlldywgYWN0aW9uSW5mb3JtYXRpb24uZ2V0KCksIHVybFJlcXVlc3QuZ2V0KCks
IEJTdHJpbmcoZnJhbWVOYW1lKSwgc2V0VXBQb2xpY3lMaXN0ZW5lcihmdW5jdGlvbikuZ2V0KCkp
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgKGNvcmVGcmFtZS0+bG9hZGVyKCkucG9saWN5Q2hl
Y2tlcigpLipmdW5jdGlvbikoUG9saWN5VXNlKTsKKyAgICBmdW5jdGlvbihQb2xpY3lVc2UpOwog
fQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwgY29uc3QgTmF2aWdh
dGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBhc3NS
ZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFj
dGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBhc3NSZWZQdHI8
Rm9ybVN0YXRlPiBmb3JtU3RhdGUsIEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24pCiB7CiAg
ICAgV2ViVmlldyogd2ViVmlldyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKICAgICBGcmFtZSog
Y29yZUZyYW1lID0gY29yZShtX3dlYkZyYW1lKTsKQEAgLTYxMSw3ICs2MTEsNyBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24oRnJhbWVQb2xpY3lGdQogICAgIGlmIChTVUNDRUVERUQocG9saWN5RGVsZWdhdGUtPmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24od2ViVmlldywgYWN0aW9uSW5mb3JtYXRpb24uZ2V0
KCksIHVybFJlcXVlc3QuZ2V0KCksIG1fd2ViRnJhbWUsIHNldFVwUG9saWN5TGlzdGVuZXIoZnVu
Y3Rpb24pLmdldCgpKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIChjb3JlRnJhbWUtPmxvYWRl
cigpLnBvbGljeUNoZWNrZXIoKS4qZnVuY3Rpb24pKFBvbGljeVVzZSk7CisgICAgZnVuY3Rpb24o
UG9saWN5VXNlKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hVbmFi
bGVUb0ltcGxlbWVudFBvbGljeShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAgLTYyOSw3
ICs2MjksNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTZW5kU3Vi
bWl0RXZlbnQoUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtUwogewogfQogCi12b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKEZyYW1lUG9saWN5RnVuY3Rpb24g
ZnVuY3Rpb24sIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUpCit2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKFBhc3NSZWZQdHI8Rm9ybVN0YXRl
PiBmb3JtU3RhdGUsIEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24pCiB7CiAgICAgV2ViVmll
dyogd2ViVmlldyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKICAgICBGcmFtZSogY29yZUZyYW1l
ID0gY29yZShtX3dlYkZyYW1lKTsKQEAgLTYzOCw3ICs2MzgsNyBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVu
Y3Rpb24sCiAgICAgQ09NUHRyPElXZWJGb3JtRGVsZWdhdGU+IGZvcm1EZWxlZ2F0ZTsKIAogICAg
IGlmIChGQUlMRUQod2ViVmlldy0+Zm9ybURlbGVnYXRlKCZmb3JtRGVsZWdhdGUpKSkgewotICAg
ICAgICAoY29yZUZyYW1lLT5sb2FkZXIoKS5wb2xpY3lDaGVja2VyKCkuKmZ1bmN0aW9uKShQb2xp
Y3lVc2UpOworICAgICAgICBmdW5jdGlvbihQb2xpY3lVc2UpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC02NTcsNyArNjU3LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hXaWxsU3VibWl0Rm9ybShGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uLAogICAgICAg
ICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogQWRkIGEgc2FuZSBkZWZhdWx0IGltcGxlbWVudGF0
aW9uCi0gICAgKGNvcmVGcmFtZS0+bG9hZGVyKCkucG9saWN5Q2hlY2tlcigpLipmdW5jdGlvbiko
UG9saWN5VXNlKTsKKyAgICBmdW5jdGlvbihQb2xpY3lVc2UpOwogfQogCiB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpzZXRNYWluRG9jdW1lbnRFcnJvcihEb2N1bWVudExvYWRlciosIGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQpAQCAtMTM3OSw1ICsxMzc5LDUgQEAgdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9u
KQogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKG1fd2ViRnJhbWUpOwogICAgIEFTU0VSVChj
b3JlRnJhbWUpOwogCi0gICAgKGNvcmVGcmFtZS0+bG9hZGVyKCkucG9saWN5Q2hlY2tlcigpLipm
dW5jdGlvbikoYWN0aW9uKTsKKyAgICBmdW5jdGlvbihhY3Rpb24pOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgK
aW5kZXggNTFiNjJkNmFmY2UxNDAyYjdkNzg2MzcxNzkzYmE4MzI2Yjk2ZGM5Ny4uMmM2NWEwMTM5
MmE2M2NlMDNhMmExY2FjNWQxNzUxOWYxODU1YTY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC05Nywx
NSArOTcsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExv
YWQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRMYXlvdXQoV2ViQ29y
ZTo6TGF5b3V0TWlsZXN0b25lcykgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2lu
ZG93QWN0aW9uKFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24sIGNvbnN0IFdlYkNvcmU6Ok5h
dmlnYXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVm
UHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4sIGNvbnN0IFdURjo6U3RyaW5nJiBmcmFtZU5hbWUpIE9W
RVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24oV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiwgY29uc3QgV2ViQ29yZTo6TmF2
aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6Rm9ybVN0YXRlPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYW1lUG9saWN5
RnVuY3Rpb24pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3Rh
dGU+LCBjb25zdCBXVEY6OlN0cmluZyYgZnJhbWVOYW1lLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1
bmN0aW9uKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0
ZT4sIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24pIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBjYW5jZWxQb2xpY3lDaGVjaygpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFNlbmRTdWJtaXRF
dmVudChQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4pIE9WRVJSSURFOwotICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rp
b24sIFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPikgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0oUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3Rh
dGU+LCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uKSBPVkVSUklERTsKIAogICAgIHZpcnR1
YWwgdm9pZCByZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIq
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9t
TWVtb3J5Q2FjaGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgaW50IGxlbmd0
aCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGE4ZGI2
MDdmYWI0M2RmYzY3N2EwNjEzMTYwNjhhMWFkYjAwMjA3ZmEuLjNjZTNlMDc5OGRiMDlkNmMwYWJh
YTlkOGRlOWM4MTlmZGI4ZDNhZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CkBAIC02MTgsMTQgKzYxOCwxNCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aFNob3coKQogICAgIHdlYlBhZ2UtPnNob3coKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZVBvbGljeUZ1bmN0aW9u
IGZ1bmN0aW9uLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0
aW9uKQogewogICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgaWYg
KCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIXJlcXVlc3QudXJsKCkuc3Ry
aW5nKCkpIHsKLSAgICAgICAgKG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5wb2xpY3lD
aGVja2VyKCkuKmZ1bmN0aW9uKShQb2xpY3lVc2UpOworICAgICAgICBmdW5jdGlvbihQb2xpY3lV
c2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02MzQsMTEgKzYzNCwxMSBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZy
YW1lUG9saWN5RnVuY3Rpb24gZgogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KICAg
ICBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb24gcG9saWN5ID0gd2ViUGFnZS0+aW5qZWN0ZWRCdW5k
bGVQb2xpY3lDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh3ZWJQYWdlLCBtX2ZyYW1l
LCByZXNwb25zZSwgcmVxdWVzdCwgdXNlckRhdGEpOwogICAgIGlmIChwb2xpY3kgPT0gV0tCdW5k
bGVQYWdlUG9saWN5QWN0aW9uVXNlKSB7Ci0gICAgICAgIChtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+
bG9hZGVyKCkucG9saWN5Q2hlY2tlcigpLipmdW5jdGlvbikoUG9saWN5VXNlKTsKKyAgICAgICAg
ZnVuY3Rpb24oUG9saWN5VXNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2
NF90IGxpc3RlbmVySUQgPSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKGZ1bmN0aW9uKTsK
KyAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihz
dGQ6Om1vdmUoZnVuY3Rpb24pKTsKICAgICBib29sIHJlY2VpdmVkUG9saWN5QWN0aW9uOwogICAg
IHVpbnQ2NF90IHBvbGljeUFjdGlvbjsKICAgICB1aW50NjRfdCBkb3dubG9hZElEOwpAQCAtNjUy
LDcgKzY1Miw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yUmVzcG9uc2UoRnJhbWVQb2xpY3lGdW5jdGlvbiBmCiAgICAgICAgIG1fZnJhbWUtPmRp
ZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBzdGF0aWNfY2FzdDxQb2xpY3lBY3Rp
b24+KHBvbGljeUFjdGlvbiksIGRvd25sb2FkSUQpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZVBvbGlj
eUZ1bmN0aW9uIGZ1bmN0aW9uLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0
aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRl
PiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lKQordm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2
aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbikKIHsKICAgICBXZWJQYWdlKiB3
ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghd2ViUGFnZSkKQEAgLTY2NSwyNyAr
NjY1LDI3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1lUG9saWN5RnVuCiAgICAgLy8gTm90aWZ5IHRoZSBidW5k
bGUgY2xpZW50LgogICAgIFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBwb2xpY3kgPSB3ZWJQYWdl
LT5pbmplY3RlZEJ1bmRsZVBvbGljeUNsaWVudCgpLmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0Fj
dGlvbih3ZWJQYWdlLCBtX2ZyYW1lLCBhY3Rpb24uZ2V0KCksIHJlcXVlc3QsIGZyYW1lTmFtZSwg
dXNlckRhdGEpOwogICAgIGlmIChwb2xpY3kgPT0gV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uVXNl
KSB7Ci0gICAgICAgIChtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkucG9saWN5Q2hlY2tl
cigpLipmdW5jdGlvbikoUG9saWN5VXNlKTsKKyAgICAgICAgZnVuY3Rpb24oUG9saWN5VXNlKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogCi0gICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IG1f
ZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXIoZnVuY3Rpb24pOworICAgIHVpbnQ2NF90IGxpc3Rl
bmVySUQgPSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKHN0ZDo6bW92ZShmdW5jdGlvbikp
OwogCiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCiAgICAgd2ViUGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24obV9mcmFt
ZS0+ZnJhbWVJRCgpLCBhY3Rpb24tPm5hdmlnYXRpb25UeXBlKCksIGFjdGlvbi0+bW9kaWZpZXJz
KCksIGFjdGlvbi0+bW91c2VCdXR0b24oKSwgcmVxdWVzdCwgZnJhbWVOYW1lLCBsaXN0ZW5lcklE
LCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKIH0K
IAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24sIGNvbnN0IE5hdmlnYXRp
b25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZp
Z2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUsIEZyYW1lUG9saWN5RnVuY3Rp
b24gZnVuY3Rpb24pCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsK
ICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEFsd2F5cyBpZ25v
cmUgcmVxdWVzdHMgd2l0aCBlbXB0eSBVUkxzLiAKLSAgICBpZiAocmVxdWVzdC5pc0VtcHR5KCkp
IHsgCi0gICAgICAgIChtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkucG9saWN5Q2hlY2tl
cigpLipmdW5jdGlvbikoUG9saWN5SWdub3JlKTsgCi0gICAgICAgIHJldHVybjsgCisgICAgaWYg
KHJlcXVlc3QuaXNFbXB0eSgpKSB7CisgICAgICAgIGZ1bmN0aW9uKFBvbGljeUlnbm9yZSk7Cisg
ICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBSZWZQdHI8QVBJT2JqZWN0PiB1c2VyRGF0YTsK
QEAgLTY5NSwxMSArNjk1LDExIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1CiAgICAgLy8gTm90
aWZ5IHRoZSBidW5kbGUgY2xpZW50LgogICAgIFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBwb2xp
Y3kgPSB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZVBvbGljeUNsaWVudCgpLmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24od2ViUGFnZSwgbV9mcmFtZSwgYWN0aW9uLmdldCgpLCByZXF1ZXN0
LCB1c2VyRGF0YSk7CiAgICAgaWYgKHBvbGljeSA9PSBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb25V
c2UpIHsKLSAgICAgICAgKG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5wb2xpY3lDaGVj
a2VyKCkuKmZ1bmN0aW9uKShQb2xpY3lVc2UpOworICAgICAgICBmdW5jdGlvbihQb2xpY3lVc2Up
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGxpc3RlbmVySUQg
PSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKGZ1bmN0aW9uKTsKKyAgICB1aW50NjRfdCBs
aXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihzdGQ6Om1vdmUoZnVuY3Rp
b24pKTsKICAgICBib29sIHJlY2VpdmVkUG9saWN5QWN0aW9uOwogICAgIHVpbnQ2NF90IHBvbGlj
eUFjdGlvbjsKICAgICB1aW50NjRfdCBkb3dubG9hZElEOwpAQCAtNzQ5LDcgKzc0OSw3IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChQYXNz
UmVmUHRyPEZvcm1TdGF0ZT4gcHJwCiAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVGb3JtQ2xp
ZW50KCkud2lsbFNlbmRTdWJtaXRFdmVudCh3ZWJQYWdlLCBmb3JtLCBtX2ZyYW1lLCBzb3VyY2VG
cmFtZSwgZm9ybVN0YXRlLT50ZXh0RmllbGRWYWx1ZXMoKSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0oRnJhbWVQb2xpY3lGdW5jdGlvbiBm
dW5jdGlvbiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IHBycEZvcm1TdGF0ZSkKK3ZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0oUGFzc1JlZlB0cjxGb3JtU3Rh
dGU+IHBycEZvcm1TdGF0ZSwgRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbikKIHsKICAgICBX
ZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghd2ViUGFnZSkKQEAg
LTc3MCw3ICs3NzAsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxT
dWJtaXRGb3JtKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24sCiAgICAgd2ViUGFnZS0+aW5q
ZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KCkud2lsbFN1Ym1pdEZvcm0od2ViUGFnZSwgZm9ybSwgbV9m
cmFtZSwgc291cmNlRnJhbWUsIHZhbHVlcywgdXNlckRhdGEpOwogCiAKLSAgICB1aW50NjRfdCBs
aXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihmdW5jdGlvbik7CisgICAg
dWludDY0X3QgbGlzdGVuZXJJRCA9IG1fZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXIoc3RkOjpt
b3ZlKGZ1bmN0aW9uKSk7CiAKICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OldpbGxTdWJtaXRGb3JtKG1fZnJhbWUtPmZyYW1lSUQoKSwgc291cmNlRnJhbWUtPmZyYW1l
SUQoKSwgdmFsdWVzLCBsaXN0ZW5lcklELCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rl
cih1c2VyRGF0YS5nZXQoKSkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRl
eCA4ZDNiZTk5ZTRjOWYwMzBmMTNiNjhlZDA2MTcyMzI4Y2Q5ZDU0ODc3Li42ZjgwYTUwNjcxMThh
ZmY4ZmUxMTc1YzA2ODZlYTQ3MTZiMGRiMWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCkBAIC05NiwxNSArOTYsMTUgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZy
YW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFNob3coKSBPVkVSUklERTsKICAg
ICAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJD
b3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYkNvcmU6OkZy
YW1lUG9saWN5RnVuY3Rpb24sIGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0
ZT4sIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYkNvcmU6OkZyYW1lUG9s
aWN5RnVuY3Rpb24sIGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4pIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNl
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3Qg
V2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPiwgY29uc3QgU3RyaW5nJiBmcmFtZU5h
bWUsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24pIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgV2ViQ29y
ZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFBh
c3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPiwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlv
bikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbFBvbGljeUNoZWNrKCkgT1ZFUlJJ
REU7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xp
Y3koY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIE9WRVJSSURFOwogICAgIAogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTZW5kU3VibWl0RXZlbnQoUGFzc1JlZlB0cjxXZWJDb3Jl
OjpGb3JtU3RhdGU+KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU3Vi
bWl0Rm9ybShXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uLCBQYXNzUmVmUHRyPFdlYkNvcmU6
OkZvcm1TdGF0ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTdWJt
aXRGb3JtKFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPiwgV2ViQ29yZTo6RnJhbWVQb2xp
Y3lGdW5jdGlvbikgT1ZFUlJJREU7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIHJldmVydFRvUHJv
dmlzaW9uYWxTdGF0ZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciopIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRNYWluRG9jdW1lbnRFcnJvcihXZWJDb3JlOjpEb2N1bWVudExvYWRlcios
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDhlNWEwMTRlMzQ0YjZl
NGYxNjQ5NTFjYTY3YmEzMDdhYjA5YzdhMDQuLmZmOTZmNmE3YjdhODRjN2NmYTAzNDRjMWUxOWZi
Mzk2NTExNDQ2MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcApAQCAtMjE2LDEzICsyMTYsMTIgQEAgdm9pZCBXZWJGcmFtZTo6ZGlkUmVjZWl2
ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGxpc3RlbmVySUQsIFBvbGljeUFjdGlvbiBhY3Rpb24K
IAogICAgIEFTU0VSVChtX3BvbGljeUZ1bmN0aW9uKTsKIAotICAgIEZyYW1lUG9saWN5RnVuY3Rp
b24gZnVuY3Rpb24gPSBtX3BvbGljeUZ1bmN0aW9uOworICAgIEZyYW1lUG9saWN5RnVuY3Rpb24g
ZnVuY3Rpb24gPSBzdGQ6Om1vdmUobV9wb2xpY3lGdW5jdGlvbik7CiAKICAgICBpbnZhbGlkYXRl
UG9saWN5TGlzdGVuZXIoKTsKIAogICAgIG1fcG9saWN5RG93bmxvYWRJRCA9IGRvd25sb2FkSUQ7
Ci0KLSAgICAobV9jb3JlRnJhbWUtPmxvYWRlcigpLnBvbGljeUNoZWNrZXIoKS4qZnVuY3Rpb24p
KGFjdGlvbik7CisgICAgZnVuY3Rpb24oYWN0aW9uKTsKIH0KIAogdm9pZCBXZWJGcmFtZTo6c3Rh
cnREb3dubG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCg==
</data>
<flag name="review"
          id="235803"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>