<?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>145384</bug_id>
          
          <creation_ts>2015-05-26 13:22:46 -0700</creation_ts>
          <short_desc>Introduce WTF::createRef&lt;T&gt;(Args&amp;&amp;...)</short_desc>
          <delta_ts>2022-04-13 23:05:59 -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>NEW</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=238392</see_also>
          <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="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>fujii</cc>
    
    <cc>kangil.han</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1097394</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-05-26 13:22:46 -0700</bug_when>
    <thetext>Introduce WTF::createRef&lt;T&gt;(Args&amp;&amp;...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097397</commentid>
    <comment_count>1</comment_count>
      <attachid>253727</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-05-26 13:25:53 -0700</bug_when>
    <thetext>Created attachment 253727
Test patch

Checking how the EWSs handle it (specifically the friend template declaration).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097897</commentid>
    <comment_count>2</comment_count>
      <attachid>253847</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-05-28 09:14:15 -0700</bug_when>
    <thetext>Created attachment 253847
Test patch

Further iteration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098104</commentid>
    <comment_count>3</comment_count>
      <attachid>253900</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-05-29 03:48:47 -0700</bug_when>
    <thetext>Created attachment 253900
Test patch

Another iteration, testing out modifying AsyncRequestImpl creation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098105</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-29 03:51:15 -0700</bug_when>
    <thetext>Attachment 253900 did not pass style-queue:


ERROR: Source/WebKit2/Shared/AsyncRequest.h:77:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099539</commentid>
    <comment_count>5</comment_count>
      <attachid>254279</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-06-04 11:20:18 -0700</bug_when>
    <thetext>Created attachment 254279
Patch

Another run through the EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099541</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-04 11:23:01 -0700</bug_when>
    <thetext>Attachment 254279 did not pass style-queue:


ERROR: Source/WebKit2/Shared/AsyncRequest.h:77:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100088</commentid>
    <comment_count>7</comment_count>
      <attachid>254413</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-06-06 07:26:38 -0700</bug_when>
    <thetext>Created attachment 254413
Patch

More of an RFC about the idea, approach and namings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100089</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-06 07:27:50 -0700</bug_when>
    <thetext>Attachment 254413 did not pass style-queue:


ERROR: Source/WebKit2/Shared/AsyncRequest.h:77:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100095</commentid>
    <comment_count>9</comment_count>
      <attachid>254413</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-06-06 09:27:04 -0700</bug_when>
    <thetext>Comment on attachment 254413
Patch

This is an interesting idea, but we _could_ just put it as a static member function on RefCounted directly - that way the friend declaration would be less awkward.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100680</commentid>
    <comment_count>10</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-06-09 09:59:57 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Comment on attachment 254413 [details]
&gt; Patch
&gt; 
&gt; This is an interesting idea, but we _could_ just put it as a static member
&gt; function on RefCounted directly - that way the friend declaration would be
&gt; less awkward.

Could you please elaborate on how the friend declaration would look? I ended up with a pretty similar declaration.

I chose createRef so that the name indicates the type of the returned value, much like std::make_unique&lt;&gt;() indicates that std::unique_ptr&lt;&gt; is returned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100684</commentid>
    <comment_count>11</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-06-09 10:04:57 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; 
&gt; Could you please elaborate on how the friend declaration would look? I ended
&gt; up with a pretty similar declaration.
&gt; 

friend class RefCounted&lt;MyClass&gt;;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100730</commentid>
    <comment_count>12</comment_count>
      <attachid>254583</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-06-09 11:46:38 -0700</bug_when>
    <thetext>Created attachment 254583
Patch

Adds RefCounted&lt;T&gt;::create(), friends just RefCounted&lt;T&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253727</attachid>
            <date>2015-05-26 13:25:53 -0700</date>
            <delta_ts>2015-05-28 09:14:04 -0700</delta_ts>
            <desc>Test patch</desc>
            <filename>bug-145384-20150526222542.patch</filename>
            <type>text/plain</type>
            <size>3207</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0ODUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA1YWM5MmM3YTEwOGZkNDkzNDFiODcx
YTQ2ODY1YWM1OGJjNDJjYzcuLjk4NDIxMmRjYzJkYmY1N2YwMTVjMTM5MzUzODBlODZkMzdjNmVi
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDUtMjYgIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIEludHJvZHVjZSBXVEY6OmNyZWF0ZVJlZjxUPihB
cmdzJiYuLi4pCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDUzODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHd0Zi9SZWYuaDoKKyAgICAgICAgKFdURjo6Y3JlYXRlUmVmKToKKwogMjAxNS0wNS0yMyAg
RGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB1bnVzZWQg
ZGVmaW5pdGlvbnMgb2YgV0VCS0lUX1ZFUlNJT05fTUlOX1JFUVVJUkVECmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Y2QwOWFmYjc1YWM5ZjY2ZmE2ODkxM2NmODczNDhmNTAxMDRhYWNiYy4uOTRkMDllNmZmOTAxMzc1
Y2IzOTlhYzU2NTlmNjIyMDFlM2EwNTk3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisy
MDE1LTA1LTI2ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAg
ICBJbnRyb2R1Y2UgV1RGOjpjcmVhdGVSZWY8VD4oQXJncyYmLi4uKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1Mzg0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkb20vQ2xpZW50UmVjdC5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xpZW50UmVjdDo6Y3JlYXRlKToKKwogMjAxNS0wNS0yNCAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIENyYXNoIHdoZW4gdXNpbmcgYSByZW1v
dmVkIFNjcmlwdE1lc3NhZ2VIYW5kbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SZWYu
aCBiL1NvdXJjZS9XVEYvd3RmL1JlZi5oCmluZGV4IDUwYTVlNzYxNzMyZGZjMjcyZjFjYmI4ZGM5
NWJkZDhmNTQ3YWVhZTguLjk5MGY1MGUwZWFhMTEzYzg1NzljNDE2NzcxYWQ3ZjkyOTMwMjVlY2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1JlZi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Jl
Zi5oCkBAIC0xODYsMTAgKzE4NiwxNyBAQCBpbmxpbmUgUmVmPFQ+IGFkb3B0UmVmKFQmIHJlZmVy
ZW5jZSkKIAogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPgoraW5s
aW5lIFJlZjxUPiBjcmVhdGVSZWYoQXJncyYmLi4uIGFyZ3MpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6UmVmOwogdXNpbmcgV1RGOjphZG9wdFJlZjsKK3VzaW5n
IFdURjo6Y3JlYXRlUmVmOwogdXNpbmcgV1RGOjpzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q7CiAKICNl
bmRpZiAvLyBXVEZfUmVmX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGllbnRS
ZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpZW50UmVjdC5oCmluZGV4IGY3NjEzMGVmNzg1
YTg1YWRmMzcxMzQ2ZWZmMjczMTM2NzBjZDc0YjMuLmU4MTYzMzFmNGMwZWRjOWIyMWY0NTlmOTEx
OWI0MDAzMTQzMDg2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGllbnRSZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsaWVudFJlY3QuaApAQCAtMzgsOSArMzgsOSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBDbGllbnRSZWN0IDogcHVibGljIFNj
cmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8Q2xpZW50UmVjdD4gewogICAgIHB1Ymxp
YzoKLSAgICAgICAgc3RhdGljIFJlZjxDbGllbnRSZWN0PiBjcmVhdGUoKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IENsaWVudFJlY3QpOyB9Ci0gICAgICAgIHN0YXRpYyBSZWY8Q2xpZW50UmVjdD4g
Y3JlYXRlKGNvbnN0IEludFJlY3QmIHJlY3QpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2xpZW50
UmVjdChyZWN0KSk7IH0KLSAgICAgICAgc3RhdGljIFJlZjxDbGllbnRSZWN0PiBjcmVhdGUoY29u
c3QgRmxvYXRSZWN0JiByZWN0KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENsaWVudFJlY3QocmVj
dCkpOyB9CisgICAgICAgIHN0YXRpYyBSZWY8Q2xpZW50UmVjdD4gY3JlYXRlKCkgeyByZXR1cm4g
Y3JlYXRlUmVmPENsaWVudFJlY3Q+KCk7IH0KKyAgICAgICAgc3RhdGljIFJlZjxDbGllbnRSZWN0
PiBjcmVhdGUoY29uc3QgSW50UmVjdCYgcmVjdCkgeyByZXR1cm4gY3JlYXRlUmVmPENsaWVudFJl
Y3Q+KHJlY3QpOyB9CisgICAgICAgIHN0YXRpYyBSZWY8Q2xpZW50UmVjdD4gY3JlYXRlKGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkgeyByZXR1cm4gY3JlYXRlUmVmPENsaWVudFJlY3Q+KHJlY3QpOyB9
CiAKICAgICAgICAgZmxvYXQgdG9wKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LnkoKTsgfQogICAg
ICAgICBmbG9hdCByaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5tYXhYKCk7IH0KQEAgLTUw
LDYgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBmbG9hdCBoZWlnaHQoKSBj
b25zdCB7IHJldHVybiBtX3JlY3QuaGVpZ2h0KCk7IH0KIAogICAgIHByaXZhdGU6CisgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+IGZyaWVuZCBSZWY8VD4gV1RG
OjpjcmVhdGVSZWYoQXJncyYmLi4uKTsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgQ2xpZW50UmVj
dCgpOwogICAgICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDbGllbnRSZWN0KGNvbnN0IElu
dFJlY3QmKTsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ2xpZW50UmVjdChjb25z
dCBGbG9hdFJlY3QmKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253847</attachid>
            <date>2015-05-28 09:14:15 -0700</date>
            <delta_ts>2015-05-29 03:48:40 -0700</delta_ts>
            <desc>Test patch</desc>
            <filename>bug-145384-20150528091815.patch</filename>
            <type>text/plain</type>
            <size>6829</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0OTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg4YWYyMzZmNmQ1YzdlMjM3YmJjZjBi
YTgzOTQxOTlkMzdlZWZhM2EuLjgyMzVlZjUzYmUxYTdiOTM0NjgzZmVmYjkzYzBkMjlhZGFmYjdj
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMTUgQEAKIDIwMTUtMDUtMjggIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgogCisgICAgICAgIEludHJvZHVjZSBXVEY6OmNyZWF0ZVJlZjxUPihB
cmdzJiYuLi4pCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDUzODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHd0Zi9SZWYuaDoKKyAgICAgICAgKFdURjo6Y3JlYXRlUmVmKToKKworMjAxNS0wNS0yOCAg
WmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKICAgICAgICAgQ2xlYW4gdXAg
SGFzaFRhYmxlIGNvbnN0cnVjdG9ycwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ1MzY5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjZWQ0YzkyOTVlOTk1MDZkNmU3
NzE5MGQ4M2QwMWNlMTFjMjBjNzM4Li4wZDhiMmViOGE2YjM3ODE4NThlYzRjNzE2ZTVmYjI3ZTVj
ODM2NzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDUtMjggIFphbiBEb2Jl
cnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIEludHJvZHVjZSBXVEY6OmNy
ZWF0ZVJlZjxUPihBcmdzJiYuLi4pCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDUzODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGRvbS9DbGllbnRSZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDbGll
bnRSZWN0OjpjcmVhdGUpOgorCiAyMDE1LTA1LTI4ICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAg
PGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFibGV0IDx5b3Vlbm4uZmFibGV0QGNy
Zi5jYW5vbi5mcj4KIAogICAgICAgICBbU3RyZWFtcyBBUEldIFJlYWRhYmxlU3RyZWFtUmVhZGVy
IHNob3VsZCBub3QgYmUgZXhwb3NlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVmLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9SZWYuaAppbmRleCA1MGE1ZTc2MTczMmRmYzI3MmYxY2JiOGRjOTVi
ZGQ4ZjU0N2FlYWU4Li5hYTBiOTM4ZWYyN2ZlYTc5MGI4MWI5ZTBkZWQwMDQwMjZmZmNlMmI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SZWYuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWYu
aApAQCAtMTg2LDEwICsxODYsMTkgQEAgaW5saW5lIFJlZjxUPiBhZG9wdFJlZihUJiByZWZlcmVu
Y2UpCiAKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4KK2lubGlu
ZSBSZWY8VD4gY3JlYXRlUmVmKEFyZ3MmJi4uLiBhcmdzKQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7Cit9CisKKyNkZWZpbmUgV1RG
X0NSRUFURV9SRUZfRlJJRU5ETFkgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJn
cz4gZnJpZW5kIFJlZjxUPiBXVEY6OmNyZWF0ZVJlZihBcmdzJiYuLi4pCisKIH0gLy8gbmFtZXNw
YWNlIFdURgogCiB1c2luZyBXVEY6OlJlZjsKIHVzaW5nIFdURjo6YWRvcHRSZWY7Cit1c2luZyBX
VEY6OmNyZWF0ZVJlZjsKIHVzaW5nIFdURjo6c3RhdGljX3JlZmVyZW5jZV9jYXN0OwogCiAjZW5k
aWYgLy8gV1RGX1JlZl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpZW50UmVj
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsaWVudFJlY3QuaAppbmRleCBmNzYxMzBlZjc4NWE4
NWFkZjM3MTM0NmVmZjI3MzEzNjcwY2Q3NGIzLi40MTJlMmRkYWZmNDk3NWFmMThkNTA4YThjZGUx
NjUyMmU0MGI2YTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpZW50UmVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGllbnRSZWN0LmgKQEAgLTM3LDExICszNyw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBJbnRSZWN0OyAKIAogICAgIGNsYXNzIENs
aWVudFJlY3QgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxDbGll
bnRSZWN0PiB7CisgICAgICAgIFdURl9DUkVBVEVfUkVGX0ZSSUVORExZOwogICAgIHB1YmxpYzoK
LSAgICAgICAgc3RhdGljIFJlZjxDbGllbnRSZWN0PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IENsaWVudFJlY3QpOyB9Ci0gICAgICAgIHN0YXRpYyBSZWY8Q2xpZW50UmVjdD4gY3Jl
YXRlKGNvbnN0IEludFJlY3QmIHJlY3QpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2xpZW50UmVj
dChyZWN0KSk7IH0KLSAgICAgICAgc3RhdGljIFJlZjxDbGllbnRSZWN0PiBjcmVhdGUoY29uc3Qg
RmxvYXRSZWN0JiByZWN0KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENsaWVudFJlY3QocmVjdCkp
OyB9Ci0KICAgICAgICAgZmxvYXQgdG9wKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LnkoKTsgfQog
ICAgICAgICBmbG9hdCByaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5tYXhYKCk7IH0KICAg
ICAgICAgZmxvYXQgYm90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0Lm1heFkoKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NsaWVudFJlY3RMaXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DbGllbnRSZWN0TGlzdC5jcHAKaW5kZXggYTA1N2RkZjNjNjc2NDE1OGYzMzc3
Y2ExYzhlNTg0NGY0MTM3YTBhMC4uYWUzOTY4ZDU0Y2NhZDM4NjVlZTVlYjVkOWYxOTI0MzdkMWE1
Zjc2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NsaWVudFJlY3RMaXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpZW50UmVjdExpc3QuY3BwCkBAIC00MCw3ICs0MCw3
IEBAIENsaWVudFJlY3RMaXN0OjpDbGllbnRSZWN0TGlzdChjb25zdCBWZWN0b3I8RmxvYXRRdWFk
PiYgcXVhZHMpCiB7CiAgICAgbV9saXN0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocXVhZHMuc2l6
ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHF1YWRzLnNpemUoKTsgKytpKQotICAg
ICAgICBtX2xpc3QuYXBwZW5kKENsaWVudFJlY3Q6OmNyZWF0ZShxdWFkc1tpXS5lbmNsb3NpbmdC
b3VuZGluZ0JveCgpKSk7CisgICAgICAgIG1fbGlzdC5hcHBlbmQoY3JlYXRlUmVmPENsaWVudFJl
Y3Q+KHF1YWRzW2ldLmVuY2xvc2luZ0JvdW5kaW5nQm94KCkpKTsKIH0KIAogQ2xpZW50UmVjdExp
c3Q6On5DbGllbnRSZWN0TGlzdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggMDZlYWFmZGIw
MGM0ZDYyODYxMjllMGI1YTg3Mzg4NzUyMzM1ZTAzNS4uNGYzYWQzMGVkYmFiOTMzMzY3NTQ1YWU1
YjE3ZjQwN2E1YjZmMTg0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTA4NiwxNCArMTA4
NiwxNCBAQCBSZWY8Q2xpZW50UmVjdD4gRWxlbWVudDo6Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCkK
ICAgICB9CiAKICAgICBpZiAocXVhZHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gQ2xpZW50
UmVjdDo6Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBjcmVhdGVSZWY8Q2xpZW50UmVjdD4oKTsK
IAogICAgIEZsb2F0UmVjdCByZXN1bHQgPSBxdWFkc1swXS5ib3VuZGluZ0JveCgpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAxOyBpIDwgcXVhZHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIHJlc3VsdC51
bml0ZShxdWFkc1tpXS5ib3VuZGluZ0JveCgpKTsKIAogICAgIGRvY3VtZW50KCkuYWRqdXN0Rmxv
YXRSZWN0Rm9yU2Nyb2xsQW5kQWJzb2x1dGVab29tQW5kRnJhbWVTY2FsZShyZXN1bHQsIHJlbmRl
cmVyKCktPnN0eWxlKCkpOwotICAgIHJldHVybiBDbGllbnRSZWN0OjpjcmVhdGUocmVzdWx0KTsK
KyAgICByZXR1cm4gY3JlYXRlUmVmPENsaWVudFJlY3Q+KHJlc3VsdCk7CiB9CiAKIEludFJlY3Qg
RWxlbWVudDo6Y2xpZW50UmVjdCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAppbmRleCAyNjczYWRk
OTYzMmFmNWI5NWI2OTBkNjA3ZTYzZjExNDJmNTk5NTQxLi4wOTMzODlmZWZiOWZmZjQ5YzZmYTI5
ZWQ2NTdkOWViZGEwOGUzYjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKQEAgLTIxODcsNyArMjE4Nyw3
IEBAIFJlZjxDbGllbnRSZWN0TGlzdD4gUmFuZ2U6OmdldENsaWVudFJlY3RzKCkgY29uc3QKIAog
UmVmPENsaWVudFJlY3Q+IFJhbmdlOjpnZXRCb3VuZGluZ0NsaWVudFJlY3QoKSBjb25zdAogewot
ICAgIHJldHVybiBDbGllbnRSZWN0OjpjcmVhdGUoYm91bmRpbmdSZWN0KCkpOworICAgIHJldHVy
biBjcmVhdGVSZWY8Q2xpZW50UmVjdD4oYm91bmRpbmdSZWN0KCkpOwogfQogCiB2b2lkIFJhbmdl
OjpnZXRCb3JkZXJBbmRUZXh0UXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDEwMzRlOGI4ZTFjZDM2OWM0MGUw
MjdmMGZhNTNjNjEwMTdhZmM1ODcuLjkxYTZiYTYyNTQ4YWM0NTg5OWVlMjA4YjFlMzQ5NjlkYWM2
YTVjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTg4MSwyNCArODgx
LDI0IEBAIFJlZjxDbGllbnRSZWN0PiBJbnRlcm5hbHM6OmFic29sdXRlQ2FyZXRCb3VuZHMoRXhj
ZXB0aW9uQ29kZSYgZWMpCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50
KCk7CiAgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkpIHsKICAgICAgICAg
ZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7Ci0gICAgICAgIHJldHVybiBDbGllbnRSZWN0OjpjcmVh
dGUoKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVJlZjxDbGllbnRSZWN0PigpOwogICAgIH0KIAot
ICAgIHJldHVybiBDbGllbnRSZWN0OjpjcmVhdGUoZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVjdGlv
bigpLmFic29sdXRlQ2FyZXRCb3VuZHMoKSk7CisgICAgcmV0dXJuIGNyZWF0ZVJlZjxDbGllbnRS
ZWN0Pihkb2N1bWVudC0+ZnJhbWUoKS0+c2VsZWN0aW9uKCkuYWJzb2x1dGVDYXJldEJvdW5kcygp
KTsKIH0KIAogUmVmPENsaWVudFJlY3Q+IEludGVybmFsczo6Ym91bmRpbmdCb3goRWxlbWVudCog
ZWxlbWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFlbGVtZW50KSB7CiAgICAg
ICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwotICAgICAgICByZXR1cm4gQ2xpZW50UmVjdDo6
Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBjcmVhdGVSZWY8Q2xpZW50UmVjdD4oKTsKICAgICB9
CiAKICAgICBlbGVtZW50LT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHls
ZXNoZWV0cygpOwogICAgIGF1dG8gcmVuZGVyZXIgPSBlbGVtZW50LT5yZW5kZXJlcigpOwogICAg
IGlmICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBDbGllbnRSZWN0OjpjcmVhdGUoKTsKLSAg
ICByZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRlKHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVJlZjxDbGll
bnRSZWN0PigpOworICAgIHJldHVybiBjcmVhdGVSZWY8Q2xpZW50UmVjdD4ocmVuZGVyZXItPmFi
c29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCkpOwogfQogCiBSZWY8Q2xp
ZW50UmVjdExpc3Q+IEludGVybmFsczo6aW5zcGVjdG9ySGlnaGxpZ2h0UmVjdHMoRXhjZXB0aW9u
Q29kZSYgZWMpCkBAIC0yNTE1LDEwICsyNTE1LDEwIEBAIFJlZjxDbGllbnRSZWN0PiBJbnRlcm5h
bHM6OnNlbGVjdGlvbkJvdW5kcyhFeGNlcHRpb25Db2RlJiBlYykKICAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSBjb250ZXh0RG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVu
dC0+ZnJhbWUoKSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKLSAgICAgICAg
cmV0dXJuIENsaWVudFJlY3Q6OmNyZWF0ZSgpOworICAgICAgICByZXR1cm4gY3JlYXRlUmVmPENs
aWVudFJlY3Q+KCk7CiAgICAgfQogCi0gICAgcmV0dXJuIENsaWVudFJlY3Q6OmNyZWF0ZShkb2N1
bWVudC0+ZnJhbWUoKS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uQm91bmRzKCkpOworICAgIHJldHVy
biBjcmVhdGVSZWY8Q2xpZW50UmVjdD4oZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVjdGlvbigpLnNl
bGVjdGlvbkJvdW5kcygpKTsKIH0KIAogI2lmIEVOQUJMRShWSUJSQVRJT04pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253900</attachid>
            <date>2015-05-29 03:48:47 -0700</date>
            <delta_ts>2015-06-04 11:20:11 -0700</delta_ts>
            <desc>Test patch</desc>
            <filename>bug-145384-20150529035247.patch</filename>
            <type>text/plain</type>
            <size>33679</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0OTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGMzYTE5NjllOTFkMGU5NDg1MmQ0ODI3
ZTg5NDBmMzEzZjlkMzA2NjAuLmFmYTAwZTEzMGIwZGM5OTA2ZWU4NzFjNzY0OWFjZWVlMDA0OTI2
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDUtMjkgIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIEludHJvZHVjZSBXVEY6OmNyZWF0ZVJlZjxUPihB
cmdzJiYuLi4pCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDUzODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHd0Zi9SZWYuaDoKKyAgICAgICAgKFdURjo6Y3JlYXRlUmVmKToKKwogMjAxNS0wNS0yOCAg
R3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUHVyZ2Ug
UGFzc1JlZlB0ciBpbiBTdHJpbmdDb25jYXRlbmF0ZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGRlYjg1N2Ri
YjY1OWM4MjM3YjRkY2ViMGQ3NjYwNGViMGI0ZWY3NS4uZDFiZmM5YTgzOTE4YmY1Yzc0ZmI1NWZi
YzJmM2EyM2JlZTc2NGJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTA1LTI5
ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBJbnRyb2R1
Y2UgV1RGOjpjcmVhdGVSZWY8VD4oQXJncyYmLi4uKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1Mzg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkb20vQ2xpZW50UmVjdC5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpZW50UmVjdDo6Y3JlYXRlKToKKwogMjAxNS0wNS0yOCAgSHVuc2VvcCBKZW9uZyAg
PGhzODUuamVvbmdAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgUmVwbGFjZWQgMCB3aXRoIG51bGxw
dHIgaW4gV2ViQ29yZS9hY2Nlc3NpYmlsaXR5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
UmVmLmggYi9Tb3VyY2UvV1RGL3d0Zi9SZWYuaAppbmRleCA1MGE1ZTc2MTczMmRmYzI3MmYxY2Ji
OGRjOTViZGQ4ZjU0N2FlYWU4Li5hYTBiOTM4ZWYyN2ZlYTc5MGI4MWI5ZTBkZWQwMDQwMjZmZmNl
MmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SZWYuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9SZWYuaApAQCAtMTg2LDEwICsxODYsMTkgQEAgaW5saW5lIFJlZjxUPiBhZG9wdFJlZihUJiBy
ZWZlcmVuY2UpCiAKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4K
K2lubGluZSBSZWY8VD4gY3JlYXRlUmVmKEFyZ3MmJi4uLiBhcmdzKQoreworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7Cit9CisKKyNkZWZp
bmUgV1RGX0NSRUFURV9SRUZfRlJJRU5ETFkgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUu
Li4gQXJncz4gZnJpZW5kIFJlZjxUPiBXVEY6OmNyZWF0ZVJlZihBcmdzJiYuLi4pCisKIH0gLy8g
bmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OlJlZjsKIHVzaW5nIFdURjo6YWRvcHRSZWY7Cit1
c2luZyBXVEY6OmNyZWF0ZVJlZjsKIHVzaW5nIFdURjo6c3RhdGljX3JlZmVyZW5jZV9jYXN0Owog
CiAjZW5kaWYgLy8gV1RGX1JlZl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xp
ZW50UmVjdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsaWVudFJlY3QuaAppbmRleCBmNzYxMzBl
Zjc4NWE4NWFkZjM3MTM0NmVmZjI3MzEzNjcwY2Q3NGIzLi40MTJlMmRkYWZmNDk3NWFmMThkNTA4
YThjZGUxNjUyMmU0MGI2YTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpZW50
UmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGllbnRSZWN0LmgKQEAgLTM3LDExICsz
Nyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBJbnRSZWN0OyAKIAogICAgIGNs
YXNzIENsaWVudFJlY3QgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRl
ZDxDbGllbnRSZWN0PiB7CisgICAgICAgIFdURl9DUkVBVEVfUkVGX0ZSSUVORExZOwogICAgIHB1
YmxpYzoKLSAgICAgICAgc3RhdGljIFJlZjxDbGllbnRSZWN0PiBjcmVhdGUoKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IENsaWVudFJlY3QpOyB9Ci0gICAgICAgIHN0YXRpYyBSZWY8Q2xpZW50UmVj
dD4gY3JlYXRlKGNvbnN0IEludFJlY3QmIHJlY3QpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2xp
ZW50UmVjdChyZWN0KSk7IH0KLSAgICAgICAgc3RhdGljIFJlZjxDbGllbnRSZWN0PiBjcmVhdGUo
Y29uc3QgRmxvYXRSZWN0JiByZWN0KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENsaWVudFJlY3Qo
cmVjdCkpOyB9Ci0KICAgICAgICAgZmxvYXQgdG9wKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0Lnko
KTsgfQogICAgICAgICBmbG9hdCByaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5tYXhYKCk7
IH0KICAgICAgICAgZmxvYXQgYm90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0Lm1heFkoKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NsaWVudFJlY3RMaXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DbGllbnRSZWN0TGlzdC5jcHAKaW5kZXggYTA1N2RkZjNjNjc2NDE1
OGYzMzc3Y2ExYzhlNTg0NGY0MTM3YTBhMC4uYWUzOTY4ZDU0Y2NhZDM4NjVlZTVlYjVkOWYxOTI0
MzdkMWE1Zjc2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NsaWVudFJlY3RMaXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpZW50UmVjdExpc3QuY3BwCkBAIC00MCw3
ICs0MCw3IEBAIENsaWVudFJlY3RMaXN0OjpDbGllbnRSZWN0TGlzdChjb25zdCBWZWN0b3I8Rmxv
YXRRdWFkPiYgcXVhZHMpCiB7CiAgICAgbV9saXN0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocXVh
ZHMuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHF1YWRzLnNpemUoKTsgKytp
KQotICAgICAgICBtX2xpc3QuYXBwZW5kKENsaWVudFJlY3Q6OmNyZWF0ZShxdWFkc1tpXS5lbmNs
b3NpbmdCb3VuZGluZ0JveCgpKSk7CisgICAgICAgIG1fbGlzdC5hcHBlbmQoY3JlYXRlUmVmPENs
aWVudFJlY3Q+KHF1YWRzW2ldLmVuY2xvc2luZ0JvdW5kaW5nQm94KCkpKTsKIH0KIAogQ2xpZW50
UmVjdExpc3Q6On5DbGllbnRSZWN0TGlzdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggMDZl
YWFmZGIwMGM0ZDYyODYxMjllMGI1YTg3Mzg4NzUyMzM1ZTAzNS4uNGYzYWQzMGVkYmFiOTMzMzY3
NTQ1YWU1YjE3ZjQwN2E1YjZmMTg0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTA4Niwx
NCArMTA4NiwxNCBAQCBSZWY8Q2xpZW50UmVjdD4gRWxlbWVudDo6Z2V0Qm91bmRpbmdDbGllbnRS
ZWN0KCkKICAgICB9CiAKICAgICBpZiAocXVhZHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
Q2xpZW50UmVjdDo6Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBjcmVhdGVSZWY8Q2xpZW50UmVj
dD4oKTsKIAogICAgIEZsb2F0UmVjdCByZXN1bHQgPSBxdWFkc1swXS5ib3VuZGluZ0JveCgpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgcXVhZHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIHJl
c3VsdC51bml0ZShxdWFkc1tpXS5ib3VuZGluZ0JveCgpKTsKIAogICAgIGRvY3VtZW50KCkuYWRq
dXN0RmxvYXRSZWN0Rm9yU2Nyb2xsQW5kQWJzb2x1dGVab29tQW5kRnJhbWVTY2FsZShyZXN1bHQs
IHJlbmRlcmVyKCktPnN0eWxlKCkpOwotICAgIHJldHVybiBDbGllbnRSZWN0OjpjcmVhdGUocmVz
dWx0KTsKKyAgICByZXR1cm4gY3JlYXRlUmVmPENsaWVudFJlY3Q+KHJlc3VsdCk7CiB9CiAKIElu
dFJlY3QgRWxlbWVudDo6Y2xpZW50UmVjdCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAppbmRleCAy
NjczYWRkOTYzMmFmNWI5NWI2OTBkNjA3ZTYzZjExNDJmNTk5NTQxLi4wOTMzODlmZWZiOWZmZjQ5
YzZmYTI5ZWQ2NTdkOWViZGEwOGUzYjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
UmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKQEAgLTIxODcsNyAr
MjE4Nyw3IEBAIFJlZjxDbGllbnRSZWN0TGlzdD4gUmFuZ2U6OmdldENsaWVudFJlY3RzKCkgY29u
c3QKIAogUmVmPENsaWVudFJlY3Q+IFJhbmdlOjpnZXRCb3VuZGluZ0NsaWVudFJlY3QoKSBjb25z
dAogewotICAgIHJldHVybiBDbGllbnRSZWN0OjpjcmVhdGUoYm91bmRpbmdSZWN0KCkpOworICAg
IHJldHVybiBjcmVhdGVSZWY8Q2xpZW50UmVjdD4oYm91bmRpbmdSZWN0KCkpOwogfQogCiB2b2lk
IFJhbmdlOjpnZXRCb3JkZXJBbmRUZXh0UXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDA3ZjhjYmQ4ODQ3MGIy
MTI4NTlkMDM1MmEwNWRkMDBiZTQzMjVmYjkuLjRjMDk4M2JiOTZlZTIzNjUxZDJhOTMxYzhkY2I2
ZmM4YTU5MDVkYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTg4MSwy
NCArODgxLDI0IEBAIFJlZjxDbGllbnRSZWN0PiBJbnRlcm5hbHM6OmFic29sdXRlQ2FyZXRCb3Vu
ZHMoRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gY29udGV4dERv
Y3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkpIHsKICAg
ICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7Ci0gICAgICAgIHJldHVybiBDbGllbnRSZWN0
OjpjcmVhdGUoKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVJlZjxDbGllbnRSZWN0PigpOwogICAg
IH0KIAotICAgIHJldHVybiBDbGllbnRSZWN0OjpjcmVhdGUoZG9jdW1lbnQtPmZyYW1lKCktPnNl
bGVjdGlvbigpLmFic29sdXRlQ2FyZXRCb3VuZHMoKSk7CisgICAgcmV0dXJuIGNyZWF0ZVJlZjxD
bGllbnRSZWN0Pihkb2N1bWVudC0+ZnJhbWUoKS0+c2VsZWN0aW9uKCkuYWJzb2x1dGVDYXJldEJv
dW5kcygpKTsKIH0KIAogUmVmPENsaWVudFJlY3Q+IEludGVybmFsczo6Ym91bmRpbmdCb3goRWxl
bWVudCogZWxlbWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFlbGVtZW50KSB7
CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwotICAgICAgICByZXR1cm4gQ2xpZW50
UmVjdDo6Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBjcmVhdGVSZWY8Q2xpZW50UmVjdD4oKTsK
ICAgICB9CiAKICAgICBlbGVtZW50LT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRp
bmdTdHlsZXNoZWV0cygpOwogICAgIGF1dG8gcmVuZGVyZXIgPSBlbGVtZW50LT5yZW5kZXJlcigp
OwogICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBDbGllbnRSZWN0OjpjcmVhdGUo
KTsKLSAgICByZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRlKHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5k
aW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVJl
ZjxDbGllbnRSZWN0PigpOworICAgIHJldHVybiBjcmVhdGVSZWY8Q2xpZW50UmVjdD4ocmVuZGVy
ZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCkpOwogfQogCiBS
ZWY8Q2xpZW50UmVjdExpc3Q+IEludGVybmFsczo6aW5zcGVjdG9ySGlnaGxpZ2h0UmVjdHMoRXhj
ZXB0aW9uQ29kZSYgZWMpCkBAIC0yNTE1LDEwICsyNTE1LDEwIEBAIFJlZjxDbGllbnRSZWN0PiBJ
bnRlcm5hbHM6OnNlbGVjdGlvbkJvdW5kcyhFeGNlcHRpb25Db2RlJiBlYykKICAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSBjb250ZXh0RG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50IHx8ICFk
b2N1bWVudC0+ZnJhbWUoKSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKLSAg
ICAgICAgcmV0dXJuIENsaWVudFJlY3Q6OmNyZWF0ZSgpOworICAgICAgICByZXR1cm4gY3JlYXRl
UmVmPENsaWVudFJlY3Q+KCk7CiAgICAgfQogCi0gICAgcmV0dXJuIENsaWVudFJlY3Q6OmNyZWF0
ZShkb2N1bWVudC0+ZnJhbWUoKS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uQm91bmRzKCkpOworICAg
IHJldHVybiBjcmVhdGVSZWY8Q2xpZW50UmVjdD4oZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVjdGlv
bigpLnNlbGVjdGlvbkJvdW5kcygpKTsKIH0KIAogI2lmIEVOQUJMRShWSUJSQVRJT04pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlE
QkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIv
VW5pcXVlSURCRGF0YWJhc2UuY3BwCmluZGV4IGY3NjgxZTc0YWUxMzliNzgzOTgxYWM1NDQ3MDgx
OTY1MGE0ZTAwMTguLmEzMDM5MjEyYWZlNjBhNDFjNDQwOTY1ZTUyZmY5ZWJlMGZmNjUyMGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVl
SURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRl
eGVkREIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6ZGVsZXRlRGF0YWJhc2Uoc3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4g
c3VjY2Vzc0NhbGxiYWMKICAgICB9CiAKICAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2U+IHBy
b3RlY3Rvcih0aGlzKTsKLSAgICBtX3BlbmRpbmdTaHV0ZG93blRhc2sgPSBBc3luY1JlcXVlc3RJ
bXBsPFVuaXF1ZUlEQkRhdGFiYXNlU2h1dGRvd25UeXBlPjo6Y3JlYXRlKFt0aGlzLCBwcm90ZWN0
b3IsIHN1Y2Nlc3NDYWxsYmFja10oVW5pcXVlSURCRGF0YWJhc2VTaHV0ZG93blR5cGUgdHlwZSkg
eworICAgIG1fcGVuZGluZ1NodXRkb3duVGFzayA9IGNyZWF0ZVJlZjxBc3luY1JlcXVlc3RJbXBs
PFVuaXF1ZUlEQkRhdGFiYXNlU2h1dGRvd25UeXBlPj4oW3RoaXMsIHByb3RlY3Rvciwgc3VjY2Vz
c0NhbGxiYWNrXShVbmlxdWVJREJEYXRhYmFzZVNodXRkb3duVHlwZSB0eXBlKSB7CiAgICAgICAg
IC8vIElmIHRoZSBzaHV0ZG93biBqdXN0IGNvbXBsZXRlZCB3YXMgYSBEZWxldGUgc2h1dGRvd24g
dGhlbiB3ZSBzdWNjZWVkZWQuCiAgICAgICAgIC8vIElmIG5vdCByZXBvcnQgZmFpbHVyZSBpbnN0
ZWFkIG9mIHRyeWluZyBhZ2Fpbi4KICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKHR5cGUgPT0gVW5p
cXVlSURCRGF0YWJhc2VTaHV0ZG93blR5cGU6OkRlbGV0ZVNodXRkb3duKTsKQEAgLTIzNSw3ICsy
MzUsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRPckVzdGFibGlzaElEQkRhdGFiYXNl
TWV0YWRhdGEoc3RkOjpmdW5jdGlvbjx2b2lkIChibwogICAgIGJvb2wgc2hvdWxkT3BlbkJhY2tp
bmdTdG9yZSA9IG1fcGVuZGluZ01ldGFkYXRhUmVxdWVzdHMuaXNFbXB0eSgpOwogCiAgICAgLy8g
VGhlbiByZW1lbWJlciB0aGlzIG1ldGFkYXRhIHJlcXVlc3QgdG8gYmUgYW5zd2VyZWQgbGF0ZXIu
Ci0gICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gcmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8Pjo6
Y3JlYXRlKFtjb21wbGV0aW9uQ2FsbGJhY2ssIHRoaXNdIHsKKyAgICBSZWZQdHI8QXN5bmNSZXF1
ZXN0PiByZXF1ZXN0ID0gY3JlYXRlUmVmPEFzeW5jUmVxdWVzdEltcGw8Pj4oW2NvbXBsZXRpb25D
YWxsYmFjaywgdGhpc10gewogICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2soISFtX21ldGFkYXRh
LCBtX21ldGFkYXRhID8gKm1fbWV0YWRhdGEgOiBJREJEYXRhYmFzZU1ldGFkYXRhKCkpOwogICAg
IH0sIFtjb21wbGV0aW9uQ2FsbGJhY2tdIHsKICAgICAgICAgLy8gVGhlIGJvb2xlYW4gZmxhZyB0
byB0aGUgY29tcGxldGlvbiBjYWxsYmFjayByZXByZXNlbnRzIHdoZXRoZXIgdGhlCkBAIC0zMjQs
NyArMzI0LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cG9zdFRyYW5zYWN0aW9uT3BlcmF0
aW9uKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW8KIAogICAgIHBvc3REYXRhYmFzZVRh
c2soV1RGOjptb3ZlKHRhc2spKTsKIAotICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHJlcXVlc3Qg
PSBBc3luY1JlcXVlc3RJbXBsPGJvb2w+OjpjcmVhdGUoW3N1Y2Nlc3NDYWxsYmFja10oYm9vbCBz
dWNjZXNzKSB7CisgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gcmVxdWVzdCA9IGNyZWF0ZVJlZjxB
c3luY1JlcXVlc3RJbXBsPGJvb2w+Pihbc3VjY2Vzc0NhbGxiYWNrXShib29sIHN1Y2Nlc3MpIHsK
ICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nlc3MpOwogICAgIH0sIFtzdWNjZXNzQ2FsbGJh
Y2tdIHsKICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKGZhbHNlKTsKQEAgLTM1OCw3ICszNTgsNyBA
QCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjaGFuZ2VEYXRhYmFzZVZlcnNpb24oY29uc3QgSURC
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZAogICAgIHVpbnQ2NF90IG9sZFZlcnNpb24gPSBtX21l
dGFkYXRhLT52ZXJzaW9uOwogICAgIG1fbWV0YWRhdGEtPnZlcnNpb24gPSBuZXdWZXJzaW9uOwog
Ci0gICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gcmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8Ym9v
bD46OmNyZWF0ZShbdGhpcywgb2xkVmVyc2lvbiwgc3VjY2Vzc0NhbGxiYWNrXShib29sIHN1Y2Nl
c3MpIHsKKyAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiByZXF1ZXN0ID0gY3JlYXRlUmVmPEFzeW5j
UmVxdWVzdEltcGw8Ym9vbD4+KFt0aGlzLCBvbGRWZXJzaW9uLCBzdWNjZXNzQ2FsbGJhY2tdKGJv
b2wgc3VjY2VzcykgewogICAgICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAgICAgICBtX21ldGFk
YXRhLT52ZXJzaW9uID0gb2xkVmVyc2lvbjsKICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nl
c3MpOwpAQCAtNDIxLDcgKzQyMSw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9i
amVjdFN0b3JlKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpCiAgICAgbV9t
ZXRhZGF0YS0+b2JqZWN0U3RvcmVzLnNldChtZXRhZGF0YS5pZCwgbWV0YWRhdGEpOwogICAgIGlu
dDY0X3QgYWRkZWRPYmplY3RTdG9yZUlEID0gbWV0YWRhdGEuaWQ7CiAKLSAgICBSZWZQdHI8QXN5
bmNSZXF1ZXN0PiByZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDxib29sPjo6Y3JlYXRlKFt0aGlz
LCBhZGRlZE9iamVjdFN0b3JlSUQsIHN1Y2Nlc3NDYWxsYmFja10oYm9vbCBzdWNjZXNzKSB7Cisg
ICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gcmVxdWVzdCA9IGNyZWF0ZVJlZjxBc3luY1JlcXVlc3RJ
bXBsPGJvb2w+PihbdGhpcywgYWRkZWRPYmplY3RTdG9yZUlELCBzdWNjZXNzQ2FsbGJhY2tdKGJv
b2wgc3VjY2VzcykgewogICAgICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAgICAgICBtX21ldGFk
YXRhLT5vYmplY3RTdG9yZXMucmVtb3ZlKGFkZGVkT2JqZWN0U3RvcmVJRCk7CiAgICAgICAgIHN1
Y2Nlc3NDYWxsYmFjayhzdWNjZXNzKTsKQEAgLTQ0OCw3ICs0NDgsNyBAQCB2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2Fj
dGlvbklkZW50aQogICAgIEFTU0VSVChtX21ldGFkYXRhLT5vYmplY3RTdG9yZXMuY29udGFpbnMo
b2JqZWN0U3RvcmVJRCkpOwogICAgIElEQk9iamVjdFN0b3JlTWV0YWRhdGEgbWV0YWRhdGEgPSBt
X21ldGFkYXRhLT5vYmplY3RTdG9yZXMudGFrZShvYmplY3RTdG9yZUlEKTsKIAotICAgIFJlZlB0
cjxBc3luY1JlcXVlc3Q+IHJlcXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPGJvb2w+OjpjcmVhdGUo
W3RoaXMsIG1ldGFkYXRhLCBzdWNjZXNzQ2FsbGJhY2tdKGJvb2wgc3VjY2VzcykgeworICAgIFJl
ZlB0cjxBc3luY1JlcXVlc3Q+IHJlcXVlc3QgPSBjcmVhdGVSZWY8QXN5bmNSZXF1ZXN0SW1wbDxi
b29sPj4oW3RoaXMsIG1ldGFkYXRhLCBzdWNjZXNzQ2FsbGJhY2tdKGJvb2wgc3VjY2Vzcykgewog
ICAgICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAgICAgICBtX21ldGFkYXRhLT5vYmplY3RTdG9y
ZXMuc2V0KG1ldGFkYXRhLmlkLCBtZXRhZGF0YSk7CiAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjayhz
dWNjZXNzKTsKQEAgLTQ3NCw3ICs0NzQsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVh
ck9iamVjdFN0b3JlKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZgogCiAg
ICAgQVNTRVJUKG1fbWV0YWRhdGEtPm9iamVjdFN0b3Jlcy5jb250YWlucyhvYmplY3RTdG9yZUlE
KSk7CiAKLSAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiByZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1w
bDxib29sPjo6Y3JlYXRlKFt0aGlzLCBzdWNjZXNzQ2FsbGJhY2tdKGJvb2wgc3VjY2Vzcykgewor
ICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHJlcXVlc3QgPSBjcmVhdGVSZWY8QXN5bmNSZXF1ZXN0
SW1wbDxib29sPj4oW3RoaXMsIHN1Y2Nlc3NDYWxsYmFja10oYm9vbCBzdWNjZXNzKSB7CiAgICAg
ICAgIHN1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzKTsKICAgICB9LCBbdGhpcywgc3VjY2Vzc0NhbGxi
YWNrXSB7CiAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjayhmYWxzZSk7CkBAIC01MDAsNyArNTAwLDcg
QEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlSW5kZXgoY29uc3QgSURCSWRlbnRpZmll
ciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLAogICAgIG1fbWV0YWRhdGEtPm9iamVjdFN0b3Jlcy5n
ZXQob2JqZWN0U3RvcmVJRCkuaW5kZXhlcy5zZXQobWV0YWRhdGEuaWQsIG1ldGFkYXRhKTsKICAg
ICBpbnQ2NF90IGFkZGVkSW5kZXhJRCA9IG1ldGFkYXRhLmlkOwogCi0gICAgUmVmUHRyPEFzeW5j
UmVxdWVzdD4gcmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8Ym9vbD46OmNyZWF0ZShbdGhpcywg
b2JqZWN0U3RvcmVJRCwgYWRkZWRJbmRleElELCBzdWNjZXNzQ2FsbGJhY2tdKGJvb2wgc3VjY2Vz
cykgeworICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHJlcXVlc3QgPSBjcmVhdGVSZWY8QXN5bmNS
ZXF1ZXN0SW1wbDxib29sPj4oW3RoaXMsIG9iamVjdFN0b3JlSUQsIGFkZGVkSW5kZXhJRCwgc3Vj
Y2Vzc0NhbGxiYWNrXShib29sIHN1Y2Nlc3MpIHsKICAgICAgICAgaWYgKCFzdWNjZXNzKSB7CiAg
ICAgICAgICAgICBhdXRvIG9iamVjdFN0b3JlRmluZCA9IG1fbWV0YWRhdGEtPm9iamVjdFN0b3Jl
cy5maW5kKG9iamVjdFN0b3JlSUQpOwogICAgICAgICAgICAgaWYgKG9iamVjdFN0b3JlRmluZCAh
PSBtX21ldGFkYXRhLT5vYmplY3RTdG9yZXMuZW5kKCkpCkBAIC01MzQsNyArNTM0LDcgQEAgdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXgoY29uc3QgSURCSWRlbnRpZmllciYgdHJh
bnNhY3Rpb25JZGVudGlmaWVyLAogCiAgICAgSURCSW5kZXhNZXRhZGF0YSBtZXRhZGF0YSA9IG1f
bWV0YWRhdGEtPm9iamVjdFN0b3Jlcy5nZXQob2JqZWN0U3RvcmVJRCkuaW5kZXhlcy50YWtlKGlu
ZGV4SUQpOwogCi0gICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gcmVxdWVzdCA9IEFzeW5jUmVxdWVz
dEltcGw8Ym9vbD46OmNyZWF0ZShbdGhpcywgb2JqZWN0U3RvcmVJRCwgbWV0YWRhdGEsIHN1Y2Nl
c3NDYWxsYmFja10oYm9vbCBzdWNjZXNzKSB7CisgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gcmVx
dWVzdCA9IGNyZWF0ZVJlZjxBc3luY1JlcXVlc3RJbXBsPGJvb2w+PihbdGhpcywgb2JqZWN0U3Rv
cmVJRCwgbWV0YWRhdGEsIHN1Y2Nlc3NDYWxsYmFja10oYm9vbCBzdWNjZXNzKSB7CiAgICAgICAg
IGlmICghc3VjY2VzcykgewogICAgICAgICAgICAgYXV0byBvYmplY3RTdG9yZUZpbmQgPSBtX21l
dGFkYXRhLT5vYmplY3RTdG9yZXMuZmluZChvYmplY3RTdG9yZUlEKTsKICAgICAgICAgICAgIGlm
IChvYmplY3RTdG9yZUZpbmQgIT0gbV9tZXRhZGF0YS0+b2JqZWN0U3RvcmVzLmVuZCgpKQpAQCAt
NTY1LDcgKzU2NSw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dFJlY29yZChjb25zdCBJ
REJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGluCiAKICAgICBBU1NFUlQobV9t
ZXRhZGF0YS0+b2JqZWN0U3RvcmVzLmNvbnRhaW5zKG9iamVjdFN0b3JlSUQpKTsKIAotICAgIFJl
ZlB0cjxBc3luY1JlcXVlc3Q+IHJlcXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPElEQktleURhdGEs
IHVpbnQzMl90LCBTdHJpbmc+OjpjcmVhdGUoW3RoaXMsIGNhbGxiYWNrXShjb25zdCBJREJLZXlE
YXRhJiBrZXlEYXRhLCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlKSB7CisgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gcmVxdWVzdCA9IGNyZWF0ZVJlZjxBc3lu
Y1JlcXVlc3RJbXBsPElEQktleURhdGEsIHVpbnQzMl90LCBTdHJpbmc+PihbdGhpcywgY2FsbGJh
Y2tdKGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3Qg
U3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsKICAgICAgICAgY2FsbGJhY2soa2V5RGF0YSwgZXJyb3JD
b2RlLCBlcnJvck1lc3NhZ2UpOwogICAgIH0sIFt0aGlzLCBjYWxsYmFja10gewogICAgICAgICBj
YWxsYmFjayhJREJLZXlEYXRhKCksIElOVkFMSURfU1RBVEVfRVJSLCAiVW5hYmxlIHRvIHB1dCBy
ZWNvcmQgaW50byBkYXRhYmFzZSIpOwpAQCAtNTg4LDcgKzU4OCw3IEBAIHZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OmdldFJlY29yZChjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50
aWZpZXIsIGluCiAKICAgICBBU1NFUlQobV9tZXRhZGF0YS0+b2JqZWN0U3RvcmVzLmNvbnRhaW5z
KG9iamVjdFN0b3JlSUQpKTsKIAotICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHJlcXVlc3QgPSBB
c3luY1JlcXVlc3RJbXBsPElEQkdldFJlc3VsdCwgdWludDMyX3QsIFN0cmluZz46OmNyZWF0ZShb
dGhpcywgY2FsbGJhY2tdKGNvbnN0IElEQkdldFJlc3VsdCYgcmVzdWx0LCB1aW50MzJfdCBlcnJv
ckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7CisgICAgUmVmUHRyPEFzeW5jUmVx
dWVzdD4gcmVxdWVzdCA9IGNyZWF0ZVJlZjxBc3luY1JlcXVlc3RJbXBsPElEQkdldFJlc3VsdCwg
dWludDMyX3QsIFN0cmluZz4+KFt0aGlzLCBjYWxsYmFja10oY29uc3QgSURCR2V0UmVzdWx0JiBy
ZXN1bHQsIHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsK
ICAgICAgICAgY2FsbGJhY2socmVzdWx0LCBlcnJvckNvZGUsIGVycm9yTWVzc2FnZSk7CiAgICAg
fSwgW3RoaXMsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNrKElEQkdldFJlc3VsdCgpLCBJ
TlZBTElEX1NUQVRFX0VSUiwgIlVuYWJsZSB0byBnZXQgcmVjb3JkIGZyb20gZGF0YWJhc2UiKTsK
QEAgLTYxMSw3ICs2MTEsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQ3Vyc29yKGNv
bnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaQogCiAgICAgQVNTRVJU
KG1fbWV0YWRhdGEtPm9iamVjdFN0b3Jlcy5jb250YWlucyhvYmplY3RTdG9yZUlEKSk7CiAKLSAg
ICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiByZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDxpbnQ2NF90
LCBJREJLZXlEYXRhLCBJREJLZXlEYXRhLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIHVpbnQz
Ml90LCBTdHJpbmc+OjpjcmVhdGUoW3RoaXMsIGNhbGxiYWNrXShpbnQ2NF90IGN1cnNvcklELCBj
b25zdCBJREJLZXlEYXRhJiBrZXksIGNvbnN0IElEQktleURhdGEmIHByaW1hcnlLZXksIFBhc3NS
ZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSwgdWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSkgeworICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHJlcXVlc3QgPSBj
cmVhdGVSZWY8QXN5bmNSZXF1ZXN0SW1wbDxpbnQ2NF90LCBJREJLZXlEYXRhLCBJREJLZXlEYXRh
LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIHVpbnQzMl90LCBTdHJpbmc+PihbdGhpcywgY2Fs
bGJhY2tdKGludDY0X3QgY3Vyc29ySUQsIGNvbnN0IElEQktleURhdGEmIGtleSwgY29uc3QgSURC
S2V5RGF0YSYgcHJpbWFyeUtleSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlLCB1aW50
MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7CiAgICAgICAgIGNh
bGxiYWNrKGN1cnNvcklELCBrZXksIHByaW1hcnlLZXksIHZhbHVlLCBlcnJvckNvZGUsIGVycm9y
TWVzc2FnZSk7CiAgICAgfSwgW3RoaXMsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNrKDAs
IG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIElOVkFMSURfU1RBVEVfRVJSLCAiVW5hYmxlIHRv
IGdldCByZWNvcmQgZnJvbSBkYXRhYmFzZSIpOwpAQCAtNjMyLDcgKzYzMiw3IEBAIHZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OmN1cnNvckFkdmFuY2UoY29uc3QgSURCSWRlbnRpZmllciYgY3Vyc29y
SWRlbnRpZmllciwgdWluCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8QXN5
bmNSZXF1ZXN0PiByZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDxJREJLZXlEYXRhLCBJREJLZXlE
YXRhLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIHVpbnQzMl90LCBTdHJpbmc+OjpjcmVhdGUo
W3RoaXMsIGNhbGxiYWNrXShjb25zdCBJREJLZXlEYXRhJiBrZXksIGNvbnN0IElEQktleURhdGEm
IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSwgdWludDMyX3QgZXJy
b3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgeworICAgIFJlZlB0cjxBc3luY1Jl
cXVlc3Q+IHJlcXVlc3QgPSBjcmVhdGVSZWY8QXN5bmNSZXF1ZXN0SW1wbDxJREJLZXlEYXRhLCBJ
REJLZXlEYXRhLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIHVpbnQzMl90LCBTdHJpbmc+Pihb
dGhpcywgY2FsbGJhY2tdKGNvbnN0IElEQktleURhdGEmIGtleSwgY29uc3QgSURCS2V5RGF0YSYg
cHJpbWFyeUtleSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlLCB1aW50MzJfdCBlcnJv
ckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7CiAgICAgICAgIGNhbGxiYWNrKGtl
eSwgcHJpbWFyeUtleSwgdmFsdWUsIGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKTsKICAgICB9LCBb
dGhpcywgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2sobnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciwgSU5WQUxJRF9TVEFURV9FUlIsICJVbmFibGUgdG8gYWR2YW5jZSBjdXJzb3IgaW4gZGF0
YWJhc2UiKTsKQEAgLTY1Myw3ICs2NTMsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjdXJz
b3JJdGVyYXRlKGNvbnN0IElEQklkZW50aWZpZXImIGN1cnNvcklkZW50aWZpZXIsIGNvbgogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gcmVxdWVzdCA9
IEFzeW5jUmVxdWVzdEltcGw8SURCS2V5RGF0YSwgSURCS2V5RGF0YSwgUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+LCB1aW50MzJfdCwgU3RyaW5nPjo6Y3JlYXRlKFt0aGlzLCBjYWxsYmFja10oY29u
c3QgSURCS2V5RGF0YSYga2V5LCBjb25zdCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5LCBQYXNzUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUsIHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UpIHsKKyAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiByZXF1ZXN0ID0gY3Jl
YXRlUmVmPEFzeW5jUmVxdWVzdEltcGw8SURCS2V5RGF0YSwgSURCS2V5RGF0YSwgUGFzc1JlZlB0
cjxTaGFyZWRCdWZmZXI+LCB1aW50MzJfdCwgU3RyaW5nPj4oW3RoaXMsIGNhbGxiYWNrXShjb25z
dCBJREJLZXlEYXRhJiBrZXksIGNvbnN0IElEQktleURhdGEmIHByaW1hcnlLZXksIFBhc3NSZWZQ
dHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSwgdWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSkgewogICAgICAgICBjYWxsYmFjayhrZXksIHByaW1hcnlLZXksIHZhbHVl
LCBlcnJvckNvZGUsIGVycm9yTWVzc2FnZSk7CiAgICAgfSwgW3RoaXMsIGNhbGxiYWNrXSB7CiAg
ICAgICAgIGNhbGxiYWNrKG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIElOVkFMSURfU1RBVEVf
RVJSLCAiVW5hYmxlIHRvIGl0ZXJhdGUgY3Vyc29yIGluIGRhdGFiYXNlIik7CkBAIC02NzQsNyAr
Njc0LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y291bnQoY29uc3QgSURCSWRlbnRpZmll
ciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2NF8KICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHJlcXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPGlu
dDY0X3QsIHVpbnQzMl90LCBTdHJpbmc+OjpjcmVhdGUoW3RoaXMsIGNhbGxiYWNrXShpbnQ2NF90
IGNvdW50LCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7
CisgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gcmVxdWVzdCA9IGNyZWF0ZVJlZjxBc3luY1JlcXVl
c3RJbXBsPGludDY0X3QsIHVpbnQzMl90LCBTdHJpbmc+PihbdGhpcywgY2FsbGJhY2tdKGludDY0
X3QgY291bnQsIHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2Up
IHsKICAgICAgICAgY2FsbGJhY2soY291bnQsIGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKTsKICAg
ICB9LCBbdGhpcywgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soMCwgSU5WQUxJRF9TVEFU
RV9FUlIsICJVbmFibGUgdG8gZ2V0IGNvdW50IGZyb20gZGF0YWJhc2UiKTsKQEAgLTY5NSw3ICs2
OTUsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVSYW5nZShjb25zdCBJREJJZGVu
dGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiByZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDx1aW50
MzJfdCwgU3RyaW5nPjo6Y3JlYXRlKFtjYWxsYmFja10odWludDMyX3QgZXJyb3JDb2RlLCBjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgeworICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHJlcXVl
c3QgPSBjcmVhdGVSZWY8QXN5bmNSZXF1ZXN0SW1wbDx1aW50MzJfdCwgU3RyaW5nPj4oW2NhbGxi
YWNrXSh1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7CiAg
ICAgICAgIGNhbGxiYWNrKGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKTsKICAgICB9LCBbY2FsbGJh
Y2tdIHsKICAgICAgICAgY2FsbGJhY2soSU5WQUxJRF9TVEFURV9FUlIsICJVbmFibGUgdG8gZGVs
ZXRlUmFuZ2UgZnJvbSBkYXRhYmFzZSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FzeW5jUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FzeW5jUmVxdWVzdC5o
CmluZGV4IGJmZGUxOTg0NjE0NzE0OGZmZjg5YTE0OGQ4NzE3NDZjNmE2NmRlMzEuLjBlZmM1Yzlh
MGU4OWMxNzc3OWMyYmZkYjBkNzRmN2Q2ZmYwNzRhZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Bc3luY1JlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXN5
bmNSZXF1ZXN0LmgKQEAgLTU3LDE5ICs1NywxMCBAQCBwcml2YXRlOgogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUuLi4gQXJndW1lbnRzPgogY2xhc3MgQXN5bmNSZXF1ZXN0SW1wbCBmaW5hbCA6IHB1Ymxp
YyBBc3luY1JlcXVlc3QgeworICAgIFdURl9DUkVBVEVfUkVGX0ZSSUVORExZOwogcHVibGljOgog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHVzaW5nIEFyZ3VtZW50VHlwZSA9IHR5cGVuYW1lIHN0
ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWUsIFQsIGNvbnN0IFQmPjo6
dHlwZTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFzeW5jUmVxdWVzdD4gY3JlYXRlKHN0ZDo6
ZnVuY3Rpb248dm9pZCAoQXJndW1lbnRUeXBlPEFyZ3VtZW50cz4uLi4pPiBjb21wbGV0aW9uSGFu
ZGxlcikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXN5bmNSZXF1ZXN0SW1w
bDxBcmd1bWVudHMuLi4+KFdURjo6bW92ZShjb21wbGV0aW9uSGFuZGxlciksIG51bGxwdHIpKTsK
LSAgICB9Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBc3luY1JlcXVlc3Q+IGNyZWF0ZShzdGQ6
OmZ1bmN0aW9uPHZvaWQgKEFyZ3VtZW50VHlwZTxBcmd1bWVudHM+Li4uKT4gY29tcGxldGlvbkhh
bmRsZXIsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gYWJvcnRIYW5kbGVyKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBc3luY1JlcXVlc3RJbXBsPEFyZ3VtZW50cy4uLj4oV1RG
Ojptb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgV1RGOjptb3ZlKGFib3J0SGFuZGxlcikpKTsKLSAg
ICB9Ci0KICAgICB2aXJ0dWFsIH5Bc3luY1JlcXVlc3RJbXBsKCkKICAgICB7CiAgICAgICAgIEFT
U0VSVCghbV9jb21wbGV0aW9uSGFuZGxlcik7CkBAIC04Myw3ICs3NCw3IEBAIHB1YmxpYzoKICAg
ICB9CiAKIHByaXZhdGU6Ci0gICAgQXN5bmNSZXF1ZXN0SW1wbChzdGQ6OmZ1bmN0aW9uPHZvaWQg
KEFyZ3VtZW50VHlwZTxBcmd1bWVudHM+Li4uKT4gY29tcGxldGlvbkhhbmRsZXIsIHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoKT4gYWJvcnRIYW5kbGVyKQorICAgIEFzeW5jUmVxdWVzdEltcGwoc3RkOjpm
dW5jdGlvbjx2b2lkIChBcmd1bWVudFR5cGU8QXJndW1lbnRzPi4uLik+IGNvbXBsZXRpb25IYW5k
bGVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGFib3J0SGFuZGxlciA9IG51bGxwdHIpCiAgICAg
ICAgIDogQXN5bmNSZXF1ZXN0KFdURjo6bW92ZShhYm9ydEhhbmRsZXIpKQogICAgICAgICAsIG1f
Y29tcGxldGlvbkhhbmRsZXIoV1RGOjptb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIv
V2ViSURCU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rh
dGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggMGUwN2Iy
ZjIzODkwYjk4MzdkNzRkZTY4YjdkMzIxZWM4MWIwOGM5OC4uNzg2YjU1M2JhYTE1YWY1MDU5MjYx
OGU5Zjc3NzY4YjBhNzBiYzY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlNlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXJD
b25uZWN0aW9uLmNwcApAQCAtODUsNyArODUsNyBAQCBib29sIFdlYklEQlNlcnZlckNvbm5lY3Rp
b246OmlzQ2xvc2VkKCkKIAogdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpkZWxldGVEYXRh
YmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIEJvb2xDYWxsYmFja0Z1bmN0aW9uIHN1Y2Nlc3NDYWxs
YmFjaykKIHsKLSAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0gQXN5bmNS
ZXF1ZXN0SW1wbDxib29sPjo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjayk7CisgICAgUmVmUHRyPEFz
eW5jUmVxdWVzdD4gc2VydmVyUmVxdWVzdCA9IGNyZWF0ZVJlZjxBc3luY1JlcXVlc3RJbXBsPGJv
b2w+PihzdWNjZXNzQ2FsbGJhY2spOwogCiAgICAgc2VydmVyUmVxdWVzdC0+c2V0QWJvcnRIYW5k
bGVyKFtzdWNjZXNzQ2FsbGJhY2tdIHsKICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKGZhbHNlKTsK
QEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmRpZERlbGV0
ZURhdGFiYXNlKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCBzdWNjZXNzKQogCiB2b2lkIFdlYklE
QlNlcnZlckNvbm5lY3Rpb246OmdldE9yRXN0YWJsaXNoSURCRGF0YWJhc2VNZXRhZGF0YShHZXRJ
REJEYXRhYmFzZU1ldGFkYXRhRnVuY3Rpb24gY29tcGxldGlvbkNhbGxiYWNrKQogewotICAgIFJl
ZlB0cjxBc3luY1JlcXVlc3Q+IHNlcnZlclJlcXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPElEQkRh
dGFiYXNlTWV0YWRhdGEsIGJvb2w+OjpjcmVhdGUoY29tcGxldGlvbkNhbGxiYWNrKTsKKyAgICBS
ZWZQdHI8QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0gY3JlYXRlUmVmPEFzeW5jUmVxdWVz
dEltcGw8SURCRGF0YWJhc2VNZXRhZGF0YSwgYm9vbD4+KGNvbXBsZXRpb25DYWxsYmFjayk7CiAK
ICAgICBzZXJ2ZXJSZXF1ZXN0LT5zZXRBYm9ydEhhbmRsZXIoW2NvbXBsZXRpb25DYWxsYmFja10g
ewogICAgICAgICBJREJEYXRhYmFzZU1ldGFkYXRhIG1ldGFkYXRhOwpAQCAtMTU4LDcgKzE1OCw3
IEBAIHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6Y2xvc2UoKQogCiB2b2lkIFdlYklEQlNl
cnZlckNvbm5lY3Rpb246Om9wZW5UcmFuc2FjdGlvbihpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIGNv
bnN0IEhhc2hTZXQ8aW50NjRfdD4mIG9iamVjdFN0b3JlSURzLCBJbmRleGVkREI6OlRyYW5zYWN0
aW9uTW9kZSBtb2RlLCBCb29sQ2FsbGJhY2tGdW5jdGlvbiBzdWNjZXNzQ2FsbGJhY2spCiB7Ci0g
ICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gc2VydmVyUmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8
Ym9vbD46OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2spOworICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+
IHNlcnZlclJlcXVlc3QgPSBjcmVhdGVSZWY8QXN5bmNSZXF1ZXN0SW1wbDxib29sPj4oc3VjY2Vz
c0NhbGxiYWNrKTsKIAogICAgIHNlcnZlclJlcXVlc3QtPnNldEFib3J0SGFuZGxlcihbc3VjY2Vz
c0NhbGxiYWNrXSB7CiAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjayhmYWxzZSk7CkBAIC0xODksNyAr
MTg5LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpkaWRPcGVuVHJhbnNhY3Rpb24o
dWludDY0X3QgcmVxdWVzdElELCBib29sIHN1Y2Nlc3MKIAogdm9pZCBXZWJJREJTZXJ2ZXJDb25u
ZWN0aW9uOjpiZWdpblRyYW5zYWN0aW9uKGludDY0X3QgdHJhbnNhY3Rpb25JRCwgc3RkOjpmdW5j
dGlvbjx2b2lkICgpPiBjb21wbGV0aW9uQ2FsbGJhY2spCiB7Ci0gICAgUmVmUHRyPEFzeW5jUmVx
dWVzdD4gc2VydmVyUmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8Pjo6Y3JlYXRlKGNvbXBsZXRp
b25DYWxsYmFjaywgY29tcGxldGlvbkNhbGxiYWNrKTsKKyAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0
PiBzZXJ2ZXJSZXF1ZXN0ID0gY3JlYXRlUmVmPEFzeW5jUmVxdWVzdEltcGw8Pj4oY29tcGxldGlv
bkNhbGxiYWNrLCBjb21wbGV0aW9uQ2FsbGJhY2spOwogCiAgICAgdWludDY0X3QgcmVxdWVzdElE
ID0gc2VydmVyUmVxdWVzdC0+cmVxdWVzdElEKCk7CiAgICAgQVNTRVJUKCFtX3NlcnZlclJlcXVl
c3RzLmNvbnRhaW5zKHJlcXVlc3RJRCkpOwpAQCAtMjE0LDcgKzIxNCw3IEBAIHZvaWQgV2ViSURC
U2VydmVyQ29ubmVjdGlvbjo6ZGlkQmVnaW5UcmFuc2FjdGlvbih1aW50NjRfdCByZXF1ZXN0SUQs
IGJvb2wpCiAKIHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6Y29tbWl0VHJhbnNhY3Rpb24o
aW50NjRfdCB0cmFuc2FjdGlvbklELCBCb29sQ2FsbGJhY2tGdW5jdGlvbiBzdWNjZXNzQ2FsbGJh
Y2spCiB7Ci0gICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gc2VydmVyUmVxdWVzdCA9IEFzeW5jUmVx
dWVzdEltcGw8Ym9vbD46OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2spOworICAgIFJlZlB0cjxBc3lu
Y1JlcXVlc3Q+IHNlcnZlclJlcXVlc3QgPSBjcmVhdGVSZWY8QXN5bmNSZXF1ZXN0SW1wbDxib29s
Pj4oc3VjY2Vzc0NhbGxiYWNrKTsKIAogICAgIHNlcnZlclJlcXVlc3QtPnNldEFib3J0SGFuZGxl
cihbc3VjY2Vzc0NhbGxiYWNrXSB7CiAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjayhmYWxzZSk7CkBA
IC0yNDMsNyArMjQzLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpkaWRDb21taXRU
cmFuc2FjdGlvbih1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgc3VjY2UKIAogdm9pZCBXZWJJREJT
ZXJ2ZXJDb25uZWN0aW9uOjpyZXNldFRyYW5zYWN0aW9uKGludDY0X3QgdHJhbnNhY3Rpb25JRCwg
c3RkOjpmdW5jdGlvbjx2b2lkICgpPiBjb21wbGV0aW9uQ2FsbGJhY2spCiB7Ci0gICAgUmVmUHRy
PEFzeW5jUmVxdWVzdD4gc2VydmVyUmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8Pjo6Y3JlYXRl
KGNvbXBsZXRpb25DYWxsYmFjaywgY29tcGxldGlvbkNhbGxiYWNrKTsKKyAgICBSZWZQdHI8QXN5
bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0gY3JlYXRlUmVmPEFzeW5jUmVxdWVzdEltcGw8Pj4o
Y29tcGxldGlvbkNhbGxiYWNrLCBjb21wbGV0aW9uQ2FsbGJhY2spOwogCiAgICAgdWludDY0X3Qg
cmVxdWVzdElEID0gc2VydmVyUmVxdWVzdC0+cmVxdWVzdElEKCk7CiAgICAgQVNTRVJUKCFtX3Nl
cnZlclJlcXVlc3RzLmNvbnRhaW5zKHJlcXVlc3RJRCkpOwpAQCAtMjc1LDcgKzI3NSw3IEBAIGJv
b2wgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6cmVzZXRUcmFuc2FjdGlvblN5bmMoaW50NjRfdCB0
cmFuc2FjdGlvbklEKQogCiB2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OnJvbGxiYWNrVHJh
bnNhY3Rpb24oaW50NjRfdCB0cmFuc2FjdGlvbklELCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGNv
bXBsZXRpb25DYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1
ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDw+OjpjcmVhdGUoY29tcGxldGlvbkNhbGxiYWNrLCBjb21w
bGV0aW9uQ2FsbGJhY2spOworICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHNlcnZlclJlcXVlc3Qg
PSBjcmVhdGVSZWY8QXN5bmNSZXF1ZXN0SW1wbDw+Pihjb21wbGV0aW9uQ2FsbGJhY2ssIGNvbXBs
ZXRpb25DYWxsYmFjayk7CiAKICAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSBzZXJ2ZXJSZXF1ZXN0
LT5yZXF1ZXN0SUQoKTsKICAgICBBU1NFUlQoIW1fc2VydmVyUmVxdWVzdHMuY29udGFpbnMocmVx
dWVzdElEKSk7CkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9u
OjpzZXRJbmRleEtleXMoaW50NjRfdCB0cmFuc2FjdGlvbklELCBpbnQ2NF90IGRhdGFiYXMKIAog
dm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZShJREJUcmFuc2Fj
dGlvbkJhY2tlbmQmIHRyYW5zYWN0aW9uLCBjb25zdCBDcmVhdGVPYmplY3RTdG9yZU9wZXJhdGlv
biYgb3BlcmF0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VF
cnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spCiB7Ci0gICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4g
c2VydmVyUmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8UGFzc1JlZlB0cjxJREJEYXRhYmFzZUVy
cm9yPj46OmNyZWF0ZShjb21wbGV0aW9uQ2FsbGJhY2spOworICAgIFJlZlB0cjxBc3luY1JlcXVl
c3Q+IHNlcnZlclJlcXVlc3QgPSBjcmVhdGVSZWY8QXN5bmNSZXF1ZXN0SW1wbDxQYXNzUmVmUHRy
PElEQkRhdGFiYXNlRXJyb3I+Pj4oY29tcGxldGlvbkNhbGxiYWNrKTsKIAogICAgIFN0cmluZyBv
YmplY3RTdG9yZU5hbWUgPSBvcGVyYXRpb24ub2JqZWN0U3RvcmVNZXRhZGF0YSgpLm5hbWU7CiAg
ICAgc2VydmVyUmVxdWVzdC0+c2V0QWJvcnRIYW5kbGVyKFtvYmplY3RTdG9yZU5hbWUsIGNvbXBs
ZXRpb25DYWxsYmFja10gewpAQCAtMzQxLDcgKzM0MSw3IEBAIHZvaWQgV2ViSURCU2VydmVyQ29u
bmVjdGlvbjo6ZGlkQ3JlYXRlT2JqZWN0U3RvcmUodWludDY0X3QgcmVxdWVzdElELCBib29sIHN1
Y2NlCiAKIHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6Y3JlYXRlSW5kZXgoSURCVHJhbnNh
Y3Rpb25CYWNrZW5kJnRyYW5zYWN0aW9uLCBjb25zdCBDcmVhdGVJbmRleE9wZXJhdGlvbiYgb3Bl
cmF0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4p
PiBjb21wbGV0aW9uQ2FsbGJhY2spCiB7Ci0gICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gc2VydmVy
UmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8UGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPj46
OmNyZWF0ZShjb21wbGV0aW9uQ2FsbGJhY2spOworICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHNl
cnZlclJlcXVlc3QgPSBjcmVhdGVSZWY8QXN5bmNSZXF1ZXN0SW1wbDxQYXNzUmVmUHRyPElEQkRh
dGFiYXNlRXJyb3I+Pj4oY29tcGxldGlvbkNhbGxiYWNrKTsKIAogICAgIHNlcnZlclJlcXVlc3Qt
PnNldEFib3J0SGFuZGxlcihbY29tcGxldGlvbkNhbGxiYWNrXSB7CiAgICAgICAgIGNvbXBsZXRp
b25DYWxsYmFjayhJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246
OlVua25vd25FcnJvciwgIlVua25vd24gZXJyb3Igb2NjdXJlZCBjcmVhdGluZyBpbmRleCIpKTsK
QEAgLTM3MCw3ICszNzAsNyBAQCB2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmRpZENyZWF0
ZUluZGV4KHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCBzdWNjZXNzKQogCiB2b2lkIFdlYklEQlNl
cnZlckNvbm5lY3Rpb246OmRlbGV0ZUluZGV4KElEQlRyYW5zYWN0aW9uQmFja2VuZCZ0cmFuc2Fj
dGlvbiwgY29uc3QgRGVsZXRlSW5kZXhPcGVyYXRpb24mIG9wZXJhdGlvbiwgc3RkOjpmdW5jdGlv
bjx2b2lkIChQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNr
KQogewotICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHNlcnZlclJlcXVlc3QgPSBBc3luY1JlcXVl
c3RJbXBsPFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4+OjpjcmVhdGUoY29tcGxldGlvbkNh
bGxiYWNrKTsKKyAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0gY3JlYXRl
UmVmPEFzeW5jUmVxdWVzdEltcGw8UGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPj4+KGNvbXBs
ZXRpb25DYWxsYmFjayk7CiAKICAgICBzZXJ2ZXJSZXF1ZXN0LT5zZXRBYm9ydEhhbmRsZXIoW2Nv
bXBsZXRpb25DYWxsYmFja10gewogICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2soSURCRGF0YWJh
c2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJVbmtu
b3duIGVycm9yIG9jY3VyZWQgZGVsZXRpbmcgaW5kZXgiKSk7CkBAIC0zOTksNyArMzk5LDcgQEAg
dm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpkaWREZWxldGVJbmRleCh1aW50NjRfdCByZXF1
ZXN0SUQsIGJvb2wgc3VjY2VzcykKIAogdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpnZXQo
SURCVHJhbnNhY3Rpb25CYWNrZW5kJiB0cmFuc2FjdGlvbiwgY29uc3QgR2V0T3BlcmF0aW9uJiBv
cGVyYXRpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgSURCR2V0UmVzdWx0JiwgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykKIHsKLSAgICBSZWZQ
dHI8QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDxJREJHZXRS
ZXN1bHQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4+OjpjcmVhdGUoY29tcGxldGlvbkNh
bGxiYWNrKTsKKyAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0gY3JlYXRl
UmVmPEFzeW5jUmVxdWVzdEltcGw8SURCR2V0UmVzdWx0LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
RXJyb3I+Pj4oY29tcGxldGlvbkNhbGxiYWNrKTsKIAogICAgIHNlcnZlclJlcXVlc3QtPnNldEFi
b3J0SGFuZGxlcihbY29tcGxldGlvbkNhbGxiYWNrXSB7CiAgICAgICAgIGNvbXBsZXRpb25DYWxs
YmFjayhJREJHZXRSZXN1bHQoKSwgSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJVbmtub3duIGVycm9yIG9jY3VyZWQgZ2V0dGluZyBy
ZWNvcmQiKSk7CkBAIC00MTgsNyArNDE4LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9u
OjpnZXQoSURCVHJhbnNhY3Rpb25CYWNrZW5kJiB0cmFuc2FjdGlvbiwgY29uc3QgR2V0T3AKIAog
dm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpwdXQoSURCVHJhbnNhY3Rpb25CYWNrZW5kJiB0
cmFuc2FjdGlvbiwgY29uc3QgUHV0T3BlcmF0aW9uJiBvcGVyYXRpb24sIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KT4g
Y29tcGxldGlvbkNhbGxiYWNrKQogewotICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHNlcnZlclJl
cXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUVycm9yPj46OmNyZWF0ZShjb21wbGV0aW9uQ2FsbGJhY2spOworICAgIFJlZlB0
cjxBc3luY1JlcXVlc3Q+IHNlcnZlclJlcXVlc3QgPSBjcmVhdGVSZWY8QXN5bmNSZXF1ZXN0SW1w
bDxQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4+Pihjb21w
bGV0aW9uQ2FsbGJhY2spOwogCiAgICAgc2VydmVyUmVxdWVzdC0+c2V0QWJvcnRIYW5kbGVyKFtj
b21wbGV0aW9uQ2FsbGJhY2tdIHsKICAgICAgICAgY29tcGxldGlvbkNhbGxiYWNrKG51bGxwdHIs
IElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVy
cm9yLCAiVW5rbm93biBlcnJvciBvY2N1cmVkIHB1dHRpbmcgcmVjb3JkIikpOwpAQCAtNTA5LDcg
KzUwOSw3IEBAIHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6ZGlkSXRlcmF0ZUN1cnNvcih1
aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElEQktleURhCiAKIHZvaWQgV2ViSURCU2VydmVyQ29u
bmVjdGlvbjo6Y291bnQoSURCVHJhbnNhY3Rpb25CYWNrZW5kJiB0cmFuc2FjdGlvbiwgY29uc3Qg
Q291bnRPcGVyYXRpb24mIG9wZXJhdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkIChpbnQ2NF90LCBQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKQogewotICAg
IFJlZlB0cjxBc3luY1JlcXVlc3Q+IHNlcnZlclJlcXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPGlu
dDY0X3QsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4+OjpjcmVhdGUoY29tcGxldGlvbkNh
bGxiYWNrKTsKKyAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0gY3JlYXRl
UmVmPEFzeW5jUmVxdWVzdEltcGw8aW50NjRfdCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9y
Pj4+KGNvbXBsZXRpb25DYWxsYmFjayk7CiAKICAgICBzZXJ2ZXJSZXF1ZXN0LT5zZXRBYm9ydEhh
bmRsZXIoW2NvbXBsZXRpb25DYWxsYmFja10gewogICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2so
MCwgSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3du
RXJyb3IsICJVbmtub3duIGVycm9yIG9jY3VyZWQgZ2V0dGluZyBjb3VudCIpKTsKQEAgLTUzOCw3
ICs1MzgsNyBAQCB2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmRpZENvdW50KHVpbnQ2NF90
IHJlcXVlc3RJRCwgaW50NjRfdCBjb3VudCwgdWludDMyXwogCiB2b2lkIFdlYklEQlNlcnZlckNv
bm5lY3Rpb246OmRlbGV0ZVJhbmdlKElEQlRyYW5zYWN0aW9uQmFja2VuZCYgdHJhbnNhY3Rpb24s
IGNvbnN0IERlbGV0ZVJhbmdlT3BlcmF0aW9uJiBvcGVyYXRpb24sIHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykKIHsK
LSAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1w
bDxQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+Pjo6Y3JlYXRlKGNvbXBsZXRpb25DYWxsYmFj
ayk7CisgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gc2VydmVyUmVxdWVzdCA9IGNyZWF0ZVJlZjxB
c3luY1JlcXVlc3RJbXBsPFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4+Pihjb21wbGV0aW9u
Q2FsbGJhY2spOwogCiAgICAgc2VydmVyUmVxdWVzdC0+c2V0QWJvcnRIYW5kbGVyKFtjb21wbGV0
aW9uQ2FsbGJhY2tdIHsKICAgICAgICAgY29tcGxldGlvbkNhbGxiYWNrKElEQkRhdGFiYXNlRXJy
b3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiVW5rbm93biBl
cnJvciBvY2N1cmVkIGdldHRpbmcgY291bnQiKSk7CkBAIC01NjcsNyArNTY3LDcgQEAgdm9pZCBX
ZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpkaWREZWxldGVSYW5nZSh1aW50NjRfdCByZXF1ZXN0SUQs
IHVpbnQzMl90IGVycm9yQ28KIAogdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpjbGVhck9i
amVjdFN0b3JlKElEQlRyYW5zYWN0aW9uQmFja2VuZCYsIGNvbnN0IENsZWFyT2JqZWN0U3RvcmVP
cGVyYXRpb24mIG9wZXJhdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkIChQYXNzUmVmUHRyPElEQkRh
dGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKQogewotICAgIFJlZlB0cjxBc3luY1Jl
cXVlc3Q+IHNlcnZlclJlcXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VFcnJvcj4+OjpjcmVhdGUoY29tcGxldGlvbkNhbGxiYWNrKTsKKyAgICBSZWZQdHI8QXN5
bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0gY3JlYXRlUmVmPEFzeW5jUmVxdWVzdEltcGw8UGFz
c1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPj4+KGNvbXBsZXRpb25DYWxsYmFjayk7CiAKICAgICBz
ZXJ2ZXJSZXF1ZXN0LT5zZXRBYm9ydEhhbmRsZXIoW2NvbXBsZXRpb25DYWxsYmFja10gewogICAg
ICAgICBjb21wbGV0aW9uQ2FsbGJhY2soSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJVbmtub3duIGVycm9yIG9jY3VyZWQgY2xlYXJp
bmcgb2JqZWN0IHN0b3JlIikpOwpAQCAtNTk2LDcgKzU5Niw3IEBAIHZvaWQgV2ViSURCU2VydmVy
Q29ubmVjdGlvbjo6ZGlkQ2xlYXJPYmplY3RTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wg
c3VjY2VzCiAKIHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6ZGVsZXRlT2JqZWN0U3RvcmUo
SURCVHJhbnNhY3Rpb25CYWNrZW5kJiwgY29uc3QgRGVsZXRlT2JqZWN0U3RvcmVPcGVyYXRpb24m
IG9wZXJhdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkIChQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJy
b3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKQogewotICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHNl
cnZlclJlcXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJv
cj4+OjpjcmVhdGUoY29tcGxldGlvbkNhbGxiYWNrKTsKKyAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0
PiBzZXJ2ZXJSZXF1ZXN0ID0gY3JlYXRlUmVmPEFzeW5jUmVxdWVzdEltcGw8UGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUVycm9yPj4+KGNvbXBsZXRpb25DYWxsYmFjayk7CiAKICAgICBzZXJ2ZXJSZXF1
ZXN0LT5zZXRBYm9ydEhhbmRsZXIoW2NvbXBsZXRpb25DYWxsYmFja10gewogICAgICAgICBjb21w
bGV0aW9uQ2FsbGJhY2soSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpVbmtub3duRXJyb3IsICJVbmtub3duIGVycm9yIG9jY3VyZWQgZGVsZXRpbmcgb2JqZWN0
IHN0b3JlIikpOwpAQCAtNjI1LDcgKzYyNSw3IEBAIHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlv
bjo6ZGlkRGVsZXRlT2JqZWN0U3RvcmUodWludDY0X3QgcmVxdWVzdElELCBib29sIHN1Y2NlCiAK
IHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6Y2hhbmdlRGF0YWJhc2VWZXJzaW9uKElEQlRy
YW5zYWN0aW9uQmFja2VuZCYsIGNvbnN0IElEQkRhdGFiYXNlQmFja2VuZDo6VmVyc2lvbkNoYW5n
ZU9wZXJhdGlvbiYgb3BlcmF0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFBhc3NSZWZQdHI8SURC
RGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spCiB7Ci0gICAgUmVmUHRyPEFzeW5j
UmVxdWVzdD4gc2VydmVyUmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8UGFzc1JlZlB0cjxJREJE
YXRhYmFzZUVycm9yPj46OmNyZWF0ZShjb21wbGV0aW9uQ2FsbGJhY2spOworICAgIFJlZlB0cjxB
c3luY1JlcXVlc3Q+IHNlcnZlclJlcXVlc3QgPSBjcmVhdGVSZWY8QXN5bmNSZXF1ZXN0SW1wbDxQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+Pj4oY29tcGxldGlvbkNhbGxiYWNrKTsKIAogICAg
IHNlcnZlclJlcXVlc3QtPnNldEFib3J0SGFuZGxlcihbY29tcGxldGlvbkNhbGxiYWNrXSB7CiAg
ICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayhJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0
YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIlVua25vd24gZXJyb3Igb2NjdXJlZCBjaGFu
Z2luZyBkYXRhYmFzZSB2ZXJzaW9uIikpOwpAQCAtNjU0LDcgKzY1NCw3IEBAIHZvaWQgV2ViSURC
U2VydmVyQ29ubmVjdGlvbjo6ZGlkQ2hhbmdlRGF0YWJhc2VWZXJzaW9uKHVpbnQ2NF90IHJlcXVl
c3RJRCwgYm9vbCBzCiAKIHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6b3BlbkN1cnNvcihJ
REJUcmFuc2FjdGlvbkJhY2tlbmQmLCBjb25zdCBPcGVuQ3Vyc29yT3BlcmF0aW9uJiBvcGVyYXRp
b24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoaW50NjRfdCwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNz
UmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgUGFzc1JlZlB0cjxJREJE
YXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8QXN5bmNS
ZXF1ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDxpbnQ2NF90LCBQYXNzUmVm
UHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+Pjo6Y3JlYXRlKGNvbXBsZXRpb25DYWxsYmFj
ayk7CisgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gc2VydmVyUmVxdWVzdCA9IGNyZWF0ZVJlZjxB
c3luY1JlcXVlc3RJbXBsPGludDY0X3QsIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJ
REJLZXk+LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VF
cnJvcj4+Pihjb21wbGV0aW9uQ2FsbGJhY2spOwogCiAgICAgc2VydmVyUmVxdWVzdC0+c2V0QWJv
cnRIYW5kbGVyKFtjb21wbGV0aW9uQ2FsbGJhY2tdIHsKICAgICAgICAgY29tcGxldGlvbkNhbGxi
YWNrKDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0
ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiVW5rbm93biBlcnJvciBvY2N1
cmVkIG9wZW5pbmcgZGF0YWJhc2UgY3Vyc29yIikpOwpAQCAtNjcxLDcgKzY3MSw3IEBAIHZvaWQg
V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6b3BlbkN1cnNvcihJREJUcmFuc2FjdGlvbkJhY2tlbmQm
LCBjb25zdCBPcGVuQ3Vyc29yCiAKIHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6Y3Vyc29y
QWR2YW5jZShJREJDdXJzb3JCYWNrZW5kJiwgY29uc3QgQ3Vyc29yQWR2YW5jZU9wZXJhdGlvbiYg
b3BlcmF0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1Jl
ZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spCiB7Ci0gICAgUmVmUHRyPEFzeW5jUmVx
dWVzdD4gc2VydmVyUmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8UGFzc1JlZlB0cjxJREJLZXk+
LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUVycm9yPj46OmNyZWF0ZShjb21wbGV0aW9uQ2FsbGJhY2spOworICAgIFJl
ZlB0cjxBc3luY1JlcXVlc3Q+IHNlcnZlclJlcXVlc3QgPSBjcmVhdGVSZWY8QXN5bmNSZXF1ZXN0
SW1wbDxQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+Pj4oY29tcGxldGlvbkNh
bGxiYWNrKTsKIAogICAgIHNlcnZlclJlcXVlc3QtPnNldEFib3J0SGFuZGxlcihbY29tcGxldGlv
bkNhbGxiYWNrXSB7CiAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayhudWxscHRyLCBudWxscHRy
LCBudWxscHRyLCBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246
OlVua25vd25FcnJvciwgIlVua25vd24gZXJyb3Igb2NjdXJlZCBhZHZhbmNpbmcgZGF0YWJhc2Ug
Y3Vyc29yIikpOwpAQCAtNjg4LDcgKzY4OCw3IEBAIHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlv
bjo6Y3Vyc29yQWR2YW5jZShJREJDdXJzb3JCYWNrZW5kJiwgY29uc3QgQ3Vyc29yQWR2YW5jCiAK
IHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6Y3Vyc29ySXRlcmF0ZShJREJDdXJzb3JCYWNr
ZW5kJiwgY29uc3QgQ3Vyc29ySXRlcmF0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NS
ZWZQdHI8U2hhcmVkQnVmZmVyPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik+IGNvbXBs
ZXRpb25DYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1ZXN0
ID0gQXN5bmNSZXF1ZXN0SW1wbDxQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5
PiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+
Pjo6Y3JlYXRlKGNvbXBsZXRpb25DYWxsYmFjayk7CisgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4g
c2VydmVyUmVxdWVzdCA9IGNyZWF0ZVJlZjxBc3luY1JlcXVlc3RJbXBsPFBhc3NSZWZQdHI8SURC
S2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4+Pihjb21wbGV0aW9uQ2FsbGJhY2spOwogCiAgICAgc2Vy
dmVyUmVxdWVzdC0+c2V0QWJvcnRIYW5kbGVyKFtjb21wbGV0aW9uQ2FsbGJhY2tdIHsKICAgICAg
ICAgY29tcGxldGlvbkNhbGxiYWNrKG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIElEQkRhdGFi
YXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiVW5r
bm93biBlcnJvciBvY2N1cmVkIGl0ZXJhdGluZyBkYXRhYmFzZSBjdXJzb3IiKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254279</attachid>
            <date>2015-06-04 11:20:18 -0700</date>
            <delta_ts>2015-06-06 07:26:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145384-20150604201956.patch</filename>
            <type>text/plain</type>
            <size>33840</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1MTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGFlYmFmYzdiZjA5YzE3NThiZGRlNzNk
YzRjOWU3YmUyZWNhNzliMjIuLmY4ZGRjNGYxZjcyNjVlNzg3ODY0M2NhMzc3MTdjZmVmZmU3YWNm
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDYtMDIgIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIEludHJvZHVjZSBXVEY6OmNyZWF0ZVJlZjxUPihB
cmdzJiYuLi4pCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDUzODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHd0Zi9SZWYuaDoKKyAgICAgICAgKFdURjo6Y3JlYXRlUmVmKToKKwogMjAxNS0wNi0wMiAg
WGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPiBhbmQgWW91ZW5u
IEZhYmxldCA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CiAKICAgICAgICAgW1N0cmVhbXMg
QVBJXSBEZWxlZ2F0ZSBSZWFkYWJsZVN0cmVhbVJlYWRlciByZWZlcmVuY2UgY291bnRpbmcgdG8g
UmVhZGFibGVTdHJlYW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxNjA0ZTM5ODM4NjJmODI5MjkyMjU2OTU5N2U3
NzA2ZTc4MDI5ZWFiLi5lODdlMjg3ZTY2YzNiODYyZWVjMzg2NzliNjk1MzllMzllMWZhNzcyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDYtMDIgIFphbiBEb2JlcnNlayAgPHpk
b2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIEludHJvZHVjZSBXVEY6OmNyZWF0ZVJlZjxU
PihBcmdzJiYuLi4pCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDUzODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGRvbS9DbGllbnRSZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDbGllbnRSZWN0Ojpj
cmVhdGUpOgorCiAyMDE1LTA2LTAyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgQ2FsbGluZyBGcmFtZVZpZXc6OnZpZXdwb3J0Q29udGVudHNDaGFuZ2VkKCkgYWZ0
ZXIgc3R5bGUgcmVjYWxjcyBpcyB0b28gZXhwZW5zaXZlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9SZWYuaCBiL1NvdXJjZS9XVEYvd3RmL1JlZi5oCmluZGV4IDUwYTVlNzYxNzMyZGZjMjcy
ZjFjYmI4ZGM5NWJkZDhmNTQ3YWVhZTguLjU3NDc5NDZiNGRkZGIxMGEyOGI3ODNlYjE1Y2FmMmRk
MzM2NjMyN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1JlZi5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1JlZi5oCkBAIC0xODYsMTAgKzE4NiwxOSBAQCBpbmxpbmUgUmVmPFQ+IGFkb3B0UmVm
KFQmIHJlZmVyZW5jZSkKIAogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBB
cmdzPgoraW5saW5lIFJlZjxUPiBjcmVhdGVSZWYoQXJncyYmLi4uIGFyZ3MpCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKK30KKwor
I2RlZmluZSBXVEZfQ1JFQVRFX1JFRl9GUklFTkRMWSB0ZW1wbGF0ZTx0eXBlbmFtZSBDcmVhdGVS
ZWZUeXBlLCB0eXBlbmFtZS4uLiBDcmVhdGVSZWZBcmdzPiBmcmllbmQgUmVmPENyZWF0ZVJlZlR5
cGU+IFdURjo6Y3JlYXRlUmVmKENyZWF0ZVJlZkFyZ3MmJi4uLikKKwogfSAvLyBuYW1lc3BhY2Ug
V1RGCiAKIHVzaW5nIFdURjo6UmVmOwogdXNpbmcgV1RGOjphZG9wdFJlZjsKK3VzaW5nIFdURjo6
Y3JlYXRlUmVmOwogdXNpbmcgV1RGOjpzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q7CiAKICNlbmRpZiAv
LyBXVEZfUmVmX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGllbnRSZWN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpZW50UmVjdC5oCmluZGV4IGY3NjEzMGVmNzg1YTg1YWRm
MzcxMzQ2ZWZmMjczMTM2NzBjZDc0YjMuLjQxMmUyZGRhZmY0OTc1YWYxOGQ1MDhhOGNkZTE2NTIy
ZTQwYjZhNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGllbnRSZWN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0NsaWVudFJlY3QuaApAQCAtMzcsMTEgKzM3LDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEludFJlY3Q7IAogCiAgICAgY2xhc3MgQ2xpZW50
UmVjdCA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPENsaWVudFJl
Y3Q+IHsKKyAgICAgICAgV1RGX0NSRUFURV9SRUZfRlJJRU5ETFk7CiAgICAgcHVibGljOgotICAg
ICAgICBzdGF0aWMgUmVmPENsaWVudFJlY3Q+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ2xpZW50UmVjdCk7IH0KLSAgICAgICAgc3RhdGljIFJlZjxDbGllbnRSZWN0PiBjcmVhdGUo
Y29uc3QgSW50UmVjdCYgcmVjdCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDbGllbnRSZWN0KHJl
Y3QpKTsgfQotICAgICAgICBzdGF0aWMgUmVmPENsaWVudFJlY3Q+IGNyZWF0ZShjb25zdCBGbG9h
dFJlY3QmIHJlY3QpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2xpZW50UmVjdChyZWN0KSk7IH0K
LQogICAgICAgICBmbG9hdCB0b3AoKSBjb25zdCB7IHJldHVybiBtX3JlY3QueSgpOyB9CiAgICAg
ICAgIGZsb2F0IHJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0Lm1heFgoKTsgfQogICAgICAg
ICBmbG9hdCBib3R0b20oKSBjb25zdCB7IHJldHVybiBtX3JlY3QubWF4WSgpOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpZW50UmVjdExpc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0NsaWVudFJlY3RMaXN0LmNwcAppbmRleCBhMDU3ZGRmM2M2NzY0MTU4ZjMzNzdjYTFj
OGU1ODQ0ZjQxMzdhMGEwLi5hZTM5NjhkNTRjY2FkMzg2NWVlNWViNWQ5ZjE5MjQzN2QxYTVmNzZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpZW50UmVjdExpc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9DbGllbnRSZWN0TGlzdC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAg
Q2xpZW50UmVjdExpc3Q6OkNsaWVudFJlY3RMaXN0KGNvbnN0IFZlY3RvcjxGbG9hdFF1YWQ+JiBx
dWFkcykKIHsKICAgICBtX2xpc3QucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShxdWFkcy5zaXplKCkp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcXVhZHMuc2l6ZSgpOyArK2kpCi0gICAgICAg
IG1fbGlzdC5hcHBlbmQoQ2xpZW50UmVjdDo6Y3JlYXRlKHF1YWRzW2ldLmVuY2xvc2luZ0JvdW5k
aW5nQm94KCkpKTsKKyAgICAgICAgbV9saXN0LmFwcGVuZChjcmVhdGVSZWY8Q2xpZW50UmVjdD4o
cXVhZHNbaV0uZW5jbG9zaW5nQm91bmRpbmdCb3goKSkpOwogfQogCiBDbGllbnRSZWN0TGlzdDo6
fkNsaWVudFJlY3RMaXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCAwNmVhYWZkYjAwYzRk
NjI4NjEyOWUwYjVhODczODg3NTIzMzVlMDM1Li40ZjNhZDMwZWRiYWI5MzMzNjc1NDVhZTViMTdm
NDA3YTViNmYxODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xMDg2LDE0ICsxMDg2LDE0
IEBAIFJlZjxDbGllbnRSZWN0PiBFbGVtZW50OjpnZXRCb3VuZGluZ0NsaWVudFJlY3QoKQogICAg
IH0KIAogICAgIGlmIChxdWFkcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBDbGllbnRSZWN0
OjpjcmVhdGUoKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVJlZjxDbGllbnRSZWN0PigpOwogCiAg
ICAgRmxvYXRSZWN0IHJlc3VsdCA9IHF1YWRzWzBdLmJvdW5kaW5nQm94KCk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDE7IGkgPCBxdWFkcy5zaXplKCk7ICsraSkKICAgICAgICAgcmVzdWx0LnVuaXRl
KHF1YWRzW2ldLmJvdW5kaW5nQm94KCkpOwogCiAgICAgZG9jdW1lbnQoKS5hZGp1c3RGbG9hdFJl
Y3RGb3JTY3JvbGxBbmRBYnNvbHV0ZVpvb21BbmRGcmFtZVNjYWxlKHJlc3VsdCwgcmVuZGVyZXIo
KS0+c3R5bGUoKSk7Ci0gICAgcmV0dXJuIENsaWVudFJlY3Q6OmNyZWF0ZShyZXN1bHQpOworICAg
IHJldHVybiBjcmVhdGVSZWY8Q2xpZW50UmVjdD4ocmVzdWx0KTsKIH0KIAogSW50UmVjdCBFbGVt
ZW50OjpjbGllbnRSZWN0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9S
YW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCmluZGV4IDI2NzNhZGQ5NjMy
YWY1Yjk1YjY5MGQ2MDdlNjNmMTE0MmY1OTk1NDEuLjA5MzM4OWZlZmI5ZmZmNDljNmZhMjllZDY1
N2Q5ZWJkYTA4ZTNiMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcApAQCAtMjE4Nyw3ICsyMTg3LDcgQEAg
UmVmPENsaWVudFJlY3RMaXN0PiBSYW5nZTo6Z2V0Q2xpZW50UmVjdHMoKSBjb25zdAogCiBSZWY8
Q2xpZW50UmVjdD4gUmFuZ2U6OmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIENsaWVudFJlY3Q6OmNyZWF0ZShib3VuZGluZ1JlY3QoKSk7CisgICAgcmV0dXJuIGNy
ZWF0ZVJlZjxDbGllbnRSZWN0Pihib3VuZGluZ1JlY3QoKSk7CiB9CiAKIHZvaWQgUmFuZ2U6Omdl
dEJvcmRlckFuZFRleHRRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggZTU3ZGMxOWMyZjlhZWQ1MjU2MTI3ODJk
M2YwMjg4ZGMxNDA3YjdmNC4uNTEzOGJkODUxMDE2ODI3NWM5ZDdkY2MwZmQ5ZWIxODZlM2JlNmU0
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtODg2LDI0ICs4ODYsMjQg
QEAgUmVmPENsaWVudFJlY3Q+IEludGVybmFsczo6YWJzb2x1dGVDYXJldEJvdW5kcyhFeGNlcHRp
b25Db2RlJiBlYykKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBjb250ZXh0RG9jdW1lbnQoKTsK
ICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+ZnJhbWUoKSkgewogICAgICAgICBlYyA9
IElOVkFMSURfQUNDRVNTX0VSUjsKLSAgICAgICAgcmV0dXJuIENsaWVudFJlY3Q6OmNyZWF0ZSgp
OworICAgICAgICByZXR1cm4gY3JlYXRlUmVmPENsaWVudFJlY3Q+KCk7CiAgICAgfQogCi0gICAg
cmV0dXJuIENsaWVudFJlY3Q6OmNyZWF0ZShkb2N1bWVudC0+ZnJhbWUoKS0+c2VsZWN0aW9uKCku
YWJzb2x1dGVDYXJldEJvdW5kcygpKTsKKyAgICByZXR1cm4gY3JlYXRlUmVmPENsaWVudFJlY3Q+
KGRvY3VtZW50LT5mcmFtZSgpLT5zZWxlY3Rpb24oKS5hYnNvbHV0ZUNhcmV0Qm91bmRzKCkpOwog
fQogCiBSZWY8Q2xpZW50UmVjdD4gSW50ZXJuYWxzOjpib3VuZGluZ0JveChFbGVtZW50KiBlbGVt
ZW50LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIWVsZW1lbnQpIHsKICAgICAgICAg
ZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7Ci0gICAgICAgIHJldHVybiBDbGllbnRSZWN0OjpjcmVh
dGUoKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVJlZjxDbGllbnRSZWN0PigpOwogICAgIH0KIAog
ICAgIGVsZW1lbnQtPmRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hl
ZXRzKCk7CiAgICAgYXV0byByZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRlcmVyKCk7CiAgICAgaWYg
KCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIENsaWVudFJlY3Q6OmNyZWF0ZSgpOwotICAgIHJl
dHVybiBDbGllbnRSZWN0OjpjcmVhdGUocmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0
SWdub3JpbmdUcmFuc2Zvcm1zKCkpOworICAgICAgICByZXR1cm4gY3JlYXRlUmVmPENsaWVudFJl
Y3Q+KCk7CisgICAgcmV0dXJuIGNyZWF0ZVJlZjxDbGllbnRSZWN0PihyZW5kZXJlci0+YWJzb2x1
dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKSk7CiB9CiAKIFJlZjxDbGllbnRS
ZWN0TGlzdD4gSW50ZXJuYWxzOjppbnNwZWN0b3JIaWdobGlnaHRSZWN0cyhFeGNlcHRpb25Db2Rl
JiBlYykKQEAgLTI1MjgsMTAgKzI1MjgsMTAgQEAgUmVmPENsaWVudFJlY3Q+IEludGVybmFsczo6
c2VsZWN0aW9uQm91bmRzKEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIERvY3VtZW50KiBkb2N1bWVu
dCA9IGNvbnRleHREb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5m
cmFtZSgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwotICAgICAgICByZXR1
cm4gQ2xpZW50UmVjdDo6Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBjcmVhdGVSZWY8Q2xpZW50
UmVjdD4oKTsKICAgICB9CiAKLSAgICByZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRlKGRvY3VtZW50
LT5mcmFtZSgpLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb25Cb3VuZHMoKSk7CisgICAgcmV0dXJuIGNy
ZWF0ZVJlZjxDbGllbnRSZWN0Pihkb2N1bWVudC0+ZnJhbWUoKS0+c2VsZWN0aW9uKCkuc2VsZWN0
aW9uQm91bmRzKCkpOwogfQogCiAjaWYgRU5BQkxFKFZJQlJBVElPTikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2Uu
Y3BwIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJE
YXRhYmFzZS5jcHAKaW5kZXggZjc2ODFlNzRhZTEzOWI3ODM5ODFhYzU0NDcwODE5NjUwYTRlMDAx
OC4uYTMwMzkyMTJhZmU2MGE0MWM0NDA5NjVlNTJmZjllYmUwZmY2NTIwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9Vbmlx
dWVJREJEYXRhYmFzZS5jcHAKQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpkZWxldGVEYXRhYmFzZShzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBzdWNjZXNzQ2Fs
bGJhYwogICAgIH0KIAogICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gcHJvdGVjdG9yKHRo
aXMpOwotICAgIG1fcGVuZGluZ1NodXRkb3duVGFzayA9IEFzeW5jUmVxdWVzdEltcGw8VW5pcXVl
SURCRGF0YWJhc2VTaHV0ZG93blR5cGU+OjpjcmVhdGUoW3RoaXMsIHByb3RlY3Rvciwgc3VjY2Vz
c0NhbGxiYWNrXShVbmlxdWVJREJEYXRhYmFzZVNodXRkb3duVHlwZSB0eXBlKSB7CisgICAgbV9w
ZW5kaW5nU2h1dGRvd25UYXNrID0gY3JlYXRlUmVmPEFzeW5jUmVxdWVzdEltcGw8VW5pcXVlSURC
RGF0YWJhc2VTaHV0ZG93blR5cGU+PihbdGhpcywgcHJvdGVjdG9yLCBzdWNjZXNzQ2FsbGJhY2td
KFVuaXF1ZUlEQkRhdGFiYXNlU2h1dGRvd25UeXBlIHR5cGUpIHsKICAgICAgICAgLy8gSWYgdGhl
IHNodXRkb3duIGp1c3QgY29tcGxldGVkIHdhcyBhIERlbGV0ZSBzaHV0ZG93biB0aGVuIHdlIHN1
Y2NlZWRlZC4KICAgICAgICAgLy8gSWYgbm90IHJlcG9ydCBmYWlsdXJlIGluc3RlYWQgb2YgdHJ5
aW5nIGFnYWluLgogICAgICAgICBzdWNjZXNzQ2FsbGJhY2sodHlwZSA9PSBVbmlxdWVJREJEYXRh
YmFzZVNodXRkb3duVHlwZTo6RGVsZXRlU2h1dGRvd24pOwpAQCAtMjM1LDcgKzIzNSw3IEBAIHZv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldE9yRXN0YWJsaXNoSURCRGF0YWJhc2VNZXRhZGF0YShz
dGQ6OmZ1bmN0aW9uPHZvaWQgKGJvCiAgICAgYm9vbCBzaG91bGRPcGVuQmFja2luZ1N0b3JlID0g
bV9wZW5kaW5nTWV0YWRhdGFSZXF1ZXN0cy5pc0VtcHR5KCk7CiAKICAgICAvLyBUaGVuIHJlbWVt
YmVyIHRoaXMgbWV0YWRhdGEgcmVxdWVzdCB0byBiZSBhbnN3ZXJlZCBsYXRlci4KLSAgICBSZWZQ
dHI8QXN5bmNSZXF1ZXN0PiByZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDw+OjpjcmVhdGUoW2Nv
bXBsZXRpb25DYWxsYmFjaywgdGhpc10geworICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHJlcXVl
c3QgPSBjcmVhdGVSZWY8QXN5bmNSZXF1ZXN0SW1wbDw+PihbY29tcGxldGlvbkNhbGxiYWNrLCB0
aGlzXSB7CiAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayghIW1fbWV0YWRhdGEsIG1fbWV0YWRh
dGEgPyAqbV9tZXRhZGF0YSA6IElEQkRhdGFiYXNlTWV0YWRhdGEoKSk7CiAgICAgfSwgW2NvbXBs
ZXRpb25DYWxsYmFja10gewogICAgICAgICAvLyBUaGUgYm9vbGVhbiBmbGFnIHRvIHRoZSBjb21w
bGV0aW9uIGNhbGxiYWNrIHJlcHJlc2VudHMgd2hldGhlciB0aGUKQEAgLTMyNCw3ICszMjQsNyBA
QCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwb3N0VHJhbnNhY3Rpb25PcGVyYXRpb24oY29uc3Qg
SURCSWRlbnRpZmllciYgdHJhbnNhY3RpbwogCiAgICAgcG9zdERhdGFiYXNlVGFzayhXVEY6Om1v
dmUodGFzaykpOwogCi0gICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gcmVxdWVzdCA9IEFzeW5jUmVx
dWVzdEltcGw8Ym9vbD46OmNyZWF0ZShbc3VjY2Vzc0NhbGxiYWNrXShib29sIHN1Y2Nlc3MpIHsK
KyAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiByZXF1ZXN0ID0gY3JlYXRlUmVmPEFzeW5jUmVxdWVz
dEltcGw8Ym9vbD4+KFtzdWNjZXNzQ2FsbGJhY2tdKGJvb2wgc3VjY2VzcykgewogICAgICAgICBz
dWNjZXNzQ2FsbGJhY2soc3VjY2Vzcyk7CiAgICAgfSwgW3N1Y2Nlc3NDYWxsYmFja10gewogICAg
ICAgICBzdWNjZXNzQ2FsbGJhY2soZmFsc2UpOwpAQCAtMzU4LDcgKzM1OCw3IEBAIHZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OmNoYW5nZURhdGFiYXNlVmVyc2lvbihjb25zdCBJREJJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkCiAgICAgdWludDY0X3Qgb2xkVmVyc2lvbiA9IG1fbWV0YWRhdGEtPnZl
cnNpb247CiAgICAgbV9tZXRhZGF0YS0+dmVyc2lvbiA9IG5ld1ZlcnNpb247CiAKLSAgICBSZWZQ
dHI8QXN5bmNSZXF1ZXN0PiByZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDxib29sPjo6Y3JlYXRl
KFt0aGlzLCBvbGRWZXJzaW9uLCBzdWNjZXNzQ2FsbGJhY2tdKGJvb2wgc3VjY2VzcykgeworICAg
IFJlZlB0cjxBc3luY1JlcXVlc3Q+IHJlcXVlc3QgPSBjcmVhdGVSZWY8QXN5bmNSZXF1ZXN0SW1w
bDxib29sPj4oW3RoaXMsIG9sZFZlcnNpb24sIHN1Y2Nlc3NDYWxsYmFja10oYm9vbCBzdWNjZXNz
KSB7CiAgICAgICAgIGlmICghc3VjY2VzcykKICAgICAgICAgICAgIG1fbWV0YWRhdGEtPnZlcnNp
b24gPSBvbGRWZXJzaW9uOwogICAgICAgICBzdWNjZXNzQ2FsbGJhY2soc3VjY2Vzcyk7CkBAIC00
MjEsNyArNDIxLDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUo
Y29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGkKICAgICBtX21ldGFkYXRhLT5v
YmplY3RTdG9yZXMuc2V0KG1ldGFkYXRhLmlkLCBtZXRhZGF0YSk7CiAgICAgaW50NjRfdCBhZGRl
ZE9iamVjdFN0b3JlSUQgPSBtZXRhZGF0YS5pZDsKIAotICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+
IHJlcXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPGJvb2w+OjpjcmVhdGUoW3RoaXMsIGFkZGVkT2Jq
ZWN0U3RvcmVJRCwgc3VjY2Vzc0NhbGxiYWNrXShib29sIHN1Y2Nlc3MpIHsKKyAgICBSZWZQdHI8
QXN5bmNSZXF1ZXN0PiByZXF1ZXN0ID0gY3JlYXRlUmVmPEFzeW5jUmVxdWVzdEltcGw8Ym9vbD4+
KFt0aGlzLCBhZGRlZE9iamVjdFN0b3JlSUQsIHN1Y2Nlc3NDYWxsYmFja10oYm9vbCBzdWNjZXNz
KSB7CiAgICAgICAgIGlmICghc3VjY2VzcykKICAgICAgICAgICAgIG1fbWV0YWRhdGEtPm9iamVj
dFN0b3Jlcy5yZW1vdmUoYWRkZWRPYmplY3RTdG9yZUlEKTsKICAgICAgICAgc3VjY2Vzc0NhbGxi
YWNrKHN1Y2Nlc3MpOwpAQCAtNDQ4LDcgKzQ0OCw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6
OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRp
CiAgICAgQVNTRVJUKG1fbWV0YWRhdGEtPm9iamVjdFN0b3Jlcy5jb250YWlucyhvYmplY3RTdG9y
ZUlEKSk7CiAgICAgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBtZXRhZGF0YSA9IG1fbWV0YWRhdGEt
Pm9iamVjdFN0b3Jlcy50YWtlKG9iamVjdFN0b3JlSUQpOwogCi0gICAgUmVmUHRyPEFzeW5jUmVx
dWVzdD4gcmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8Ym9vbD46OmNyZWF0ZShbdGhpcywgbWV0
YWRhdGEsIHN1Y2Nlc3NDYWxsYmFja10oYm9vbCBzdWNjZXNzKSB7CisgICAgUmVmUHRyPEFzeW5j
UmVxdWVzdD4gcmVxdWVzdCA9IGNyZWF0ZVJlZjxBc3luY1JlcXVlc3RJbXBsPGJvb2w+PihbdGhp
cywgbWV0YWRhdGEsIHN1Y2Nlc3NDYWxsYmFja10oYm9vbCBzdWNjZXNzKSB7CiAgICAgICAgIGlm
ICghc3VjY2VzcykKICAgICAgICAgICAgIG1fbWV0YWRhdGEtPm9iamVjdFN0b3Jlcy5zZXQobWV0
YWRhdGEuaWQsIG1ldGFkYXRhKTsKICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nlc3MpOwpA
QCAtNDc0LDcgKzQ3NCw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNsZWFyT2JqZWN0U3Rv
cmUoY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmCiAKICAgICBBU1NFUlQo
bV9tZXRhZGF0YS0+b2JqZWN0U3RvcmVzLmNvbnRhaW5zKG9iamVjdFN0b3JlSUQpKTsKIAotICAg
IFJlZlB0cjxBc3luY1JlcXVlc3Q+IHJlcXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPGJvb2w+Ojpj
cmVhdGUoW3RoaXMsIHN1Y2Nlc3NDYWxsYmFja10oYm9vbCBzdWNjZXNzKSB7CisgICAgUmVmUHRy
PEFzeW5jUmVxdWVzdD4gcmVxdWVzdCA9IGNyZWF0ZVJlZjxBc3luY1JlcXVlc3RJbXBsPGJvb2w+
PihbdGhpcywgc3VjY2Vzc0NhbGxiYWNrXShib29sIHN1Y2Nlc3MpIHsKICAgICAgICAgc3VjY2Vz
c0NhbGxiYWNrKHN1Y2Nlc3MpOwogICAgIH0sIFt0aGlzLCBzdWNjZXNzQ2FsbGJhY2tdIHsKICAg
ICAgICAgc3VjY2Vzc0NhbGxiYWNrKGZhbHNlKTsKQEAgLTUwMCw3ICs1MDAsNyBAQCB2b2lkIFVu
aXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleChjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2Fj
dGlvbklkZW50aWZpZXIsCiAgICAgbV9tZXRhZGF0YS0+b2JqZWN0U3RvcmVzLmdldChvYmplY3RT
dG9yZUlEKS5pbmRleGVzLnNldChtZXRhZGF0YS5pZCwgbWV0YWRhdGEpOwogICAgIGludDY0X3Qg
YWRkZWRJbmRleElEID0gbWV0YWRhdGEuaWQ7CiAKLSAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBy
ZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDxib29sPjo6Y3JlYXRlKFt0aGlzLCBvYmplY3RTdG9y
ZUlELCBhZGRlZEluZGV4SUQsIHN1Y2Nlc3NDYWxsYmFja10oYm9vbCBzdWNjZXNzKSB7CisgICAg
UmVmUHRyPEFzeW5jUmVxdWVzdD4gcmVxdWVzdCA9IGNyZWF0ZVJlZjxBc3luY1JlcXVlc3RJbXBs
PGJvb2w+PihbdGhpcywgb2JqZWN0U3RvcmVJRCwgYWRkZWRJbmRleElELCBzdWNjZXNzQ2FsbGJh
Y2tdKGJvb2wgc3VjY2VzcykgewogICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsKICAgICAgICAgICAg
IGF1dG8gb2JqZWN0U3RvcmVGaW5kID0gbV9tZXRhZGF0YS0+b2JqZWN0U3RvcmVzLmZpbmQob2Jq
ZWN0U3RvcmVJRCk7CiAgICAgICAgICAgICBpZiAob2JqZWN0U3RvcmVGaW5kICE9IG1fbWV0YWRh
dGEtPm9iamVjdFN0b3Jlcy5lbmQoKSkKQEAgLTUzNCw3ICs1MzQsNyBAQCB2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpkZWxldGVJbmRleChjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIsCiAKICAgICBJREJJbmRleE1ldGFkYXRhIG1ldGFkYXRhID0gbV9tZXRhZGF0YS0+
b2JqZWN0U3RvcmVzLmdldChvYmplY3RTdG9yZUlEKS5pbmRleGVzLnRha2UoaW5kZXhJRCk7CiAK
LSAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiByZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDxib29s
Pjo6Y3JlYXRlKFt0aGlzLCBvYmplY3RTdG9yZUlELCBtZXRhZGF0YSwgc3VjY2Vzc0NhbGxiYWNr
XShib29sIHN1Y2Nlc3MpIHsKKyAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiByZXF1ZXN0ID0gY3Jl
YXRlUmVmPEFzeW5jUmVxdWVzdEltcGw8Ym9vbD4+KFt0aGlzLCBvYmplY3RTdG9yZUlELCBtZXRh
ZGF0YSwgc3VjY2Vzc0NhbGxiYWNrXShib29sIHN1Y2Nlc3MpIHsKICAgICAgICAgaWYgKCFzdWNj
ZXNzKSB7CiAgICAgICAgICAgICBhdXRvIG9iamVjdFN0b3JlRmluZCA9IG1fbWV0YWRhdGEtPm9i
amVjdFN0b3Jlcy5maW5kKG9iamVjdFN0b3JlSUQpOwogICAgICAgICAgICAgaWYgKG9iamVjdFN0
b3JlRmluZCAhPSBtX21ldGFkYXRhLT5vYmplY3RTdG9yZXMuZW5kKCkpCkBAIC01NjUsNyArNTY1
LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0UmVjb3JkKGNvbnN0IElEQklkZW50aWZp
ZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW4KIAogICAgIEFTU0VSVChtX21ldGFkYXRhLT5v
YmplY3RTdG9yZXMuY29udGFpbnMob2JqZWN0U3RvcmVJRCkpOwogCi0gICAgUmVmUHRyPEFzeW5j
UmVxdWVzdD4gcmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8SURCS2V5RGF0YSwgdWludDMyX3Qs
IFN0cmluZz46OmNyZWF0ZShbdGhpcywgY2FsbGJhY2tdKGNvbnN0IElEQktleURhdGEmIGtleURh
dGEsIHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsKKyAg
ICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiByZXF1ZXN0ID0gY3JlYXRlUmVmPEFzeW5jUmVxdWVzdElt
cGw8SURCS2V5RGF0YSwgdWludDMyX3QsIFN0cmluZz4+KFt0aGlzLCBjYWxsYmFja10oY29uc3Qg
SURCS2V5RGF0YSYga2V5RGF0YSwgdWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVy
cm9yTWVzc2FnZSkgewogICAgICAgICBjYWxsYmFjayhrZXlEYXRhLCBlcnJvckNvZGUsIGVycm9y
TWVzc2FnZSk7CiAgICAgfSwgW3RoaXMsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNrKElE
QktleURhdGEoKSwgSU5WQUxJRF9TVEFURV9FUlIsICJVbmFibGUgdG8gcHV0IHJlY29yZCBpbnRv
IGRhdGFiYXNlIik7CkBAIC01ODgsNyArNTg4LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
Z2V0UmVjb3JkKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW4K
IAogICAgIEFTU0VSVChtX21ldGFkYXRhLT5vYmplY3RTdG9yZXMuY29udGFpbnMob2JqZWN0U3Rv
cmVJRCkpOwogCi0gICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gcmVxdWVzdCA9IEFzeW5jUmVxdWVz
dEltcGw8SURCR2V0UmVzdWx0LCB1aW50MzJfdCwgU3RyaW5nPjo6Y3JlYXRlKFt0aGlzLCBjYWxs
YmFja10oY29uc3QgSURCR2V0UmVzdWx0JiByZXN1bHQsIHVpbnQzMl90IGVycm9yQ29kZSwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsKKyAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiByZXF1
ZXN0ID0gY3JlYXRlUmVmPEFzeW5jUmVxdWVzdEltcGw8SURCR2V0UmVzdWx0LCB1aW50MzJfdCwg
U3RyaW5nPj4oW3RoaXMsIGNhbGxiYWNrXShjb25zdCBJREJHZXRSZXN1bHQmIHJlc3VsdCwgdWlu
dDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgewogICAgICAgICBj
YWxsYmFjayhyZXN1bHQsIGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKTsKICAgICB9LCBbdGhpcywg
Y2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soSURCR2V0UmVzdWx0KCksIElOVkFMSURfU1RB
VEVfRVJSLCAiVW5hYmxlIHRvIGdldCByZWNvcmQgZnJvbSBkYXRhYmFzZSIpOwpAQCAtNjExLDcg
KzYxMSw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5DdXJzb3IoY29uc3QgSURCSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpCiAKICAgICBBU1NFUlQobV9tZXRhZGF0
YS0+b2JqZWN0U3RvcmVzLmNvbnRhaW5zKG9iamVjdFN0b3JlSUQpKTsKIAotICAgIFJlZlB0cjxB
c3luY1JlcXVlc3Q+IHJlcXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPGludDY0X3QsIElEQktleURh
dGEsIElEQktleURhdGEsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgdWludDMyX3QsIFN0cmlu
Zz46OmNyZWF0ZShbdGhpcywgY2FsbGJhY2tdKGludDY0X3QgY3Vyc29ySUQsIGNvbnN0IElEQktl
eURhdGEmIGtleSwgY29uc3QgSURCS2V5RGF0YSYgcHJpbWFyeUtleSwgUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IHZhbHVlLCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlKSB7CisgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gcmVxdWVzdCA9IGNyZWF0ZVJlZjxB
c3luY1JlcXVlc3RJbXBsPGludDY0X3QsIElEQktleURhdGEsIElEQktleURhdGEsIFBhc3NSZWZQ
dHI8U2hhcmVkQnVmZmVyPiwgdWludDMyX3QsIFN0cmluZz4+KFt0aGlzLCBjYWxsYmFja10oaW50
NjRfdCBjdXJzb3JJRCwgY29uc3QgSURCS2V5RGF0YSYga2V5LCBjb25zdCBJREJLZXlEYXRhJiBw
cmltYXJ5S2V5LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUsIHVpbnQzMl90IGVycm9y
Q29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsKICAgICAgICAgY2FsbGJhY2soY3Vy
c29ySUQsIGtleSwgcHJpbWFyeUtleSwgdmFsdWUsIGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKTsK
ICAgICB9LCBbdGhpcywgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2soMCwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0ciwgSU5WQUxJRF9TVEFURV9FUlIsICJVbmFibGUgdG8gZ2V0IHJlY29y
ZCBmcm9tIGRhdGFiYXNlIik7CkBAIC02MzIsNyArNjMyLDcgQEAgdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6Y3Vyc29yQWR2YW5jZShjb25zdCBJREJJZGVudGlmaWVyJiBjdXJzb3JJZGVudGlmaWVy
LCB1aW4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+
IHJlcXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPElEQktleURhdGEsIElEQktleURhdGEsIFBhc3NS
ZWZQdHI8U2hhcmVkQnVmZmVyPiwgdWludDMyX3QsIFN0cmluZz46OmNyZWF0ZShbdGhpcywgY2Fs
bGJhY2tdKGNvbnN0IElEQktleURhdGEmIGtleSwgY29uc3QgSURCS2V5RGF0YSYgcHJpbWFyeUtl
eSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlLCB1aW50MzJfdCBlcnJvckNvZGUsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7CisgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gcmVx
dWVzdCA9IGNyZWF0ZVJlZjxBc3luY1JlcXVlc3RJbXBsPElEQktleURhdGEsIElEQktleURhdGEs
IFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgdWludDMyX3QsIFN0cmluZz4+KFt0aGlzLCBjYWxs
YmFja10oY29uc3QgSURCS2V5RGF0YSYga2V5LCBjb25zdCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5
LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUsIHVpbnQzMl90IGVycm9yQ29kZSwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsKICAgICAgICAgY2FsbGJhY2soa2V5LCBwcmltYXJ5
S2V5LCB2YWx1ZSwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UpOwogICAgIH0sIFt0aGlzLCBjYWxs
YmFja10gewogICAgICAgICBjYWxsYmFjayhudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBJTlZB
TElEX1NUQVRFX0VSUiwgIlVuYWJsZSB0byBhZHZhbmNlIGN1cnNvciBpbiBkYXRhYmFzZSIpOwpA
QCAtNjUzLDcgKzY1Myw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmN1cnNvckl0ZXJhdGUo
Y29uc3QgSURCSWRlbnRpZmllciYgY3Vyc29ySWRlbnRpZmllciwgY29uCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiByZXF1ZXN0ID0gQXN5bmNSZXF1
ZXN0SW1wbDxJREJLZXlEYXRhLCBJREJLZXlEYXRhLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4s
IHVpbnQzMl90LCBTdHJpbmc+OjpjcmVhdGUoW3RoaXMsIGNhbGxiYWNrXShjb25zdCBJREJLZXlE
YXRhJiBrZXksIGNvbnN0IElEQktleURhdGEmIHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2hhcmVk
QnVmZmVyPiB2YWx1ZSwgdWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVz
c2FnZSkgeworICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHJlcXVlc3QgPSBjcmVhdGVSZWY8QXN5
bmNSZXF1ZXN0SW1wbDxJREJLZXlEYXRhLCBJREJLZXlEYXRhLCBQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4sIHVpbnQzMl90LCBTdHJpbmc+PihbdGhpcywgY2FsbGJhY2tdKGNvbnN0IElEQktleURh
dGEmIGtleSwgY29uc3QgSURCS2V5RGF0YSYgcHJpbWFyeUtleSwgUGFzc1JlZlB0cjxTaGFyZWRC
dWZmZXI+IHZhbHVlLCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlKSB7CiAgICAgICAgIGNhbGxiYWNrKGtleSwgcHJpbWFyeUtleSwgdmFsdWUsIGVycm9yQ29k
ZSwgZXJyb3JNZXNzYWdlKTsKICAgICB9LCBbdGhpcywgY2FsbGJhY2tdIHsKICAgICAgICAgY2Fs
bGJhY2sobnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgSU5WQUxJRF9TVEFURV9FUlIsICJVbmFi
bGUgdG8gaXRlcmF0ZSBjdXJzb3IgaW4gZGF0YWJhc2UiKTsKQEAgLTY3NCw3ICs2NzQsNyBAQCB2
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjb3VudChjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2Fj
dGlvbklkZW50aWZpZXIsIGludDY0XwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVm
UHRyPEFzeW5jUmVxdWVzdD4gcmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8aW50NjRfdCwgdWlu
dDMyX3QsIFN0cmluZz46OmNyZWF0ZShbdGhpcywgY2FsbGJhY2tdKGludDY0X3QgY291bnQsIHVp
bnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsKKyAgICBSZWZQ
dHI8QXN5bmNSZXF1ZXN0PiByZXF1ZXN0ID0gY3JlYXRlUmVmPEFzeW5jUmVxdWVzdEltcGw8aW50
NjRfdCwgdWludDMyX3QsIFN0cmluZz4+KFt0aGlzLCBjYWxsYmFja10oaW50NjRfdCBjb3VudCwg
dWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgewogICAgICAg
ICBjYWxsYmFjayhjb3VudCwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UpOwogICAgIH0sIFt0aGlz
LCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFjaygwLCBJTlZBTElEX1NUQVRFX0VSUiwgIlVu
YWJsZSB0byBnZXQgY291bnQgZnJvbSBkYXRhYmFzZSIpOwpAQCAtNjk1LDcgKzY5NSw3IEBAIHZv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZVJhbmdlKGNvbnN0IElEQklkZW50aWZpZXImIHRy
YW5zYWN0aW9uSWRlbnRpZmllciwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0
cjxBc3luY1JlcXVlc3Q+IHJlcXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPHVpbnQzMl90LCBTdHJp
bmc+OjpjcmVhdGUoW2NhbGxiYWNrXSh1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYg
ZXJyb3JNZXNzYWdlKSB7CisgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gcmVxdWVzdCA9IGNyZWF0
ZVJlZjxBc3luY1JlcXVlc3RJbXBsPHVpbnQzMl90LCBTdHJpbmc+PihbY2FsbGJhY2tdKHVpbnQz
Ml90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsKICAgICAgICAgY2Fs
bGJhY2soZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UpOwogICAgIH0sIFtjYWxsYmFja10gewogICAg
ICAgICBjYWxsYmFjayhJTlZBTElEX1NUQVRFX0VSUiwgIlVuYWJsZSB0byBkZWxldGVSYW5nZSBm
cm9tIGRhdGFiYXNlIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXN5bmNS
ZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXN5bmNSZXF1ZXN0LmgKaW5kZXggYmZk
ZTE5ODQ2MTQ3MTQ4ZmZmODlhMTQ4ZDg3MTc0NmM2YTY2ZGUzMS4uMGVmYzVjOWEwZTg5YzE3Nzc5
YzJiZmRiMGQ3NGY3ZDZmZjA3NGFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FzeW5jUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Bc3luY1JlcXVlc3Qu
aApAQCAtNTcsMTkgKzU3LDEwIEBAIHByaXZhdGU6CiAKIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBB
cmd1bWVudHM+CiBjbGFzcyBBc3luY1JlcXVlc3RJbXBsIGZpbmFsIDogcHVibGljIEFzeW5jUmVx
dWVzdCB7CisgICAgV1RGX0NSRUFURV9SRUZfRlJJRU5ETFk7CiBwdWJsaWM6CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gdXNpbmcgQXJndW1lbnRUeXBlID0gdHlwZW5hbWUgc3RkOjpjb25kaXRp
b25hbDxzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZSwgVCwgY29uc3QgVCY+Ojp0eXBlOwogCi0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8QXN5bmNSZXF1ZXN0PiBjcmVhdGUoc3RkOjpmdW5jdGlvbjx2
b2lkIChBcmd1bWVudFR5cGU8QXJndW1lbnRzPi4uLik+IGNvbXBsZXRpb25IYW5kbGVyKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBc3luY1JlcXVlc3RJbXBsPEFyZ3VtZW50
cy4uLj4oV1RGOjptb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbnVsbHB0cikpOwotICAgIH0KLQot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFzeW5jUmVxdWVzdD4gY3JlYXRlKHN0ZDo6ZnVuY3Rpb248
dm9pZCAoQXJndW1lbnRUeXBlPEFyZ3VtZW50cz4uLi4pPiBjb21wbGV0aW9uSGFuZGxlciwgc3Rk
OjpmdW5jdGlvbjx2b2lkICgpPiBhYm9ydEhhbmRsZXIpCi0gICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEFzeW5jUmVxdWVzdEltcGw8QXJndW1lbnRzLi4uPihXVEY6Om1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBXVEY6Om1vdmUoYWJvcnRIYW5kbGVyKSkpOwotICAgIH0KLQogICAg
IHZpcnR1YWwgfkFzeW5jUmVxdWVzdEltcGwoKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFtX2Nv
bXBsZXRpb25IYW5kbGVyKTsKQEAgLTgzLDcgKzc0LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJp
dmF0ZToKLSAgICBBc3luY1JlcXVlc3RJbXBsKHN0ZDo6ZnVuY3Rpb248dm9pZCAoQXJndW1lbnRU
eXBlPEFyZ3VtZW50cz4uLi4pPiBjb21wbGV0aW9uSGFuZGxlciwgc3RkOjpmdW5jdGlvbjx2b2lk
ICgpPiBhYm9ydEhhbmRsZXIpCisgICAgQXN5bmNSZXF1ZXN0SW1wbChzdGQ6OmZ1bmN0aW9uPHZv
aWQgKEFyZ3VtZW50VHlwZTxBcmd1bWVudHM+Li4uKT4gY29tcGxldGlvbkhhbmRsZXIsIHN0ZDo6
ZnVuY3Rpb248dm9pZCAoKT4gYWJvcnRIYW5kbGVyID0gbnVsbHB0cikKICAgICAgICAgOiBBc3lu
Y1JlcXVlc3QoV1RGOjptb3ZlKGFib3J0SGFuZGxlcikpCiAgICAgICAgICwgbV9jb21wbGV0aW9u
SGFuZGxlcihXVEY6Om1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJTZXJ2
ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0lu
ZGV4ZWREQi9XZWJJREJTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCA2YThkOTY3Mzk3M2E2NTQ2
YTk0NjBkZDM5MGUyMzAzODM0OTJiZTI5Li5lZmZjZmFhM2U5MDIzNDhhYTQxMDRjNWE1NWY3YTRi
NWE2YzY1N2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNl
cy9JbmRleGVkREIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlNlcnZlckNvbm5lY3Rpb24u
Y3BwCkBAIC04NSw3ICs4NSw3IEBAIGJvb2wgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6aXNDbG9z
ZWQoKQogCiB2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmRlbGV0ZURhdGFiYXNlKGNvbnN0
IFN0cmluZyYgbmFtZSwgQm9vbENhbGxiYWNrRnVuY3Rpb24gc3VjY2Vzc0NhbGxiYWNrKQogewot
ICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHNlcnZlclJlcXVlc3QgPSBBc3luY1JlcXVlc3RJbXBs
PGJvb2w+OjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrKTsKKyAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0
PiBzZXJ2ZXJSZXF1ZXN0ID0gY3JlYXRlUmVmPEFzeW5jUmVxdWVzdEltcGw8Ym9vbD4+KHN1Y2Nl
c3NDYWxsYmFjayk7CiAKICAgICBzZXJ2ZXJSZXF1ZXN0LT5zZXRBYm9ydEhhbmRsZXIoW3N1Y2Nl
c3NDYWxsYmFja10gewogICAgICAgICBzdWNjZXNzQ2FsbGJhY2soZmFsc2UpOwpAQCAtMTE0LDcg
KzExNCw3IEBAIHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6ZGlkRGVsZXRlRGF0YWJhc2Uo
dWludDY0X3QgcmVxdWVzdElELCBib29sIHN1Y2Nlc3MpCiAKIHZvaWQgV2ViSURCU2VydmVyQ29u
bmVjdGlvbjo6Z2V0T3JFc3RhYmxpc2hJREJEYXRhYmFzZU1ldGFkYXRhKEdldElEQkRhdGFiYXNl
TWV0YWRhdGFGdW5jdGlvbiBjb21wbGV0aW9uQ2FsbGJhY2spCiB7Ci0gICAgUmVmUHRyPEFzeW5j
UmVxdWVzdD4gc2VydmVyUmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8SURCRGF0YWJhc2VNZXRh
ZGF0YSwgYm9vbD46OmNyZWF0ZShjb21wbGV0aW9uQ2FsbGJhY2spOworICAgIFJlZlB0cjxBc3lu
Y1JlcXVlc3Q+IHNlcnZlclJlcXVlc3QgPSBjcmVhdGVSZWY8QXN5bmNSZXF1ZXN0SW1wbDxJREJE
YXRhYmFzZU1ldGFkYXRhLCBib29sPj4oY29tcGxldGlvbkNhbGxiYWNrKTsKIAogICAgIHNlcnZl
clJlcXVlc3QtPnNldEFib3J0SGFuZGxlcihbY29tcGxldGlvbkNhbGxiYWNrXSB7CiAgICAgICAg
IElEQkRhdGFiYXNlTWV0YWRhdGEgbWV0YWRhdGE7CkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBX
ZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpjbG9zZSgpCiAKIHZvaWQgV2ViSURCU2VydmVyQ29ubmVj
dGlvbjo6b3BlblRyYW5zYWN0aW9uKGludDY0X3QgdHJhbnNhY3Rpb25JRCwgY29uc3QgSGFzaFNl
dDxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJRHMsIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlIG1v
ZGUsIEJvb2xDYWxsYmFja0Z1bmN0aW9uIHN1Y2Nlc3NDYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8
QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDxib29sPjo6Y3Jl
YXRlKHN1Y2Nlc3NDYWxsYmFjayk7CisgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gc2VydmVyUmVx
dWVzdCA9IGNyZWF0ZVJlZjxBc3luY1JlcXVlc3RJbXBsPGJvb2w+PihzdWNjZXNzQ2FsbGJhY2sp
OwogCiAgICAgc2VydmVyUmVxdWVzdC0+c2V0QWJvcnRIYW5kbGVyKFtzdWNjZXNzQ2FsbGJhY2td
IHsKICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKGZhbHNlKTsKQEAgLTE4OSw3ICsxODksNyBAQCB2
b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmRpZE9wZW5UcmFuc2FjdGlvbih1aW50NjRfdCBy
ZXF1ZXN0SUQsIGJvb2wgc3VjY2VzcwogCiB2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmJl
Z2luVHJhbnNhY3Rpb24oaW50NjRfdCB0cmFuc2FjdGlvbklELCBzdGQ6OmZ1bmN0aW9uPHZvaWQg
KCk+IGNvbXBsZXRpb25DYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBzZXJ2
ZXJSZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDw+OjpjcmVhdGUoY29tcGxldGlvbkNhbGxiYWNr
LCBjb21wbGV0aW9uQ2FsbGJhY2spOworICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHNlcnZlclJl
cXVlc3QgPSBjcmVhdGVSZWY8QXN5bmNSZXF1ZXN0SW1wbDw+Pihjb21wbGV0aW9uQ2FsbGJhY2ss
IGNvbXBsZXRpb25DYWxsYmFjayk7CiAKICAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSBzZXJ2ZXJS
ZXF1ZXN0LT5yZXF1ZXN0SUQoKTsKICAgICBBU1NFUlQoIW1fc2VydmVyUmVxdWVzdHMuY29udGFp
bnMocmVxdWVzdElEKSk7CkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXJDb25u
ZWN0aW9uOjpkaWRCZWdpblRyYW5zYWN0aW9uKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCkKIAog
dm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpjb21taXRUcmFuc2FjdGlvbihpbnQ2NF90IHRy
YW5zYWN0aW9uSUQsIEJvb2xDYWxsYmFja0Z1bmN0aW9uIHN1Y2Nlc3NDYWxsYmFjaykKIHsKLSAg
ICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDxi
b29sPjo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjayk7CisgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4g
c2VydmVyUmVxdWVzdCA9IGNyZWF0ZVJlZjxBc3luY1JlcXVlc3RJbXBsPGJvb2w+PihzdWNjZXNz
Q2FsbGJhY2spOwogCiAgICAgc2VydmVyUmVxdWVzdC0+c2V0QWJvcnRIYW5kbGVyKFtzdWNjZXNz
Q2FsbGJhY2tdIHsKICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKGZhbHNlKTsKQEAgLTI0Myw3ICsy
NDMsNyBAQCB2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmRpZENvbW1pdFRyYW5zYWN0aW9u
KHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCBzdWNjZQogCiB2b2lkIFdlYklEQlNlcnZlckNvbm5l
Y3Rpb246OnJlc2V0VHJhbnNhY3Rpb24oaW50NjRfdCB0cmFuc2FjdGlvbklELCBzdGQ6OmZ1bmN0
aW9uPHZvaWQgKCk+IGNvbXBsZXRpb25DYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8QXN5bmNSZXF1
ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDw+OjpjcmVhdGUoY29tcGxldGlv
bkNhbGxiYWNrLCBjb21wbGV0aW9uQ2FsbGJhY2spOworICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+
IHNlcnZlclJlcXVlc3QgPSBjcmVhdGVSZWY8QXN5bmNSZXF1ZXN0SW1wbDw+Pihjb21wbGV0aW9u
Q2FsbGJhY2ssIGNvbXBsZXRpb25DYWxsYmFjayk7CiAKICAgICB1aW50NjRfdCByZXF1ZXN0SUQg
PSBzZXJ2ZXJSZXF1ZXN0LT5yZXF1ZXN0SUQoKTsKICAgICBBU1NFUlQoIW1fc2VydmVyUmVxdWVz
dHMuY29udGFpbnMocmVxdWVzdElEKSk7CkBAIC0yNzUsNyArMjc1LDcgQEAgYm9vbCBXZWJJREJT
ZXJ2ZXJDb25uZWN0aW9uOjpyZXNldFRyYW5zYWN0aW9uU3luYyhpbnQ2NF90IHRyYW5zYWN0aW9u
SUQpCiAKIHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6cm9sbGJhY2tUcmFuc2FjdGlvbihp
bnQ2NF90IHRyYW5zYWN0aW9uSUQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxldGlvbkNh
bGxiYWNrKQogewotICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHNlcnZlclJlcXVlc3QgPSBBc3lu
Y1JlcXVlc3RJbXBsPD46OmNyZWF0ZShjb21wbGV0aW9uQ2FsbGJhY2ssIGNvbXBsZXRpb25DYWxs
YmFjayk7CisgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gc2VydmVyUmVxdWVzdCA9IGNyZWF0ZVJl
ZjxBc3luY1JlcXVlc3RJbXBsPD4+KGNvbXBsZXRpb25DYWxsYmFjaywgY29tcGxldGlvbkNhbGxi
YWNrKTsKIAogICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9IHNlcnZlclJlcXVlc3QtPnJlcXVlc3RJ
RCgpOwogICAgIEFTU0VSVCghbV9zZXJ2ZXJSZXF1ZXN0cy5jb250YWlucyhyZXF1ZXN0SUQpKTsK
QEAgLTMxMSw3ICszMTEsNyBAQCB2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OnNldEluZGV4
S2V5cyhpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIGludDY0X3QgZGF0YWJhcwogCiB2b2lkIFdlYklE
QlNlcnZlckNvbm5lY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlKElEQlRyYW5zYWN0aW9uQmFja2Vu
ZCYgdHJhbnNhY3Rpb24sIGNvbnN0IENyZWF0ZU9iamVjdFN0b3JlT3BlcmF0aW9uJiBvcGVyYXRp
b24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik+IGNv
bXBsZXRpb25DYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1
ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDxQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+Pjo6Y3Jl
YXRlKGNvbXBsZXRpb25DYWxsYmFjayk7CisgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gc2VydmVy
UmVxdWVzdCA9IGNyZWF0ZVJlZjxBc3luY1JlcXVlc3RJbXBsPFBhc3NSZWZQdHI8SURCRGF0YWJh
c2VFcnJvcj4+Pihjb21wbGV0aW9uQ2FsbGJhY2spOwogCiAgICAgU3RyaW5nIG9iamVjdFN0b3Jl
TmFtZSA9IG9wZXJhdGlvbi5vYmplY3RTdG9yZU1ldGFkYXRhKCkubmFtZTsKICAgICBzZXJ2ZXJS
ZXF1ZXN0LT5zZXRBYm9ydEhhbmRsZXIoW29iamVjdFN0b3JlTmFtZSwgY29tcGxldGlvbkNhbGxi
YWNrXSB7CkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpk
aWRDcmVhdGVPYmplY3RTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgc3VjY2UKIAogdm9p
ZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpjcmVhdGVJbmRleChJREJUcmFuc2FjdGlvbkJhY2tl
bmQmdHJhbnNhY3Rpb24sIGNvbnN0IENyZWF0ZUluZGV4T3BlcmF0aW9uJiBvcGVyYXRpb24sIHN0
ZDo6ZnVuY3Rpb248dm9pZCAoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRp
b25DYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0g
QXN5bmNSZXF1ZXN0SW1wbDxQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+Pjo6Y3JlYXRlKGNv
bXBsZXRpb25DYWxsYmFjayk7CisgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gc2VydmVyUmVxdWVz
dCA9IGNyZWF0ZVJlZjxBc3luY1JlcXVlc3RJbXBsPFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJv
cj4+Pihjb21wbGV0aW9uQ2FsbGJhY2spOwogCiAgICAgc2VydmVyUmVxdWVzdC0+c2V0QWJvcnRI
YW5kbGVyKFtjb21wbGV0aW9uQ2FsbGJhY2tdIHsKICAgICAgICAgY29tcGxldGlvbkNhbGxiYWNr
KElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVy
cm9yLCAiVW5rbm93biBlcnJvciBvY2N1cmVkIGNyZWF0aW5nIGluZGV4IikpOwpAQCAtMzcwLDcg
KzM3MCw3IEBAIHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6ZGlkQ3JlYXRlSW5kZXgodWlu
dDY0X3QgcmVxdWVzdElELCBib29sIHN1Y2Nlc3MpCiAKIHZvaWQgV2ViSURCU2VydmVyQ29ubmVj
dGlvbjo6ZGVsZXRlSW5kZXgoSURCVHJhbnNhY3Rpb25CYWNrZW5kJnRyYW5zYWN0aW9uLCBjb25z
dCBEZWxldGVJbmRleE9wZXJhdGlvbiYgb3BlcmF0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spCiB7Ci0gICAg
UmVmUHRyPEFzeW5jUmVxdWVzdD4gc2VydmVyUmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8UGFz
c1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPj46OmNyZWF0ZShjb21wbGV0aW9uQ2FsbGJhY2spOwor
ICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHNlcnZlclJlcXVlc3QgPSBjcmVhdGVSZWY8QXN5bmNS
ZXF1ZXN0SW1wbDxQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+Pj4oY29tcGxldGlvbkNhbGxi
YWNrKTsKIAogICAgIHNlcnZlclJlcXVlc3QtPnNldEFib3J0SGFuZGxlcihbY29tcGxldGlvbkNh
bGxiYWNrXSB7CiAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayhJREJEYXRhYmFzZUVycm9yOjpj
cmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIlVua25vd24gZXJyb3Ig
b2NjdXJlZCBkZWxldGluZyBpbmRleCIpKTsKQEAgLTM5OSw3ICszOTksNyBAQCB2b2lkIFdlYklE
QlNlcnZlckNvbm5lY3Rpb246OmRpZERlbGV0ZUluZGV4KHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9v
bCBzdWNjZXNzKQogCiB2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmdldChJREJUcmFuc2Fj
dGlvbkJhY2tlbmQmIHRyYW5zYWN0aW9uLCBjb25zdCBHZXRPcGVyYXRpb24mIG9wZXJhdGlvbiwg
c3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBJREJHZXRSZXN1bHQmLCBQYXNzUmVmUHRyPElEQkRh
dGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKQogewotICAgIFJlZlB0cjxBc3luY1Jl
cXVlc3Q+IHNlcnZlclJlcXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPElEQkdldFJlc3VsdCwgUGFz
c1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPj46OmNyZWF0ZShjb21wbGV0aW9uQ2FsbGJhY2spOwor
ICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHNlcnZlclJlcXVlc3QgPSBjcmVhdGVSZWY8QXN5bmNS
ZXF1ZXN0SW1wbDxJREJHZXRSZXN1bHQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4+Pihj
b21wbGV0aW9uQ2FsbGJhY2spOwogCiAgICAgc2VydmVyUmVxdWVzdC0+c2V0QWJvcnRIYW5kbGVy
KFtjb21wbGV0aW9uQ2FsbGJhY2tdIHsKICAgICAgICAgY29tcGxldGlvbkNhbGxiYWNrKElEQkdl
dFJlc3VsdCgpLCBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246
OlVua25vd25FcnJvciwgIlVua25vd24gZXJyb3Igb2NjdXJlZCBnZXR0aW5nIHJlY29yZCIpKTsK
QEAgLTQxOCw3ICs0MTgsNyBAQCB2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmdldChJREJU
cmFuc2FjdGlvbkJhY2tlbmQmIHRyYW5zYWN0aW9uLCBjb25zdCBHZXRPcAogCiB2b2lkIFdlYklE
QlNlcnZlckNvbm5lY3Rpb246OnB1dChJREJUcmFuc2FjdGlvbkJhY2tlbmQmIHRyYW5zYWN0aW9u
LCBjb25zdCBQdXRPcGVyYXRpb24mIG9wZXJhdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkIChQYXNz
UmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9u
Q2FsbGJhY2spCiB7Ci0gICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gc2VydmVyUmVxdWVzdCA9IEFz
eW5jUmVxdWVzdEltcGw8UGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
RXJyb3I+Pjo6Y3JlYXRlKGNvbXBsZXRpb25DYWxsYmFjayk7CisgICAgUmVmUHRyPEFzeW5jUmVx
dWVzdD4gc2VydmVyUmVxdWVzdCA9IGNyZWF0ZVJlZjxBc3luY1JlcXVlc3RJbXBsPFBhc3NSZWZQ
dHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPj4+KGNvbXBsZXRpb25DYWxs
YmFjayk7CiAKICAgICBzZXJ2ZXJSZXF1ZXN0LT5zZXRBYm9ydEhhbmRsZXIoW2NvbXBsZXRpb25D
YWxsYmFja10gewogICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2sobnVsbHB0ciwgSURCRGF0YWJh
c2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJVbmtu
b3duIGVycm9yIG9jY3VyZWQgcHV0dGluZyByZWNvcmQiKSk7CkBAIC01MDksNyArNTA5LDcgQEAg
dm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpkaWRJdGVyYXRlQ3Vyc29yKHVpbnQ2NF90IHJl
cXVlc3RJRCwgY29uc3QgSURCS2V5RGEKIAogdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpj
b3VudChJREJUcmFuc2FjdGlvbkJhY2tlbmQmIHRyYW5zYWN0aW9uLCBjb25zdCBDb3VudE9wZXJh
dGlvbiYgb3BlcmF0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGludDY0X3QsIFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spCiB7Ci0gICAgUmVmUHRyPEFz
eW5jUmVxdWVzdD4gc2VydmVyUmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8aW50NjRfdCwgUGFz
c1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPj46OmNyZWF0ZShjb21wbGV0aW9uQ2FsbGJhY2spOwor
ICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHNlcnZlclJlcXVlc3QgPSBjcmVhdGVSZWY8QXN5bmNS
ZXF1ZXN0SW1wbDxpbnQ2NF90LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+Pj4oY29tcGxl
dGlvbkNhbGxiYWNrKTsKIAogICAgIHNlcnZlclJlcXVlc3QtPnNldEFib3J0SGFuZGxlcihbY29t
cGxldGlvbkNhbGxiYWNrXSB7CiAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFjaygwLCBJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIlVu
a25vd24gZXJyb3Igb2NjdXJlZCBnZXR0aW5nIGNvdW50IikpOwpAQCAtNTM4LDcgKzUzOCw3IEBA
IHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6ZGlkQ291bnQodWludDY0X3QgcmVxdWVzdElE
LCBpbnQ2NF90IGNvdW50LCB1aW50MzJfCiAKIHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6
ZGVsZXRlUmFuZ2UoSURCVHJhbnNhY3Rpb25CYWNrZW5kJiB0cmFuc2FjdGlvbiwgY29uc3QgRGVs
ZXRlUmFuZ2VPcGVyYXRpb24mIG9wZXJhdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkIChQYXNzUmVm
UHRyPElEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKQogewotICAgIFJlZlB0
cjxBc3luY1JlcXVlc3Q+IHNlcnZlclJlcXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPFBhc3NSZWZQ
dHI8SURCRGF0YWJhc2VFcnJvcj4+OjpjcmVhdGUoY29tcGxldGlvbkNhbGxiYWNrKTsKKyAgICBS
ZWZQdHI8QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0gY3JlYXRlUmVmPEFzeW5jUmVxdWVz
dEltcGw8UGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPj4+KGNvbXBsZXRpb25DYWxsYmFjayk7
CiAKICAgICBzZXJ2ZXJSZXF1ZXN0LT5zZXRBYm9ydEhhbmRsZXIoW2NvbXBsZXRpb25DYWxsYmFj
a10gewogICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2soSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRl
KElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJVbmtub3duIGVycm9yIG9jY3Vy
ZWQgZ2V0dGluZyBjb3VudCIpKTsKQEAgLTU2Nyw3ICs1NjcsNyBAQCB2b2lkIFdlYklEQlNlcnZl
ckNvbm5lY3Rpb246OmRpZERlbGV0ZVJhbmdlKHVpbnQ2NF90IHJlcXVlc3RJRCwgdWludDMyX3Qg
ZXJyb3JDbwogCiB2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmNsZWFyT2JqZWN0U3RvcmUo
SURCVHJhbnNhY3Rpb25CYWNrZW5kJiwgY29uc3QgQ2xlYXJPYmplY3RTdG9yZU9wZXJhdGlvbiYg
b3BlcmF0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJv
cj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spCiB7Ci0gICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gc2Vy
dmVyUmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8UGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9y
Pj46OmNyZWF0ZShjb21wbGV0aW9uQ2FsbGJhY2spOworICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+
IHNlcnZlclJlcXVlc3QgPSBjcmVhdGVSZWY8QXN5bmNSZXF1ZXN0SW1wbDxQYXNzUmVmUHRyPElE
QkRhdGFiYXNlRXJyb3I+Pj4oY29tcGxldGlvbkNhbGxiYWNrKTsKIAogICAgIHNlcnZlclJlcXVl
c3QtPnNldEFib3J0SGFuZGxlcihbY29tcGxldGlvbkNhbGxiYWNrXSB7CiAgICAgICAgIGNvbXBs
ZXRpb25DYWxsYmFjayhJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRp
b246OlVua25vd25FcnJvciwgIlVua25vd24gZXJyb3Igb2NjdXJlZCBjbGVhcmluZyBvYmplY3Qg
c3RvcmUiKSk7CkBAIC01OTYsNyArNTk2LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9u
OjpkaWRDbGVhck9iamVjdFN0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCBzdWNjZXMKIAog
dm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpkZWxldGVPYmplY3RTdG9yZShJREJUcmFuc2Fj
dGlvbkJhY2tlbmQmLCBjb25zdCBEZWxldGVPYmplY3RTdG9yZU9wZXJhdGlvbiYgb3BlcmF0aW9u
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pPiBjb21w
bGV0aW9uQ2FsbGJhY2spCiB7Ci0gICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gc2VydmVyUmVxdWVz
dCA9IEFzeW5jUmVxdWVzdEltcGw8UGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPj46OmNyZWF0
ZShjb21wbGV0aW9uQ2FsbGJhY2spOworICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHNlcnZlclJl
cXVlc3QgPSBjcmVhdGVSZWY8QXN5bmNSZXF1ZXN0SW1wbDxQYXNzUmVmUHRyPElEQkRhdGFiYXNl
RXJyb3I+Pj4oY29tcGxldGlvbkNhbGxiYWNrKTsKIAogICAgIHNlcnZlclJlcXVlc3QtPnNldEFi
b3J0SGFuZGxlcihbY29tcGxldGlvbkNhbGxiYWNrXSB7CiAgICAgICAgIGNvbXBsZXRpb25DYWxs
YmFjayhJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25v
d25FcnJvciwgIlVua25vd24gZXJyb3Igb2NjdXJlZCBkZWxldGluZyBvYmplY3Qgc3RvcmUiKSk7
CkBAIC02MjUsNyArNjI1LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpkaWREZWxl
dGVPYmplY3RTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgc3VjY2UKIAogdm9pZCBXZWJJ
REJTZXJ2ZXJDb25uZWN0aW9uOjpjaGFuZ2VEYXRhYmFzZVZlcnNpb24oSURCVHJhbnNhY3Rpb25C
YWNrZW5kJiwgY29uc3QgSURCRGF0YWJhc2VCYWNrZW5kOjpWZXJzaW9uQ2hhbmdlT3BlcmF0aW9u
JiBvcGVyYXRpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVy
cm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBz
ZXJ2ZXJSZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDxQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJy
b3I+Pjo6Y3JlYXRlKGNvbXBsZXRpb25DYWxsYmFjayk7CisgICAgUmVmUHRyPEFzeW5jUmVxdWVz
dD4gc2VydmVyUmVxdWVzdCA9IGNyZWF0ZVJlZjxBc3luY1JlcXVlc3RJbXBsPFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VFcnJvcj4+Pihjb21wbGV0aW9uQ2FsbGJhY2spOwogCiAgICAgc2VydmVyUmVx
dWVzdC0+c2V0QWJvcnRIYW5kbGVyKFtjb21wbGV0aW9uQ2FsbGJhY2tdIHsKICAgICAgICAgY29t
cGxldGlvbkNhbGxiYWNrKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6VW5rbm93bkVycm9yLCAiVW5rbm93biBlcnJvciBvY2N1cmVkIGNoYW5naW5nIGRhdGFi
YXNlIHZlcnNpb24iKSk7CkBAIC02NTQsNyArNjU0LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXJDb25u
ZWN0aW9uOjpkaWRDaGFuZ2VEYXRhYmFzZVZlcnNpb24odWludDY0X3QgcmVxdWVzdElELCBib29s
IHMKIAogdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpvcGVuQ3Vyc29yKElEQlRyYW5zYWN0
aW9uQmFja2VuZCYsIGNvbnN0IE9wZW5DdXJzb3JPcGVyYXRpb24mIG9wZXJhdGlvbiwgc3RkOjpm
dW5jdGlvbjx2b2lkIChpbnQ2NF90LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURC
S2V5PiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJy
b3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKQogewotICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHNl
cnZlclJlcXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPGludDY0X3QsIFBhc3NSZWZQdHI8SURCS2V5
PiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIFBhc3NSZWZQ
dHI8SURCRGF0YWJhc2VFcnJvcj4+OjpjcmVhdGUoY29tcGxldGlvbkNhbGxiYWNrKTsKKyAgICBS
ZWZQdHI8QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0gY3JlYXRlUmVmPEFzeW5jUmVxdWVz
dEltcGw8aW50NjRfdCwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4sIFBh
c3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPj4+KGNv
bXBsZXRpb25DYWxsYmFjayk7CiAKICAgICBzZXJ2ZXJSZXF1ZXN0LT5zZXRBYm9ydEhhbmRsZXIo
W2NvbXBsZXRpb25DYWxsYmFja10gewogICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2soMCwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJVbmtub3duIGVycm9yIG9jY3VyZWQgb3Blbmlu
ZyBkYXRhYmFzZSBjdXJzb3IiKSk7CkBAIC02NzEsNyArNjcxLDcgQEAgdm9pZCBXZWJJREJTZXJ2
ZXJDb25uZWN0aW9uOjpvcGVuQ3Vyc29yKElEQlRyYW5zYWN0aW9uQmFja2VuZCYsIGNvbnN0IE9w
ZW5DdXJzb3IKIAogdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpjdXJzb3JBZHZhbmNlKElE
QkN1cnNvckJhY2tlbmQmLCBjb25zdCBDdXJzb3JBZHZhbmNlT3BlcmF0aW9uJiBvcGVyYXRpb24s
IHN0ZDo6ZnVuY3Rpb248dm9pZCAoUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktl
eT4sIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9y
Pik+IGNvbXBsZXRpb25DYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBzZXJ2
ZXJSZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDxQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQ
dHI8SURCS2V5PiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBQYXNzUmVmUHRyPElEQkRhdGFi
YXNlRXJyb3I+Pjo6Y3JlYXRlKGNvbXBsZXRpb25DYWxsYmFjayk7CisgICAgUmVmUHRyPEFzeW5j
UmVxdWVzdD4gc2VydmVyUmVxdWVzdCA9IGNyZWF0ZVJlZjxBc3luY1JlcXVlc3RJbXBsPFBhc3NS
ZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4+Pihjb21wbGV0aW9uQ2FsbGJhY2spOwog
CiAgICAgc2VydmVyUmVxdWVzdC0+c2V0QWJvcnRIYW5kbGVyKFtjb21wbGV0aW9uQ2FsbGJhY2td
IHsKICAgICAgICAgY29tcGxldGlvbkNhbGxiYWNrKG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIs
IElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVy
cm9yLCAiVW5rbm93biBlcnJvciBvY2N1cmVkIGFkdmFuY2luZyBkYXRhYmFzZSBjdXJzb3IiKSk7
CkBAIC02ODgsNyArNjg4LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpjdXJzb3JB
ZHZhbmNlKElEQkN1cnNvckJhY2tlbmQmLCBjb25zdCBDdXJzb3JBZHZhbmMKIAogdm9pZCBXZWJJ
REJTZXJ2ZXJDb25uZWN0aW9uOjpjdXJzb3JJdGVyYXRlKElEQkN1cnNvckJhY2tlbmQmLCBjb25z
dCBDdXJzb3JJdGVyYXRpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lk
IChQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxi
YWNrKQogewotICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHNlcnZlclJlcXVlc3QgPSBBc3luY1Jl
cXVlc3RJbXBsPFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4+OjpjcmVhdGUo
Y29tcGxldGlvbkNhbGxiYWNrKTsKKyAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1
ZXN0ID0gY3JlYXRlUmVmPEFzeW5jUmVxdWVzdEltcGw8UGFzc1JlZlB0cjxJREJLZXk+LCBQYXNz
UmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgUGFzc1JlZlB0cjxJREJE
YXRhYmFzZUVycm9yPj4+KGNvbXBsZXRpb25DYWxsYmFjayk7CiAKICAgICBzZXJ2ZXJSZXF1ZXN0
LT5zZXRBYm9ydEhhbmRsZXIoW2NvbXBsZXRpb25DYWxsYmFja10gewogICAgICAgICBjb21wbGV0
aW9uQ2FsbGJhY2sobnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgSURCRGF0YWJhc2VFcnJvcjo6
Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJVbmtub3duIGVycm9y
IG9jY3VyZWQgaXRlcmF0aW5nIGRhdGFiYXNlIGN1cnNvciIpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254413</attachid>
            <date>2015-06-06 07:26:38 -0700</date>
            <delta_ts>2015-06-09 11:46:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145384-20150606162613.patch</filename>
            <type>text/plain</type>
            <size>38003</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1MjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGFlYmFmYzdiZjA5YzE3NThiZGRlNzNk
YzRjOWU3YmUyZWNhNzliMjIuLjI3MmY1ODI2NWEyM2E4NjI2MGFlZDhjZjdkMWU2MWY1YTJhNDMw
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTUtMDYtMDYgIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIEludHJvZHVjZSBXVEY6OmNyZWF0ZVJlZjxUPihB
cmdzJiYuLi4pCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDUzODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbnRyb2R1Y2UgdGhlIFdURjo6Y3JlYXRlUmVmPD4oKSBmdW5jdGlvbiB0ZW1wbGF0ZSB0aGF0
IGNvbnN0cnVjdHMgYSByZWYtY291bnRlZCBvYmplY3QKKyAgICAgICAgb2YgdGhlIHNwZWNpZmll
ZCB0eXBlLCBwZXJmZWN0bHkgZm9yd2FyZGluZyB0aGUgcGFzc2VkLWluIGFyZ3VtZW50cywgYW5k
IGFkb3B0cyBpdAorICAgICAgICBpbnRvIGEgbmV3IFJlZjw+IG9iamVjdC4KKworICAgICAgICBU
aGlzIGlzIGludGVuZGVkIGFzIGEgc2ltcGxlciBhbHRlcm5hdGl2ZSB0byBhbGwgdGhlIHN0YXRp
YyBjcmVhdGUoKSBtZXRob2RzIHRoYXQKKyAgICAgICAgYXJlIHVzZWQgZm9yIGNvbnN0cnVjdGlu
ZyBvYmplY3RzIG9mIHN1Y2ggdHlwZXMgd2hpbGUga2VlcGluZyB0aGUgY29uc3RydWN0b3JzCisg
ICAgICAgIHRoZW1zZWx2ZXMgcHJpdmF0ZS4gVG8gZ2l2ZSBjcmVhdGVSZWY8PigpIGFjY2VzcyB0
byBhIHByaXZhdGUgY29uc3RydWN0b3IsIHRoZQorICAgICAgICBXVEZfQ1JFQVRFX1JFRl9GUklF
TkRMWSBtYWNybyBtdXN0IGJlIHVzZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24sIHNwZWNpZnlp
bmcgdGhlCisgICAgICAgIGNyZWF0ZVJlZigpIGZ1bmN0aW9uIHRlbXBsYXRlIGFzIGEgZnJpZW5k
IG9mIHRoZSBjbGFzcy4KKworICAgICAgICAqIHd0Zi9SZWYuaDoKKyAgICAgICAgKFdURjo6Y3Jl
YXRlUmVmKToKKwogMjAxNS0wNi0wMiAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJp
c0BpZ2FsaWEuY29tPiBhbmQgWW91ZW5uIEZhYmxldCA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24u
ZnI+CiAKICAgICAgICAgW1N0cmVhbXMgQVBJXSBEZWxlZ2F0ZSBSZWFkYWJsZVN0cmVhbVJlYWRl
ciByZWZlcmVuY2UgY291bnRpbmcgdG8gUmVhZGFibGVTdHJlYW0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmMzk0
NTAxMzkwZjhmY2ZjM2MxNDY2MDVlNzZkNTZjMWYyYzkwOTk4Li40OGEwMDQzODkzZjVhOWM0OWE2
NmVlYjAyNzRjODM1YTg3MGU0ZDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTUt
MDYtMDYgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIElu
dHJvZHVjZSBXVEY6OmNyZWF0ZVJlZjxUPihBcmdzJiYuLi4pCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDUzODQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYWxsIGNyZWF0ZVJlZjxDbGllbnRSZWN0Pigu
Li4pIGZvciBSZWY8Q2xpZW50UmVjdD4gY29uc3RydWN0aW9uLCBpbnN0ZWFkIG9mIHZhcmlvdXMK
KyAgICAgICAgQ2xpZW50UmVjdDo6Y3JlYXRlKC4uLikgbWV0aG9kcy4KKworICAgICAgICAqIGRv
bS9DbGllbnRSZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDbGllbnRSZWN0OjpjcmVhdGUpOiBE
ZWxldGVkLgorICAgICAgICAqIGRvbS9DbGllbnRSZWN0TGlzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDbGllbnRSZWN0TGlzdDo6Q2xpZW50UmVjdExpc3QpOgorICAgICAgICAqIGRvbS9FbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmdldEJvdW5kaW5nQ2xpZW50UmVj
dCk6CisgICAgICAgICogZG9tL1JhbmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlOjpn
ZXRCb3VuZGluZ0NsaWVudFJlY3QpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6YWJzb2x1dGVDYXJldEJvdW5kcyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmJvdW5kaW5nQm94KToKKyAgICAgICAgKFdlYkNvcmU6
OkludGVybmFsczo6c2VsZWN0aW9uQm91bmRzKToKKwogMjAxNS0wNi0wNSAgTWFudWVsIFJlZ28g
Q2FzYXNub3ZhcyAgPHJlZ29AaWdhbGlhLmNvbT4KIAogICAgICAgICBbQ1NTIEdyaWQgTGF5b3V0
XSBTdXBwb3J0IGRvdHMgc2VxdWVuY2VzIGluIGdyaWQtdGVtcGxhdGUtYXJlYXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpp
bmRleCBmOWM3NmIwNmE5MzUyNmZiODc5MTUyOThkNDAzNGY2YmI0MDVkNDJhLi5mM2I4NWZlN2Uy
NDk0MzJjYjFlNjY0MDYxMzQxNjllODkzMjVkYWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMg
QEAKKzIwMTUtMDYtMDYgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisg
ICAgICAgIEludHJvZHVjZSBXVEY6OmNyZWF0ZVJlZjxUPihBcmdzJiYuLi4pCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDUzODQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYWxsIGNyZWF0ZVJlZjxBc3lu
Y1JlcXVlc3RJbXBsPD4+KC4uLikgZm9yIFJlZjxBc3luY1JlcXVlc3RJbXBsPD4+IGNvbnN0cnVj
dGlvbiwKKyAgICAgICAgaW5zdGVhZCBvZiB2YXJpb3VzIEFzeW5jUmVxdWVzdEltcGw8Pjo6Y3Jl
YXRlKC4uLikgbWV0aG9kcy4KKworICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIv
VW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFz
ZTo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6
Z2V0T3JFc3RhYmxpc2hJREJEYXRhYmFzZU1ldGFkYXRhKToKKyAgICAgICAgKFdlYktpdDo6VW5p
cXVlSURCRGF0YWJhc2U6OnBvc3RUcmFuc2FjdGlvbk9wZXJhdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjaGFuZ2VEYXRhYmFzZVZlcnNpb24pOgorICAgICAgICAo
V2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAo
V2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAo
V2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6Y2xlYXJPYmplY3RTdG9yZSk6CisgICAgICAgIChX
ZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6
OlVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1
ZUlEQkRhdGFiYXNlOjpwdXRSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRh
YmFzZTo6Z2V0UmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6Om9w
ZW5DdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6Y3Vyc29yQWR2
YW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjdXJzb3JJdGVyYXRl
KToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OmNvdW50KToKKyAgICAgICAg
KFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZVJhbmdlKToKKyAgICAgICAgKiBTaGFy
ZWQvQXN5bmNSZXF1ZXN0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhl
ZERCL1dlYklEQlNlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJT
ZXJ2ZXJDb25uZWN0aW9uOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklE
QlNlcnZlckNvbm5lY3Rpb246OmdldE9yRXN0YWJsaXNoSURCRGF0YWJhc2VNZXRhZGF0YSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlckNvbm5lY3Rpb246Om9wZW5UcmFuc2FjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlckNvbm5lY3Rpb246OmJlZ2luVHJhbnNhY3Rp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpjb21taXRUcmFu
c2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlckNvbm5lY3Rpb246OnJlc2V0
VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpy
b2xsYmFja1RyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyQ29ubmVj
dGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXJD
b25uZWN0aW9uOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlckNv
bm5lY3Rpb246OmRlbGV0ZUluZGV4KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyQ29u
bmVjdGlvbjo6Z2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6
cHV0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6Y291bnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpkZWxldGVSYW5nZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlckNvbm5lY3Rpb246OmNsZWFyT2JqZWN0U3RvcmUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpkZWxldGVPYmplY3RT
dG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlckNvbm5lY3Rpb246OmNoYW5nZURh
dGFiYXNlVmVyc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlckNvbm5lY3Rpb246
Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpj
dXJzb3JBZHZhbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6
Y3Vyc29ySXRlcmF0ZSk6CisKIDIwMTUtMDYtMDEgIEpvbiBIb25leWN1dHQgIDxqaG9uZXljdXR0
QGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBVcGxvYWRpbmcgYW4gYW5pbWF0ZWQgR0lGIGZy
b20gdGhlIHBob3RvIGxpYnJhcnkgdXBsb2FkcyBhIEpQRUcKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1JlZi5oIGIvU291cmNlL1dURi93dGYvUmVmLmgKaW5kZXggNTBhNWU3NjE3MzJkZmMy
NzJmMWNiYjhkYzk1YmRkOGY1NDdhZWFlOC4uNTc0Nzk0NmI0ZGRkYjEwYTI4Yjc4M2ViMTVjYWYy
ZGQzMzY2MzI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUmVmLmgKKysrIGIvU291cmNl
L1dURi93dGYvUmVmLmgKQEAgLTE4NiwxMCArMTg2LDE5IEBAIGlubGluZSBSZWY8VD4gYWRvcHRS
ZWYoVCYgcmVmZXJlbmNlKQogCiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4u
IEFyZ3M+CitpbmxpbmUgUmVmPFQ+IGNyZWF0ZVJlZihBcmdzJiYuLi4gYXJncykKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworfQor
CisjZGVmaW5lIFdURl9DUkVBVEVfUkVGX0ZSSUVORExZIHRlbXBsYXRlPHR5cGVuYW1lIENyZWF0
ZVJlZlR5cGUsIHR5cGVuYW1lLi4uIENyZWF0ZVJlZkFyZ3M+IGZyaWVuZCBSZWY8Q3JlYXRlUmVm
VHlwZT4gV1RGOjpjcmVhdGVSZWYoQ3JlYXRlUmVmQXJncyYmLi4uKQorCiB9IC8vIG5hbWVzcGFj
ZSBXVEYKIAogdXNpbmcgV1RGOjpSZWY7CiB1c2luZyBXVEY6OmFkb3B0UmVmOwordXNpbmcgV1RG
OjpjcmVhdGVSZWY7CiB1c2luZyBXVEY6OnN0YXRpY19yZWZlcmVuY2VfY2FzdDsKIAogI2VuZGlm
IC8vIFdURl9SZWZfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NsaWVudFJlY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGllbnRSZWN0LmgKaW5kZXggZjc2MTMwZWY3ODVhODVh
ZGYzNzEzNDZlZmYyNzMxMzY3MGNkNzRiMy4uNDEyZTJkZGFmZjQ5NzVhZjE4ZDUwOGE4Y2RlMTY1
MjJlNDBiNmE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NsaWVudFJlY3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpZW50UmVjdC5oCkBAIC0zNywxMSArMzcsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSW50UmVjdDsgCiAKICAgICBjbGFzcyBDbGll
bnRSZWN0IDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8Q2xpZW50
UmVjdD4geworICAgICAgICBXVEZfQ1JFQVRFX1JFRl9GUklFTkRMWTsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIHN0YXRpYyBSZWY8Q2xpZW50UmVjdD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBDbGllbnRSZWN0KTsgfQotICAgICAgICBzdGF0aWMgUmVmPENsaWVudFJlY3Q+IGNyZWF0
ZShjb25zdCBJbnRSZWN0JiByZWN0KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENsaWVudFJlY3Qo
cmVjdCkpOyB9Ci0gICAgICAgIHN0YXRpYyBSZWY8Q2xpZW50UmVjdD4gY3JlYXRlKGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDbGllbnRSZWN0KHJlY3QpKTsg
fQotCiAgICAgICAgIGZsb2F0IHRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC55KCk7IH0KICAg
ICAgICAgZmxvYXQgcmlnaHQoKSBjb25zdCB7IHJldHVybiBtX3JlY3QubWF4WCgpOyB9CiAgICAg
ICAgIGZsb2F0IGJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5tYXhZKCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGllbnRSZWN0TGlzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ2xpZW50UmVjdExpc3QuY3BwCmluZGV4IGEwNTdkZGYzYzY3NjQxNThmMzM3N2Nh
MWM4ZTU4NDRmNDEzN2EwYTAuLmFlMzk2OGQ1NGNjYWQzODY1ZWU1ZWI1ZDlmMTkyNDM3ZDFhNWY3
NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGllbnRSZWN0TGlzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0NsaWVudFJlY3RMaXN0LmNwcApAQCAtNDAsNyArNDAsNyBA
QCBDbGllbnRSZWN0TGlzdDo6Q2xpZW50UmVjdExpc3QoY29uc3QgVmVjdG9yPEZsb2F0UXVhZD4m
IHF1YWRzKQogewogICAgIG1fbGlzdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHF1YWRzLnNpemUo
KSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBxdWFkcy5zaXplKCk7ICsraSkKLSAgICAg
ICAgbV9saXN0LmFwcGVuZChDbGllbnRSZWN0OjpjcmVhdGUocXVhZHNbaV0uZW5jbG9zaW5nQm91
bmRpbmdCb3goKSkpOworICAgICAgICBtX2xpc3QuYXBwZW5kKGNyZWF0ZVJlZjxDbGllbnRSZWN0
PihxdWFkc1tpXS5lbmNsb3NpbmdCb3VuZGluZ0JveCgpKSk7CiB9CiAKIENsaWVudFJlY3RMaXN0
Ojp+Q2xpZW50UmVjdExpc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDA2ZWFhZmRiMDBj
NGQ2Mjg2MTI5ZTBiNWE4NzM4ODc1MjMzNWUwMzUuLjRmM2FkMzBlZGJhYjkzMzM2NzU0NWFlNWIx
N2Y0MDdhNWI2ZjE4NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTEwODYsMTQgKzEwODYs
MTQgQEAgUmVmPENsaWVudFJlY3Q+IEVsZW1lbnQ6OmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpCiAg
ICAgfQogCiAgICAgaWYgKHF1YWRzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIENsaWVudFJl
Y3Q6OmNyZWF0ZSgpOworICAgICAgICByZXR1cm4gY3JlYXRlUmVmPENsaWVudFJlY3Q+KCk7CiAK
ICAgICBGbG9hdFJlY3QgcmVzdWx0ID0gcXVhZHNbMF0uYm91bmRpbmdCb3goKTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMTsgaSA8IHF1YWRzLnNpemUoKTsgKytpKQogICAgICAgICByZXN1bHQudW5p
dGUocXVhZHNbaV0uYm91bmRpbmdCb3goKSk7CiAKICAgICBkb2N1bWVudCgpLmFkanVzdEZsb2F0
UmVjdEZvclNjcm9sbEFuZEFic29sdXRlWm9vbUFuZEZyYW1lU2NhbGUocmVzdWx0LCByZW5kZXJl
cigpLT5zdHlsZSgpKTsKLSAgICByZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRlKHJlc3VsdCk7Cisg
ICAgcmV0dXJuIGNyZWF0ZVJlZjxDbGllbnRSZWN0PihyZXN1bHQpOwogfQogCiBJbnRSZWN0IEVs
ZW1lbnQ6OmNsaWVudFJlY3QoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1JhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKaW5kZXggMjY3M2FkZDk2
MzJhZjViOTViNjkwZDYwN2U2M2YxMTQyZjU5OTU0MS4uMDkzMzg5ZmVmYjlmZmY0OWM2ZmEyOWVk
NjU3ZDllYmRhMDhlM2IyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCkBAIC0yMTg3LDcgKzIxODcsNyBA
QCBSZWY8Q2xpZW50UmVjdExpc3Q+IFJhbmdlOjpnZXRDbGllbnRSZWN0cygpIGNvbnN0CiAKIFJl
ZjxDbGllbnRSZWN0PiBSYW5nZTo6Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRlKGJvdW5kaW5nUmVjdCgpKTsKKyAgICByZXR1cm4g
Y3JlYXRlUmVmPENsaWVudFJlY3Q+KGJvdW5kaW5nUmVjdCgpKTsKIH0KIAogdm9pZCBSYW5nZTo6
Z2V0Qm9yZGVyQW5kVGV4dFF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAyZDI5ZGI3NWI3OGQ3NThkYzQwMDA2
NGMyMDk5MmUzOTk5OGQ3MDkzLi5jZjc3MGVhMGU0MDFkMjNkMWUxYTVkZmNlMWMzNDJmNjU4ODRm
OTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC04ODYsMjQgKzg4Niwy
NCBAQCBSZWY8Q2xpZW50UmVjdD4gSW50ZXJuYWxzOjphYnNvbHV0ZUNhcmV0Qm91bmRzKEV4Y2Vw
dGlvbkNvZGUmIGVjKQogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnRleHREb2N1bWVudCgp
OwogICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5mcmFtZSgpKSB7CiAgICAgICAgIGVj
ID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwotICAgICAgICByZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRl
KCk7CisgICAgICAgIHJldHVybiBjcmVhdGVSZWY8Q2xpZW50UmVjdD4oKTsKICAgICB9CiAKLSAg
ICByZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRlKGRvY3VtZW50LT5mcmFtZSgpLT5zZWxlY3Rpb24o
KS5hYnNvbHV0ZUNhcmV0Qm91bmRzKCkpOworICAgIHJldHVybiBjcmVhdGVSZWY8Q2xpZW50UmVj
dD4oZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVjdGlvbigpLmFic29sdXRlQ2FyZXRCb3VuZHMoKSk7
CiB9CiAKIFJlZjxDbGllbnRSZWN0PiBJbnRlcm5hbHM6OmJvdW5kaW5nQm94KEVsZW1lbnQqIGVs
ZW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghZWxlbWVudCkgewogICAgICAg
ICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKLSAgICAgICAgcmV0dXJuIENsaWVudFJlY3Q6OmNy
ZWF0ZSgpOworICAgICAgICByZXR1cm4gY3JlYXRlUmVmPENsaWVudFJlY3Q+KCk7CiAgICAgfQog
CiAgICAgZWxlbWVudC0+ZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVz
aGVldHMoKTsKICAgICBhdXRvIHJlbmRlcmVyID0gZWxlbWVudC0+cmVuZGVyZXIoKTsKICAgICBp
ZiAoIXJlbmRlcmVyKQotICAgICAgICByZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRlKCk7Ci0gICAg
cmV0dXJuIENsaWVudFJlY3Q6OmNyZWF0ZShyZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJl
Y3RJZ25vcmluZ1RyYW5zZm9ybXMoKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVSZWY8Q2xpZW50
UmVjdD4oKTsKKyAgICByZXR1cm4gY3JlYXRlUmVmPENsaWVudFJlY3Q+KHJlbmRlcmVyLT5hYnNv
bHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpKTsKIH0KIAogUmVmPENsaWVu
dFJlY3RMaXN0PiBJbnRlcm5hbHM6Omluc3BlY3RvckhpZ2hsaWdodFJlY3RzKEV4Y2VwdGlvbkNv
ZGUmIGVjKQpAQCAtMjUyOCwxMCArMjUyOCwxMCBAQCBSZWY8Q2xpZW50UmVjdD4gSW50ZXJuYWxz
OjpzZWxlY3Rpb25Cb3VuZHMoRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gY29udGV4dERvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQt
PmZyYW1lKCkpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7Ci0gICAgICAgIHJl
dHVybiBDbGllbnRSZWN0OjpjcmVhdGUoKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVJlZjxDbGll
bnRSZWN0PigpOwogICAgIH0KIAotICAgIHJldHVybiBDbGllbnRSZWN0OjpjcmVhdGUoZG9jdW1l
bnQtPmZyYW1lKCktPnNlbGVjdGlvbigpLnNlbGVjdGlvbkJvdW5kcygpKTsKKyAgICByZXR1cm4g
Y3JlYXRlUmVmPENsaWVudFJlY3Q+KGRvY3VtZW50LT5mcmFtZSgpLT5zZWxlY3Rpb24oKS5zZWxl
Y3Rpb25Cb3VuZHMoKSk7CiB9CiAKICNpZiBFTkFCTEUoVklCUkFUSU9OKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlE
QkRhdGFiYXNlLmNwcAppbmRleCBmNzY4MWU3NGFlMTM5Yjc4Mzk4MWFjNTQ0NzA4MTk2NTBhNGUw
MDE4Li5hMzAzOTIxMmFmZTYwYTQxYzQ0MDk2NWU1MmZmOWViZTBmZjY1MjBkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFi
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1Vu
aXF1ZUlEQkRhdGFiYXNlLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgVW5pcXVlSURCRGF0
YWJhc2U6OmRlbGV0ZURhdGFiYXNlKHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IHN1Y2Nlc3ND
YWxsYmFjCiAgICAgfQogCiAgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBwcm90ZWN0b3Io
dGhpcyk7Ci0gICAgbV9wZW5kaW5nU2h1dGRvd25UYXNrID0gQXN5bmNSZXF1ZXN0SW1wbDxVbmlx
dWVJREJEYXRhYmFzZVNodXRkb3duVHlwZT46OmNyZWF0ZShbdGhpcywgcHJvdGVjdG9yLCBzdWNj
ZXNzQ2FsbGJhY2tdKFVuaXF1ZUlEQkRhdGFiYXNlU2h1dGRvd25UeXBlIHR5cGUpIHsKKyAgICBt
X3BlbmRpbmdTaHV0ZG93blRhc2sgPSBjcmVhdGVSZWY8QXN5bmNSZXF1ZXN0SW1wbDxVbmlxdWVJ
REJEYXRhYmFzZVNodXRkb3duVHlwZT4+KFt0aGlzLCBwcm90ZWN0b3IsIHN1Y2Nlc3NDYWxsYmFj
a10oVW5pcXVlSURCRGF0YWJhc2VTaHV0ZG93blR5cGUgdHlwZSkgewogICAgICAgICAvLyBJZiB0
aGUgc2h1dGRvd24ganVzdCBjb21wbGV0ZWQgd2FzIGEgRGVsZXRlIHNodXRkb3duIHRoZW4gd2Ug
c3VjY2VlZGVkLgogICAgICAgICAvLyBJZiBub3QgcmVwb3J0IGZhaWx1cmUgaW5zdGVhZCBvZiB0
cnlpbmcgYWdhaW4uCiAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjayh0eXBlID09IFVuaXF1ZUlEQkRh
dGFiYXNlU2h1dGRvd25UeXBlOjpEZWxldGVTaHV0ZG93bik7CkBAIC0yMzUsNyArMjM1LDcgQEAg
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0T3JFc3RhYmxpc2hJREJEYXRhYmFzZU1ldGFkYXRh
KHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm8KICAgICBib29sIHNob3VsZE9wZW5CYWNraW5nU3RvcmUg
PSBtX3BlbmRpbmdNZXRhZGF0YVJlcXVlc3RzLmlzRW1wdHkoKTsKIAogICAgIC8vIFRoZW4gcmVt
ZW1iZXIgdGhpcyBtZXRhZGF0YSByZXF1ZXN0IHRvIGJlIGFuc3dlcmVkIGxhdGVyLgotICAgIFJl
ZlB0cjxBc3luY1JlcXVlc3Q+IHJlcXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPD46OmNyZWF0ZShb
Y29tcGxldGlvbkNhbGxiYWNrLCB0aGlzXSB7CisgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gcmVx
dWVzdCA9IGNyZWF0ZVJlZjxBc3luY1JlcXVlc3RJbXBsPD4+KFtjb21wbGV0aW9uQ2FsbGJhY2ss
IHRoaXNdIHsKICAgICAgICAgY29tcGxldGlvbkNhbGxiYWNrKCEhbV9tZXRhZGF0YSwgbV9tZXRh
ZGF0YSA/ICptX21ldGFkYXRhIDogSURCRGF0YWJhc2VNZXRhZGF0YSgpKTsKICAgICB9LCBbY29t
cGxldGlvbkNhbGxiYWNrXSB7CiAgICAgICAgIC8vIFRoZSBib29sZWFuIGZsYWcgdG8gdGhlIGNv
bXBsZXRpb24gY2FsbGJhY2sgcmVwcmVzZW50cyB3aGV0aGVyIHRoZQpAQCAtMzI0LDcgKzMyNCw3
IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBvc3RUcmFuc2FjdGlvbk9wZXJhdGlvbihjb25z
dCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvCiAKICAgICBwb3N0RGF0YWJhc2VUYXNrKFdURjo6
bW92ZSh0YXNrKSk7CiAKLSAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiByZXF1ZXN0ID0gQXN5bmNS
ZXF1ZXN0SW1wbDxib29sPjo6Y3JlYXRlKFtzdWNjZXNzQ2FsbGJhY2tdKGJvb2wgc3VjY2Vzcykg
eworICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHJlcXVlc3QgPSBjcmVhdGVSZWY8QXN5bmNSZXF1
ZXN0SW1wbDxib29sPj4oW3N1Y2Nlc3NDYWxsYmFja10oYm9vbCBzdWNjZXNzKSB7CiAgICAgICAg
IHN1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzKTsKICAgICB9LCBbc3VjY2Vzc0NhbGxiYWNrXSB7CiAg
ICAgICAgIHN1Y2Nlc3NDYWxsYmFjayhmYWxzZSk7CkBAIC0zNTgsNyArMzU4LDcgQEAgdm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6Y2hhbmdlRGF0YWJhc2VWZXJzaW9uKGNvbnN0IElEQklkZW50aWZp
ZXImIHRyYW5zYWN0aW9uSWQKICAgICB1aW50NjRfdCBvbGRWZXJzaW9uID0gbV9tZXRhZGF0YS0+
dmVyc2lvbjsKICAgICBtX21ldGFkYXRhLT52ZXJzaW9uID0gbmV3VmVyc2lvbjsKIAotICAgIFJl
ZlB0cjxBc3luY1JlcXVlc3Q+IHJlcXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPGJvb2w+OjpjcmVh
dGUoW3RoaXMsIG9sZFZlcnNpb24sIHN1Y2Nlc3NDYWxsYmFja10oYm9vbCBzdWNjZXNzKSB7Cisg
ICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gcmVxdWVzdCA9IGNyZWF0ZVJlZjxBc3luY1JlcXVlc3RJ
bXBsPGJvb2w+PihbdGhpcywgb2xkVmVyc2lvbiwgc3VjY2Vzc0NhbGxiYWNrXShib29sIHN1Y2Nl
c3MpIHsKICAgICAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICAgICAgbV9tZXRhZGF0YS0+dmVy
c2lvbiA9IG9sZFZlcnNpb247CiAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzKTsKQEAg
LTQyMSw3ICs0MjEsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9y
ZShjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aQogICAgIG1fbWV0YWRhdGEt
Pm9iamVjdFN0b3Jlcy5zZXQobWV0YWRhdGEuaWQsIG1ldGFkYXRhKTsKICAgICBpbnQ2NF90IGFk
ZGVkT2JqZWN0U3RvcmVJRCA9IG1ldGFkYXRhLmlkOwogCi0gICAgUmVmUHRyPEFzeW5jUmVxdWVz
dD4gcmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8Ym9vbD46OmNyZWF0ZShbdGhpcywgYWRkZWRP
YmplY3RTdG9yZUlELCBzdWNjZXNzQ2FsbGJhY2tdKGJvb2wgc3VjY2VzcykgeworICAgIFJlZlB0
cjxBc3luY1JlcXVlc3Q+IHJlcXVlc3QgPSBjcmVhdGVSZWY8QXN5bmNSZXF1ZXN0SW1wbDxib29s
Pj4oW3RoaXMsIGFkZGVkT2JqZWN0U3RvcmVJRCwgc3VjY2Vzc0NhbGxiYWNrXShib29sIHN1Y2Nl
c3MpIHsKICAgICAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICAgICAgbV9tZXRhZGF0YS0+b2Jq
ZWN0U3RvcmVzLnJlbW92ZShhZGRlZE9iamVjdFN0b3JlSUQpOwogICAgICAgICBzdWNjZXNzQ2Fs
bGJhY2soc3VjY2Vzcyk7CkBAIC00NDgsNyArNDQ4LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVu
dGkKICAgICBBU1NFUlQobV9tZXRhZGF0YS0+b2JqZWN0U3RvcmVzLmNvbnRhaW5zKG9iamVjdFN0
b3JlSUQpKTsKICAgICBJREJPYmplY3RTdG9yZU1ldGFkYXRhIG1ldGFkYXRhID0gbV9tZXRhZGF0
YS0+b2JqZWN0U3RvcmVzLnRha2Uob2JqZWN0U3RvcmVJRCk7CiAKLSAgICBSZWZQdHI8QXN5bmNS
ZXF1ZXN0PiByZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDxib29sPjo6Y3JlYXRlKFt0aGlzLCBt
ZXRhZGF0YSwgc3VjY2Vzc0NhbGxiYWNrXShib29sIHN1Y2Nlc3MpIHsKKyAgICBSZWZQdHI8QXN5
bmNSZXF1ZXN0PiByZXF1ZXN0ID0gY3JlYXRlUmVmPEFzeW5jUmVxdWVzdEltcGw8Ym9vbD4+KFt0
aGlzLCBtZXRhZGF0YSwgc3VjY2Vzc0NhbGxiYWNrXShib29sIHN1Y2Nlc3MpIHsKICAgICAgICAg
aWYgKCFzdWNjZXNzKQogICAgICAgICAgICAgbV9tZXRhZGF0YS0+b2JqZWN0U3RvcmVzLnNldCht
ZXRhZGF0YS5pZCwgbWV0YWRhdGEpOwogICAgICAgICBzdWNjZXNzQ2FsbGJhY2soc3VjY2Vzcyk7
CkBAIC00NzQsNyArNDc0LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y2xlYXJPYmplY3RT
dG9yZShjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWYKIAogICAgIEFTU0VS
VChtX21ldGFkYXRhLT5vYmplY3RTdG9yZXMuY29udGFpbnMob2JqZWN0U3RvcmVJRCkpOwogCi0g
ICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gcmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8Ym9vbD46
OmNyZWF0ZShbdGhpcywgc3VjY2Vzc0NhbGxiYWNrXShib29sIHN1Y2Nlc3MpIHsKKyAgICBSZWZQ
dHI8QXN5bmNSZXF1ZXN0PiByZXF1ZXN0ID0gY3JlYXRlUmVmPEFzeW5jUmVxdWVzdEltcGw8Ym9v
bD4+KFt0aGlzLCBzdWNjZXNzQ2FsbGJhY2tdKGJvb2wgc3VjY2VzcykgewogICAgICAgICBzdWNj
ZXNzQ2FsbGJhY2soc3VjY2Vzcyk7CiAgICAgfSwgW3RoaXMsIHN1Y2Nlc3NDYWxsYmFja10gewog
ICAgICAgICBzdWNjZXNzQ2FsbGJhY2soZmFsc2UpOwpAQCAtNTAwLDcgKzUwMCw3IEBAIHZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZUluZGV4KGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllciwKICAgICBtX21ldGFkYXRhLT5vYmplY3RTdG9yZXMuZ2V0KG9iamVj
dFN0b3JlSUQpLmluZGV4ZXMuc2V0KG1ldGFkYXRhLmlkLCBtZXRhZGF0YSk7CiAgICAgaW50NjRf
dCBhZGRlZEluZGV4SUQgPSBtZXRhZGF0YS5pZDsKIAotICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+
IHJlcXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPGJvb2w+OjpjcmVhdGUoW3RoaXMsIG9iamVjdFN0
b3JlSUQsIGFkZGVkSW5kZXhJRCwgc3VjY2Vzc0NhbGxiYWNrXShib29sIHN1Y2Nlc3MpIHsKKyAg
ICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiByZXF1ZXN0ID0gY3JlYXRlUmVmPEFzeW5jUmVxdWVzdElt
cGw8Ym9vbD4+KFt0aGlzLCBvYmplY3RTdG9yZUlELCBhZGRlZEluZGV4SUQsIHN1Y2Nlc3NDYWxs
YmFja10oYm9vbCBzdWNjZXNzKSB7CiAgICAgICAgIGlmICghc3VjY2VzcykgewogICAgICAgICAg
ICAgYXV0byBvYmplY3RTdG9yZUZpbmQgPSBtX21ldGFkYXRhLT5vYmplY3RTdG9yZXMuZmluZChv
YmplY3RTdG9yZUlEKTsKICAgICAgICAgICAgIGlmIChvYmplY3RTdG9yZUZpbmQgIT0gbV9tZXRh
ZGF0YS0+b2JqZWN0U3RvcmVzLmVuZCgpKQpAQCAtNTM0LDcgKzUzNCw3IEBAIHZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OmRlbGV0ZUluZGV4KGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9u
SWRlbnRpZmllciwKIAogICAgIElEQkluZGV4TWV0YWRhdGEgbWV0YWRhdGEgPSBtX21ldGFkYXRh
LT5vYmplY3RTdG9yZXMuZ2V0KG9iamVjdFN0b3JlSUQpLmluZGV4ZXMudGFrZShpbmRleElEKTsK
IAotICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHJlcXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPGJv
b2w+OjpjcmVhdGUoW3RoaXMsIG9iamVjdFN0b3JlSUQsIG1ldGFkYXRhLCBzdWNjZXNzQ2FsbGJh
Y2tdKGJvb2wgc3VjY2VzcykgeworICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHJlcXVlc3QgPSBj
cmVhdGVSZWY8QXN5bmNSZXF1ZXN0SW1wbDxib29sPj4oW3RoaXMsIG9iamVjdFN0b3JlSUQsIG1l
dGFkYXRhLCBzdWNjZXNzQ2FsbGJhY2tdKGJvb2wgc3VjY2VzcykgewogICAgICAgICBpZiAoIXN1
Y2Nlc3MpIHsKICAgICAgICAgICAgIGF1dG8gb2JqZWN0U3RvcmVGaW5kID0gbV9tZXRhZGF0YS0+
b2JqZWN0U3RvcmVzLmZpbmQob2JqZWN0U3RvcmVJRCk7CiAgICAgICAgICAgICBpZiAob2JqZWN0
U3RvcmVGaW5kICE9IG1fbWV0YWRhdGEtPm9iamVjdFN0b3Jlcy5lbmQoKSkKQEAgLTU2NSw3ICs1
NjUsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRSZWNvcmQoY29uc3QgSURCSWRlbnRp
ZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbgogCiAgICAgQVNTRVJUKG1fbWV0YWRhdGEt
Pm9iamVjdFN0b3Jlcy5jb250YWlucyhvYmplY3RTdG9yZUlEKSk7CiAKLSAgICBSZWZQdHI8QXN5
bmNSZXF1ZXN0PiByZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDxJREJLZXlEYXRhLCB1aW50MzJf
dCwgU3RyaW5nPjo6Y3JlYXRlKFt0aGlzLCBjYWxsYmFja10oY29uc3QgSURCS2V5RGF0YSYga2V5
RGF0YSwgdWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgewor
ICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHJlcXVlc3QgPSBjcmVhdGVSZWY8QXN5bmNSZXF1ZXN0
SW1wbDxJREJLZXlEYXRhLCB1aW50MzJfdCwgU3RyaW5nPj4oW3RoaXMsIGNhbGxiYWNrXShjb25z
dCBJREJLZXlEYXRhJiBrZXlEYXRhLCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYg
ZXJyb3JNZXNzYWdlKSB7CiAgICAgICAgIGNhbGxiYWNrKGtleURhdGEsIGVycm9yQ29kZSwgZXJy
b3JNZXNzYWdlKTsKICAgICB9LCBbdGhpcywgY2FsbGJhY2tdIHsKICAgICAgICAgY2FsbGJhY2so
SURCS2V5RGF0YSgpLCBJTlZBTElEX1NUQVRFX0VSUiwgIlVuYWJsZSB0byBwdXQgcmVjb3JkIGlu
dG8gZGF0YWJhc2UiKTsKQEAgLTU4OCw3ICs1ODgsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjpnZXRSZWNvcmQoY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBp
bgogCiAgICAgQVNTRVJUKG1fbWV0YWRhdGEtPm9iamVjdFN0b3Jlcy5jb250YWlucyhvYmplY3RT
dG9yZUlEKSk7CiAKLSAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiByZXF1ZXN0ID0gQXN5bmNSZXF1
ZXN0SW1wbDxJREJHZXRSZXN1bHQsIHVpbnQzMl90LCBTdHJpbmc+OjpjcmVhdGUoW3RoaXMsIGNh
bGxiYWNrXShjb25zdCBJREJHZXRSZXN1bHQmIHJlc3VsdCwgdWludDMyX3QgZXJyb3JDb2RlLCBj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgeworICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHJl
cXVlc3QgPSBjcmVhdGVSZWY8QXN5bmNSZXF1ZXN0SW1wbDxJREJHZXRSZXN1bHQsIHVpbnQzMl90
LCBTdHJpbmc+PihbdGhpcywgY2FsbGJhY2tdKGNvbnN0IElEQkdldFJlc3VsdCYgcmVzdWx0LCB1
aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7CiAgICAgICAg
IGNhbGxiYWNrKHJlc3VsdCwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UpOwogICAgIH0sIFt0aGlz
LCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFjayhJREJHZXRSZXN1bHQoKSwgSU5WQUxJRF9T
VEFURV9FUlIsICJVbmFibGUgdG8gZ2V0IHJlY29yZCBmcm9tIGRhdGFiYXNlIik7CkBAIC02MTEs
NyArNjExLDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkN1cnNvcihjb25zdCBJREJJ
ZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGkKIAogICAgIEFTU0VSVChtX21ldGFk
YXRhLT5vYmplY3RTdG9yZXMuY29udGFpbnMob2JqZWN0U3RvcmVJRCkpOwogCi0gICAgUmVmUHRy
PEFzeW5jUmVxdWVzdD4gcmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8aW50NjRfdCwgSURCS2V5
RGF0YSwgSURCS2V5RGF0YSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCB1aW50MzJfdCwgU3Ry
aW5nPjo6Y3JlYXRlKFt0aGlzLCBjYWxsYmFja10oaW50NjRfdCBjdXJzb3JJRCwgY29uc3QgSURC
S2V5RGF0YSYga2V5LCBjb25zdCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gdmFsdWUsIHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpIHsKKyAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiByZXF1ZXN0ID0gY3JlYXRlUmVm
PEFzeW5jUmVxdWVzdEltcGw8aW50NjRfdCwgSURCS2V5RGF0YSwgSURCS2V5RGF0YSwgUGFzc1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+LCB1aW50MzJfdCwgU3RyaW5nPj4oW3RoaXMsIGNhbGxiYWNrXShp
bnQ2NF90IGN1cnNvcklELCBjb25zdCBJREJLZXlEYXRhJiBrZXksIGNvbnN0IElEQktleURhdGEm
IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSwgdWludDMyX3QgZXJy
b3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgewogICAgICAgICBjYWxsYmFjayhj
dXJzb3JJRCwga2V5LCBwcmltYXJ5S2V5LCB2YWx1ZSwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2Up
OwogICAgIH0sIFt0aGlzLCBjYWxsYmFja10gewogICAgICAgICBjYWxsYmFjaygwLCBudWxscHRy
LCBudWxscHRyLCBudWxscHRyLCBJTlZBTElEX1NUQVRFX0VSUiwgIlVuYWJsZSB0byBnZXQgcmVj
b3JkIGZyb20gZGF0YWJhc2UiKTsKQEAgLTYzMiw3ICs2MzIsNyBAQCB2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjpjdXJzb3JBZHZhbmNlKGNvbnN0IElEQklkZW50aWZpZXImIGN1cnNvcklkZW50aWZp
ZXIsIHVpbgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPEFzeW5jUmVxdWVz
dD4gcmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8SURCS2V5RGF0YSwgSURCS2V5RGF0YSwgUGFz
c1JlZlB0cjxTaGFyZWRCdWZmZXI+LCB1aW50MzJfdCwgU3RyaW5nPjo6Y3JlYXRlKFt0aGlzLCBj
YWxsYmFja10oY29uc3QgSURCS2V5RGF0YSYga2V5LCBjb25zdCBJREJLZXlEYXRhJiBwcmltYXJ5
S2V5LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUsIHVpbnQzMl90IGVycm9yQ29kZSwg
Y29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsKKyAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBy
ZXF1ZXN0ID0gY3JlYXRlUmVmPEFzeW5jUmVxdWVzdEltcGw8SURCS2V5RGF0YSwgSURCS2V5RGF0
YSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCB1aW50MzJfdCwgU3RyaW5nPj4oW3RoaXMsIGNh
bGxiYWNrXShjb25zdCBJREJLZXlEYXRhJiBrZXksIGNvbnN0IElEQktleURhdGEmIHByaW1hcnlL
ZXksIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSwgdWludDMyX3QgZXJyb3JDb2RlLCBj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgewogICAgICAgICBjYWxsYmFjayhrZXksIHByaW1h
cnlLZXksIHZhbHVlLCBlcnJvckNvZGUsIGVycm9yTWVzc2FnZSk7CiAgICAgfSwgW3RoaXMsIGNh
bGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNrKG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIElO
VkFMSURfU1RBVEVfRVJSLCAiVW5hYmxlIHRvIGFkdmFuY2UgY3Vyc29yIGluIGRhdGFiYXNlIik7
CkBAIC02NTMsNyArNjUzLDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3Vyc29ySXRlcmF0
ZShjb25zdCBJREJJZGVudGlmaWVyJiBjdXJzb3JJZGVudGlmaWVyLCBjb24KICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHJlcXVlc3QgPSBBc3luY1Jl
cXVlc3RJbXBsPElEQktleURhdGEsIElEQktleURhdGEsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiwgdWludDMyX3QsIFN0cmluZz46OmNyZWF0ZShbdGhpcywgY2FsbGJhY2tdKGNvbnN0IElEQktl
eURhdGEmIGtleSwgY29uc3QgSURCS2V5RGF0YSYgcHJpbWFyeUtleSwgUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IHZhbHVlLCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlKSB7CisgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gcmVxdWVzdCA9IGNyZWF0ZVJlZjxB
c3luY1JlcXVlc3RJbXBsPElEQktleURhdGEsIElEQktleURhdGEsIFBhc3NSZWZQdHI8U2hhcmVk
QnVmZmVyPiwgdWludDMyX3QsIFN0cmluZz4+KFt0aGlzLCBjYWxsYmFja10oY29uc3QgSURCS2V5
RGF0YSYga2V5LCBjb25zdCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gdmFsdWUsIHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UpIHsKICAgICAgICAgY2FsbGJhY2soa2V5LCBwcmltYXJ5S2V5LCB2YWx1ZSwgZXJyb3JD
b2RlLCBlcnJvck1lc3NhZ2UpOwogICAgIH0sIFt0aGlzLCBjYWxsYmFja10gewogICAgICAgICBj
YWxsYmFjayhudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBJTlZBTElEX1NUQVRFX0VSUiwgIlVu
YWJsZSB0byBpdGVyYXRlIGN1cnNvciBpbiBkYXRhYmFzZSIpOwpAQCAtNjc0LDcgKzY3NCw3IEBA
IHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNvdW50KGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgaW50NjRfCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBS
ZWZQdHI8QXN5bmNSZXF1ZXN0PiByZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDxpbnQ2NF90LCB1
aW50MzJfdCwgU3RyaW5nPjo6Y3JlYXRlKFt0aGlzLCBjYWxsYmFja10oaW50NjRfdCBjb3VudCwg
dWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgeworICAgIFJl
ZlB0cjxBc3luY1JlcXVlc3Q+IHJlcXVlc3QgPSBjcmVhdGVSZWY8QXN5bmNSZXF1ZXN0SW1wbDxp
bnQ2NF90LCB1aW50MzJfdCwgU3RyaW5nPj4oW3RoaXMsIGNhbGxiYWNrXShpbnQ2NF90IGNvdW50
LCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7CiAgICAg
ICAgIGNhbGxiYWNrKGNvdW50LCBlcnJvckNvZGUsIGVycm9yTWVzc2FnZSk7CiAgICAgfSwgW3Ro
aXMsIGNhbGxiYWNrXSB7CiAgICAgICAgIGNhbGxiYWNrKDAsIElOVkFMSURfU1RBVEVfRVJSLCAi
VW5hYmxlIHRvIGdldCBjb3VudCBmcm9tIGRhdGFiYXNlIik7CkBAIC02OTUsNyArNjk1LDcgQEAg
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlUmFuZ2UoY29uc3QgSURCSWRlbnRpZmllciYg
dHJhbnNhY3Rpb25JZGVudGlmaWVyLAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVm
UHRyPEFzeW5jUmVxdWVzdD4gcmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8dWludDMyX3QsIFN0
cmluZz46OmNyZWF0ZShbY2FsbGJhY2tdKHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UpIHsKKyAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiByZXF1ZXN0ID0gY3Jl
YXRlUmVmPEFzeW5jUmVxdWVzdEltcGw8dWludDMyX3QsIFN0cmluZz4+KFtjYWxsYmFja10odWlu
dDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgewogICAgICAgICBj
YWxsYmFjayhlcnJvckNvZGUsIGVycm9yTWVzc2FnZSk7CiAgICAgfSwgW2NhbGxiYWNrXSB7CiAg
ICAgICAgIGNhbGxiYWNrKElOVkFMSURfU1RBVEVfRVJSLCAiVW5hYmxlIHRvIGRlbGV0ZVJhbmdl
IGZyb20gZGF0YWJhc2UiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Bc3lu
Y1JlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Bc3luY1JlcXVlc3QuaAppbmRleCBi
ZmRlMTk4NDYxNDcxNDhmZmY4OWExNDhkODcxNzQ2YzZhNjZkZTMxLi4wZWZjNWM5YTBlODljMTc3
NzljMmJmZGIwZDc0ZjdkNmZmMDc0YWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQXN5bmNSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FzeW5jUmVxdWVz
dC5oCkBAIC01NywxOSArNTcsMTAgQEAgcHJpdmF0ZToKIAogdGVtcGxhdGUgPHR5cGVuYW1lLi4u
IEFyZ3VtZW50cz4KIGNsYXNzIEFzeW5jUmVxdWVzdEltcGwgZmluYWwgOiBwdWJsaWMgQXN5bmNS
ZXF1ZXN0IHsKKyAgICBXVEZfQ1JFQVRFX1JFRl9GUklFTkRMWTsKIHB1YmxpYzoKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiB1c2luZyBBcmd1bWVudFR5cGUgPSB0eXBlbmFtZSBzdGQ6OmNvbmRp
dGlvbmFsPHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlLCBULCBjb25zdCBUJj46OnR5cGU7CiAK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBc3luY1JlcXVlc3Q+IGNyZWF0ZShzdGQ6OmZ1bmN0aW9u
PHZvaWQgKEFyZ3VtZW50VHlwZTxBcmd1bWVudHM+Li4uKT4gY29tcGxldGlvbkhhbmRsZXIpCi0g
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFzeW5jUmVxdWVzdEltcGw8QXJndW1l
bnRzLi4uPihXVEY6Om1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBudWxscHRyKSk7Ci0gICAgfQot
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8QXN5bmNSZXF1ZXN0PiBjcmVhdGUoc3RkOjpmdW5jdGlv
bjx2b2lkIChBcmd1bWVudFR5cGU8QXJndW1lbnRzPi4uLik+IGNvbXBsZXRpb25IYW5kbGVyLCBz
dGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGFib3J0SGFuZGxlcikKLSAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgQXN5bmNSZXF1ZXN0SW1wbDxBcmd1bWVudHMuLi4+KFdURjo6bW92ZShj
b21wbGV0aW9uSGFuZGxlciksIFdURjo6bW92ZShhYm9ydEhhbmRsZXIpKSk7Ci0gICAgfQotCiAg
ICAgdmlydHVhbCB+QXN5bmNSZXF1ZXN0SW1wbCgpCiAgICAgewogICAgICAgICBBU1NFUlQoIW1f
Y29tcGxldGlvbkhhbmRsZXIpOwpAQCAtODMsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBw
cml2YXRlOgotICAgIEFzeW5jUmVxdWVzdEltcGwoc3RkOjpmdW5jdGlvbjx2b2lkIChBcmd1bWVu
dFR5cGU8QXJndW1lbnRzPi4uLik+IGNvbXBsZXRpb25IYW5kbGVyLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQgKCk+IGFib3J0SGFuZGxlcikKKyAgICBBc3luY1JlcXVlc3RJbXBsKHN0ZDo6ZnVuY3Rpb248
dm9pZCAoQXJndW1lbnRUeXBlPEFyZ3VtZW50cz4uLi4pPiBjb21wbGV0aW9uSGFuZGxlciwgc3Rk
OjpmdW5jdGlvbjx2b2lkICgpPiBhYm9ydEhhbmRsZXIgPSBudWxscHRyKQogICAgICAgICA6IEFz
eW5jUmVxdWVzdChXVEY6Om1vdmUoYWJvcnRIYW5kbGVyKSkKICAgICAgICAgLCBtX2NvbXBsZXRp
b25IYW5kbGVyKFdURjo6bW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlNl
cnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMv
SW5kZXhlZERCL1dlYklEQlNlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IDBlMDdiMmYyMzg5MGI5
ODM3ZDc0ZGU2OGI3ZDMyMWVjODFiMDhjOTguLjc4NmI1NTNiYWExNWFmNTA1OTI2MThlOWY3Nzc2
OGIwYTcwYmM2NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJh
c2VzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVyQ29ubmVjdGlv
bi5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgYm9vbCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjppc0Ns
b3NlZCgpCiAKIHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6ZGVsZXRlRGF0YWJhc2UoY29u
c3QgU3RyaW5nJiBuYW1lLCBCb29sQ2FsbGJhY2tGdW5jdGlvbiBzdWNjZXNzQ2FsbGJhY2spCiB7
Ci0gICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gc2VydmVyUmVxdWVzdCA9IEFzeW5jUmVxdWVzdElt
cGw8Ym9vbD46OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2spOworICAgIFJlZlB0cjxBc3luY1JlcXVl
c3Q+IHNlcnZlclJlcXVlc3QgPSBjcmVhdGVSZWY8QXN5bmNSZXF1ZXN0SW1wbDxib29sPj4oc3Vj
Y2Vzc0NhbGxiYWNrKTsKIAogICAgIHNlcnZlclJlcXVlc3QtPnNldEFib3J0SGFuZGxlcihbc3Vj
Y2Vzc0NhbGxiYWNrXSB7CiAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjayhmYWxzZSk7CkBAIC0xMTQs
NyArMTE0LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpkaWREZWxldGVEYXRhYmFz
ZSh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgc3VjY2VzcykKIAogdm9pZCBXZWJJREJTZXJ2ZXJD
b25uZWN0aW9uOjpnZXRPckVzdGFibGlzaElEQkRhdGFiYXNlTWV0YWRhdGEoR2V0SURCRGF0YWJh
c2VNZXRhZGF0YUZ1bmN0aW9uIGNvbXBsZXRpb25DYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8QXN5
bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDxJREJEYXRhYmFzZU1l
dGFkYXRhLCBib29sPjo6Y3JlYXRlKGNvbXBsZXRpb25DYWxsYmFjayk7CisgICAgUmVmUHRyPEFz
eW5jUmVxdWVzdD4gc2VydmVyUmVxdWVzdCA9IGNyZWF0ZVJlZjxBc3luY1JlcXVlc3RJbXBsPElE
QkRhdGFiYXNlTWV0YWRhdGEsIGJvb2w+Pihjb21wbGV0aW9uQ2FsbGJhY2spOwogCiAgICAgc2Vy
dmVyUmVxdWVzdC0+c2V0QWJvcnRIYW5kbGVyKFtjb21wbGV0aW9uQ2FsbGJhY2tdIHsKICAgICAg
ICAgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YTsKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lk
IFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmNsb3NlKCkKIAogdm9pZCBXZWJJREJTZXJ2ZXJDb25u
ZWN0aW9uOjpvcGVuVHJhbnNhY3Rpb24oaW50NjRfdCB0cmFuc2FjdGlvbklELCBjb25zdCBIYXNo
U2V0PGludDY0X3Q+JiBvYmplY3RTdG9yZUlEcywgSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUg
bW9kZSwgQm9vbENhbGxiYWNrRnVuY3Rpb24gc3VjY2Vzc0NhbGxiYWNrKQogewotICAgIFJlZlB0
cjxBc3luY1JlcXVlc3Q+IHNlcnZlclJlcXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPGJvb2w+Ojpj
cmVhdGUoc3VjY2Vzc0NhbGxiYWNrKTsKKyAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJS
ZXF1ZXN0ID0gY3JlYXRlUmVmPEFzeW5jUmVxdWVzdEltcGw8Ym9vbD4+KHN1Y2Nlc3NDYWxsYmFj
ayk7CiAKICAgICBzZXJ2ZXJSZXF1ZXN0LT5zZXRBYm9ydEhhbmRsZXIoW3N1Y2Nlc3NDYWxsYmFj
a10gewogICAgICAgICBzdWNjZXNzQ2FsbGJhY2soZmFsc2UpOwpAQCAtMTg5LDcgKzE4OSw3IEBA
IHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6ZGlkT3BlblRyYW5zYWN0aW9uKHVpbnQ2NF90
IHJlcXVlc3RJRCwgYm9vbCBzdWNjZXNzCiAKIHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6
YmVnaW5UcmFuc2FjdGlvbihpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoKT4gY29tcGxldGlvbkNhbGxiYWNrKQogewotICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHNl
cnZlclJlcXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPD46OmNyZWF0ZShjb21wbGV0aW9uQ2FsbGJh
Y2ssIGNvbXBsZXRpb25DYWxsYmFjayk7CisgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gc2VydmVy
UmVxdWVzdCA9IGNyZWF0ZVJlZjxBc3luY1JlcXVlc3RJbXBsPD4+KGNvbXBsZXRpb25DYWxsYmFj
aywgY29tcGxldGlvbkNhbGxiYWNrKTsKIAogICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9IHNlcnZl
clJlcXVlc3QtPnJlcXVlc3RJRCgpOwogICAgIEFTU0VSVCghbV9zZXJ2ZXJSZXF1ZXN0cy5jb250
YWlucyhyZXF1ZXN0SUQpKTsKQEAgLTIxNCw3ICsyMTQsNyBAQCB2b2lkIFdlYklEQlNlcnZlckNv
bm5lY3Rpb246OmRpZEJlZ2luVHJhbnNhY3Rpb24odWludDY0X3QgcmVxdWVzdElELCBib29sKQog
CiB2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmNvbW1pdFRyYW5zYWN0aW9uKGludDY0X3Qg
dHJhbnNhY3Rpb25JRCwgQm9vbENhbGxiYWNrRnVuY3Rpb24gc3VjY2Vzc0NhbGxiYWNrKQogewot
ICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHNlcnZlclJlcXVlc3QgPSBBc3luY1JlcXVlc3RJbXBs
PGJvb2w+OjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrKTsKKyAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0
PiBzZXJ2ZXJSZXF1ZXN0ID0gY3JlYXRlUmVmPEFzeW5jUmVxdWVzdEltcGw8Ym9vbD4+KHN1Y2Nl
c3NDYWxsYmFjayk7CiAKICAgICBzZXJ2ZXJSZXF1ZXN0LT5zZXRBYm9ydEhhbmRsZXIoW3N1Y2Nl
c3NDYWxsYmFja10gewogICAgICAgICBzdWNjZXNzQ2FsbGJhY2soZmFsc2UpOwpAQCAtMjQzLDcg
KzI0Myw3IEBAIHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6ZGlkQ29tbWl0VHJhbnNhY3Rp
b24odWludDY0X3QgcmVxdWVzdElELCBib29sIHN1Y2NlCiAKIHZvaWQgV2ViSURCU2VydmVyQ29u
bmVjdGlvbjo6cmVzZXRUcmFuc2FjdGlvbihpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoKT4gY29tcGxldGlvbkNhbGxiYWNrKQogewotICAgIFJlZlB0cjxBc3luY1Jl
cXVlc3Q+IHNlcnZlclJlcXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPD46OmNyZWF0ZShjb21wbGV0
aW9uQ2FsbGJhY2ssIGNvbXBsZXRpb25DYWxsYmFjayk7CisgICAgUmVmUHRyPEFzeW5jUmVxdWVz
dD4gc2VydmVyUmVxdWVzdCA9IGNyZWF0ZVJlZjxBc3luY1JlcXVlc3RJbXBsPD4+KGNvbXBsZXRp
b25DYWxsYmFjaywgY29tcGxldGlvbkNhbGxiYWNrKTsKIAogICAgIHVpbnQ2NF90IHJlcXVlc3RJ
RCA9IHNlcnZlclJlcXVlc3QtPnJlcXVlc3RJRCgpOwogICAgIEFTU0VSVCghbV9zZXJ2ZXJSZXF1
ZXN0cy5jb250YWlucyhyZXF1ZXN0SUQpKTsKQEAgLTI3NSw3ICsyNzUsNyBAQCBib29sIFdlYklE
QlNlcnZlckNvbm5lY3Rpb246OnJlc2V0VHJhbnNhY3Rpb25TeW5jKGludDY0X3QgdHJhbnNhY3Rp
b25JRCkKIAogdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpyb2xsYmFja1RyYW5zYWN0aW9u
KGludDY0X3QgdHJhbnNhY3Rpb25JRCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBjb21wbGV0aW9u
Q2FsbGJhY2spCiB7Ci0gICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gc2VydmVyUmVxdWVzdCA9IEFz
eW5jUmVxdWVzdEltcGw8Pjo6Y3JlYXRlKGNvbXBsZXRpb25DYWxsYmFjaywgY29tcGxldGlvbkNh
bGxiYWNrKTsKKyAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0gY3JlYXRl
UmVmPEFzeW5jUmVxdWVzdEltcGw8Pj4oY29tcGxldGlvbkNhbGxiYWNrLCBjb21wbGV0aW9uQ2Fs
bGJhY2spOwogCiAgICAgdWludDY0X3QgcmVxdWVzdElEID0gc2VydmVyUmVxdWVzdC0+cmVxdWVz
dElEKCk7CiAgICAgQVNTRVJUKCFtX3NlcnZlclJlcXVlc3RzLmNvbnRhaW5zKHJlcXVlc3RJRCkp
OwpAQCAtMzExLDcgKzMxMSw3IEBAIHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6c2V0SW5k
ZXhLZXlzKGludDY0X3QgdHJhbnNhY3Rpb25JRCwgaW50NjRfdCBkYXRhYmFzCiAKIHZvaWQgV2Vi
SURCU2VydmVyQ29ubmVjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmUoSURCVHJhbnNhY3Rpb25CYWNr
ZW5kJiB0cmFuc2FjdGlvbiwgY29uc3QgQ3JlYXRlT2JqZWN0U3RvcmVPcGVyYXRpb24mIG9wZXJh
dGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkIChQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KT4g
Y29tcGxldGlvbkNhbGxiYWNrKQogewotICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHNlcnZlclJl
cXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4+Ojpj
cmVhdGUoY29tcGxldGlvbkNhbGxiYWNrKTsKKyAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBzZXJ2
ZXJSZXF1ZXN0ID0gY3JlYXRlUmVmPEFzeW5jUmVxdWVzdEltcGw8UGFzc1JlZlB0cjxJREJEYXRh
YmFzZUVycm9yPj4+KGNvbXBsZXRpb25DYWxsYmFjayk7CiAKICAgICBTdHJpbmcgb2JqZWN0U3Rv
cmVOYW1lID0gb3BlcmF0aW9uLm9iamVjdFN0b3JlTWV0YWRhdGEoKS5uYW1lOwogICAgIHNlcnZl
clJlcXVlc3QtPnNldEFib3J0SGFuZGxlcihbb2JqZWN0U3RvcmVOYW1lLCBjb21wbGV0aW9uQ2Fs
bGJhY2tdIHsKQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246
OmRpZENyZWF0ZU9iamVjdFN0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCBzdWNjZQogCiB2
b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmNyZWF0ZUluZGV4KElEQlRyYW5zYWN0aW9uQmFj
a2VuZCZ0cmFuc2FjdGlvbiwgY29uc3QgQ3JlYXRlSW5kZXhPcGVyYXRpb24mIG9wZXJhdGlvbiwg
c3RkOjpmdW5jdGlvbjx2b2lkIChQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxl
dGlvbkNhbGxiYWNrKQogewotICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHNlcnZlclJlcXVlc3Qg
PSBBc3luY1JlcXVlc3RJbXBsPFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4+OjpjcmVhdGUo
Y29tcGxldGlvbkNhbGxiYWNrKTsKKyAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1
ZXN0ID0gY3JlYXRlUmVmPEFzeW5jUmVxdWVzdEltcGw8UGFzc1JlZlB0cjxJREJEYXRhYmFzZUVy
cm9yPj4+KGNvbXBsZXRpb25DYWxsYmFjayk7CiAKICAgICBzZXJ2ZXJSZXF1ZXN0LT5zZXRBYm9y
dEhhbmRsZXIoW2NvbXBsZXRpb25DYWxsYmFja10gewogICAgICAgICBjb21wbGV0aW9uQ2FsbGJh
Y2soSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3du
RXJyb3IsICJVbmtub3duIGVycm9yIG9jY3VyZWQgY3JlYXRpbmcgaW5kZXgiKSk7CkBAIC0zNzAs
NyArMzcwLDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpkaWRDcmVhdGVJbmRleCh1
aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgc3VjY2VzcykKIAogdm9pZCBXZWJJREJTZXJ2ZXJDb25u
ZWN0aW9uOjpkZWxldGVJbmRleChJREJUcmFuc2FjdGlvbkJhY2tlbmQmdHJhbnNhY3Rpb24sIGNv
bnN0IERlbGV0ZUluZGV4T3BlcmF0aW9uJiBvcGVyYXRpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAo
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykKIHsKLSAg
ICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDxQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+Pjo6Y3JlYXRlKGNvbXBsZXRpb25DYWxsYmFjayk7
CisgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gc2VydmVyUmVxdWVzdCA9IGNyZWF0ZVJlZjxBc3lu
Y1JlcXVlc3RJbXBsPFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4+Pihjb21wbGV0aW9uQ2Fs
bGJhY2spOwogCiAgICAgc2VydmVyUmVxdWVzdC0+c2V0QWJvcnRIYW5kbGVyKFtjb21wbGV0aW9u
Q2FsbGJhY2tdIHsKICAgICAgICAgY29tcGxldGlvbkNhbGxiYWNrKElEQkRhdGFiYXNlRXJyb3I6
OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiVW5rbm93biBlcnJv
ciBvY2N1cmVkIGRlbGV0aW5nIGluZGV4IikpOwpAQCAtMzk5LDcgKzM5OSw3IEBAIHZvaWQgV2Vi
SURCU2VydmVyQ29ubmVjdGlvbjo6ZGlkRGVsZXRlSW5kZXgodWludDY0X3QgcmVxdWVzdElELCBi
b29sIHN1Y2Nlc3MpCiAKIHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6Z2V0KElEQlRyYW5z
YWN0aW9uQmFja2VuZCYgdHJhbnNhY3Rpb24sIGNvbnN0IEdldE9wZXJhdGlvbiYgb3BlcmF0aW9u
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IElEQkdldFJlc3VsdCYsIFBhc3NSZWZQdHI8SURC
RGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spCiB7Ci0gICAgUmVmUHRyPEFzeW5j
UmVxdWVzdD4gc2VydmVyUmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8SURCR2V0UmVzdWx0LCBQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+Pjo6Y3JlYXRlKGNvbXBsZXRpb25DYWxsYmFjayk7
CisgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gc2VydmVyUmVxdWVzdCA9IGNyZWF0ZVJlZjxBc3lu
Y1JlcXVlc3RJbXBsPElEQkdldFJlc3VsdCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPj4+
KGNvbXBsZXRpb25DYWxsYmFjayk7CiAKICAgICBzZXJ2ZXJSZXF1ZXN0LT5zZXRBYm9ydEhhbmRs
ZXIoW2NvbXBsZXRpb25DYWxsYmFja10gewogICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2soSURC
R2V0UmVzdWx0KCksIElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6VW5rbm93bkVycm9yLCAiVW5rbm93biBlcnJvciBvY2N1cmVkIGdldHRpbmcgcmVjb3JkIikp
OwpAQCAtNDE4LDcgKzQxOCw3IEBAIHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6Z2V0KElE
QlRyYW5zYWN0aW9uQmFja2VuZCYgdHJhbnNhY3Rpb24sIGNvbnN0IEdldE9wCiAKIHZvaWQgV2Vi
SURCU2VydmVyQ29ubmVjdGlvbjo6cHV0KElEQlRyYW5zYWN0aW9uQmFja2VuZCYgdHJhbnNhY3Rp
b24sIGNvbnN0IFB1dE9wZXJhdGlvbiYgb3BlcmF0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFBh
c3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRp
b25DYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0g
QXN5bmNSZXF1ZXN0SW1wbDxQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCRGF0YWJh
c2VFcnJvcj4+OjpjcmVhdGUoY29tcGxldGlvbkNhbGxiYWNrKTsKKyAgICBSZWZQdHI8QXN5bmNS
ZXF1ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0gY3JlYXRlUmVmPEFzeW5jUmVxdWVzdEltcGw8UGFzc1Jl
ZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+Pj4oY29tcGxldGlvbkNh
bGxiYWNrKTsKIAogICAgIHNlcnZlclJlcXVlc3QtPnNldEFib3J0SGFuZGxlcihbY29tcGxldGlv
bkNhbGxiYWNrXSB7CiAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayhudWxscHRyLCBJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIlVu
a25vd24gZXJyb3Igb2NjdXJlZCBwdXR0aW5nIHJlY29yZCIpKTsKQEAgLTUwOSw3ICs1MDksNyBA
QCB2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmRpZEl0ZXJhdGVDdXJzb3IodWludDY0X3Qg
cmVxdWVzdElELCBjb25zdCBJREJLZXlEYQogCiB2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246
OmNvdW50KElEQlRyYW5zYWN0aW9uQmFja2VuZCYgdHJhbnNhY3Rpb24sIGNvbnN0IENvdW50T3Bl
cmF0aW9uJiBvcGVyYXRpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoaW50NjRfdCwgUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8
QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDxpbnQ2NF90LCBQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+Pjo6Y3JlYXRlKGNvbXBsZXRpb25DYWxsYmFjayk7
CisgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gc2VydmVyUmVxdWVzdCA9IGNyZWF0ZVJlZjxBc3lu
Y1JlcXVlc3RJbXBsPGludDY0X3QsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4+Pihjb21w
bGV0aW9uQ2FsbGJhY2spOwogCiAgICAgc2VydmVyUmVxdWVzdC0+c2V0QWJvcnRIYW5kbGVyKFtj
b21wbGV0aW9uQ2FsbGJhY2tdIHsKICAgICAgICAgY29tcGxldGlvbkNhbGxiYWNrKDAsIElEQkRh
dGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAi
VW5rbm93biBlcnJvciBvY2N1cmVkIGdldHRpbmcgY291bnQiKSk7CkBAIC01MzgsNyArNTM4LDcg
QEAgdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpkaWRDb3VudCh1aW50NjRfdCByZXF1ZXN0
SUQsIGludDY0X3QgY291bnQsIHVpbnQzMl8KIAogdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9u
OjpkZWxldGVSYW5nZShJREJUcmFuc2FjdGlvbkJhY2tlbmQmIHRyYW5zYWN0aW9uLCBjb25zdCBE
ZWxldGVSYW5nZU9wZXJhdGlvbiYgb3BlcmF0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spCiB7Ci0gICAgUmVm
UHRyPEFzeW5jUmVxdWVzdD4gc2VydmVyUmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8UGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUVycm9yPj46OmNyZWF0ZShjb21wbGV0aW9uQ2FsbGJhY2spOworICAg
IFJlZlB0cjxBc3luY1JlcXVlc3Q+IHNlcnZlclJlcXVlc3QgPSBjcmVhdGVSZWY8QXN5bmNSZXF1
ZXN0SW1wbDxQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+Pj4oY29tcGxldGlvbkNhbGxiYWNr
KTsKIAogICAgIHNlcnZlclJlcXVlc3QtPnNldEFib3J0SGFuZGxlcihbY29tcGxldGlvbkNhbGxi
YWNrXSB7CiAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayhJREJEYXRhYmFzZUVycm9yOjpjcmVh
dGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIlVua25vd24gZXJyb3Igb2Nj
dXJlZCBnZXR0aW5nIGNvdW50IikpOwpAQCAtNTY3LDcgKzU2Nyw3IEBAIHZvaWQgV2ViSURCU2Vy
dmVyQ29ubmVjdGlvbjo6ZGlkRGVsZXRlUmFuZ2UodWludDY0X3QgcmVxdWVzdElELCB1aW50MzJf
dCBlcnJvckNvCiAKIHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6Y2xlYXJPYmplY3RTdG9y
ZShJREJUcmFuc2FjdGlvbkJhY2tlbmQmLCBjb25zdCBDbGVhck9iamVjdFN0b3JlT3BlcmF0aW9u
JiBvcGVyYXRpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVy
cm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBz
ZXJ2ZXJSZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDxQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJy
b3I+Pjo6Y3JlYXRlKGNvbXBsZXRpb25DYWxsYmFjayk7CisgICAgUmVmUHRyPEFzeW5jUmVxdWVz
dD4gc2VydmVyUmVxdWVzdCA9IGNyZWF0ZVJlZjxBc3luY1JlcXVlc3RJbXBsPFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VFcnJvcj4+Pihjb21wbGV0aW9uQ2FsbGJhY2spOwogCiAgICAgc2VydmVyUmVx
dWVzdC0+c2V0QWJvcnRIYW5kbGVyKFtjb21wbGV0aW9uQ2FsbGJhY2tdIHsKICAgICAgICAgY29t
cGxldGlvbkNhbGxiYWNrKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6VW5rbm93bkVycm9yLCAiVW5rbm93biBlcnJvciBvY2N1cmVkIGNsZWFyaW5nIG9iamVj
dCBzdG9yZSIpKTsKQEAgLTU5Niw3ICs1OTYsNyBAQCB2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rp
b246OmRpZENsZWFyT2JqZWN0U3RvcmUodWludDY0X3QgcmVxdWVzdElELCBib29sIHN1Y2Nlcwog
CiB2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmRlbGV0ZU9iamVjdFN0b3JlKElEQlRyYW5z
YWN0aW9uQmFja2VuZCYsIGNvbnN0IERlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uJiBvcGVyYXRp
b24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik+IGNv
bXBsZXRpb25DYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1
ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDxQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+Pjo6Y3Jl
YXRlKGNvbXBsZXRpb25DYWxsYmFjayk7CisgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gc2VydmVy
UmVxdWVzdCA9IGNyZWF0ZVJlZjxBc3luY1JlcXVlc3RJbXBsPFBhc3NSZWZQdHI8SURCRGF0YWJh
c2VFcnJvcj4+Pihjb21wbGV0aW9uQ2FsbGJhY2spOwogCiAgICAgc2VydmVyUmVxdWVzdC0+c2V0
QWJvcnRIYW5kbGVyKFtjb21wbGV0aW9uQ2FsbGJhY2tdIHsKICAgICAgICAgY29tcGxldGlvbkNh
bGxiYWNrKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5r
bm93bkVycm9yLCAiVW5rbm93biBlcnJvciBvY2N1cmVkIGRlbGV0aW5nIG9iamVjdCBzdG9yZSIp
KTsKQEAgLTYyNSw3ICs2MjUsNyBAQCB2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmRpZERl
bGV0ZU9iamVjdFN0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCBzdWNjZQogCiB2b2lkIFdl
YklEQlNlcnZlckNvbm5lY3Rpb246OmNoYW5nZURhdGFiYXNlVmVyc2lvbihJREJUcmFuc2FjdGlv
bkJhY2tlbmQmLCBjb25zdCBJREJEYXRhYmFzZUJhY2tlbmQ6OlZlcnNpb25DaGFuZ2VPcGVyYXRp
b24mIG9wZXJhdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkIChQYXNzUmVmUHRyPElEQkRhdGFiYXNl
RXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKQogewotICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+
IHNlcnZlclJlcXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPFBhc3NSZWZQdHI8SURCRGF0YWJhc2VF
cnJvcj4+OjpjcmVhdGUoY29tcGxldGlvbkNhbGxiYWNrKTsKKyAgICBSZWZQdHI8QXN5bmNSZXF1
ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0gY3JlYXRlUmVmPEFzeW5jUmVxdWVzdEltcGw8UGFzc1JlZlB0
cjxJREJEYXRhYmFzZUVycm9yPj4+KGNvbXBsZXRpb25DYWxsYmFjayk7CiAKICAgICBzZXJ2ZXJS
ZXF1ZXN0LT5zZXRBYm9ydEhhbmRsZXIoW2NvbXBsZXRpb25DYWxsYmFja10gewogICAgICAgICBj
b21wbGV0aW9uQ2FsbGJhY2soSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpVbmtub3duRXJyb3IsICJVbmtub3duIGVycm9yIG9jY3VyZWQgY2hhbmdpbmcgZGF0
YWJhc2UgdmVyc2lvbiIpKTsKQEAgLTY1NCw3ICs2NTQsNyBAQCB2b2lkIFdlYklEQlNlcnZlckNv
bm5lY3Rpb246OmRpZENoYW5nZURhdGFiYXNlVmVyc2lvbih1aW50NjRfdCByZXF1ZXN0SUQsIGJv
b2wgcwogCiB2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246Om9wZW5DdXJzb3IoSURCVHJhbnNh
Y3Rpb25CYWNrZW5kJiwgY29uc3QgT3BlbkN1cnNvck9wZXJhdGlvbiYgb3BlcmF0aW9uLCBzdGQ6
OmZ1bmN0aW9uPHZvaWQgKGludDY0X3QsIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJ
REJLZXk+LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VF
cnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spCiB7Ci0gICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4g
c2VydmVyUmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8aW50NjRfdCwgUGFzc1JlZlB0cjxJREJL
ZXk+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUVycm9yPj46OmNyZWF0ZShjb21wbGV0aW9uQ2FsbGJhY2spOworICAg
IFJlZlB0cjxBc3luY1JlcXVlc3Q+IHNlcnZlclJlcXVlc3QgPSBjcmVhdGVSZWY8QXN5bmNSZXF1
ZXN0SW1wbDxpbnQ2NF90LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5Piwg
UGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+Pj4o
Y29tcGxldGlvbkNhbGxiYWNrKTsKIAogICAgIHNlcnZlclJlcXVlc3QtPnNldEFib3J0SGFuZGxl
cihbY29tcGxldGlvbkNhbGxiYWNrXSB7CiAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFjaygwLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyLCBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0
YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIlVua25vd24gZXJyb3Igb2NjdXJlZCBvcGVu
aW5nIGRhdGFiYXNlIGN1cnNvciIpKTsKQEAgLTY3MSw3ICs2NzEsNyBAQCB2b2lkIFdlYklEQlNl
cnZlckNvbm5lY3Rpb246Om9wZW5DdXJzb3IoSURCVHJhbnNhY3Rpb25CYWNrZW5kJiwgY29uc3Qg
T3BlbkN1cnNvcgogCiB2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmN1cnNvckFkdmFuY2Uo
SURCQ3Vyc29yQmFja2VuZCYsIGNvbnN0IEN1cnNvckFkdmFuY2VPcGVyYXRpb24mIG9wZXJhdGlv
biwgc3RkOjpmdW5jdGlvbjx2b2lkIChQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURC
S2V5PiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJy
b3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKQogewotICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHNl
cnZlclJlcXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1Jl
ZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VFcnJvcj4+OjpjcmVhdGUoY29tcGxldGlvbkNhbGxiYWNrKTsKKyAgICBSZWZQdHI8QXN5
bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0gY3JlYXRlUmVmPEFzeW5jUmVxdWVzdEltcGw8UGFz
c1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8U2hhcmVkQnVm
ZmVyPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPj4+KGNvbXBsZXRpb25DYWxsYmFjayk7
CiAKICAgICBzZXJ2ZXJSZXF1ZXN0LT5zZXRBYm9ydEhhbmRsZXIoW2NvbXBsZXRpb25DYWxsYmFj
a10gewogICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2sobnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciwgSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3du
RXJyb3IsICJVbmtub3duIGVycm9yIG9jY3VyZWQgYWR2YW5jaW5nIGRhdGFiYXNlIGN1cnNvciIp
KTsKQEAgLTY4OCw3ICs2ODgsNyBAQCB2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmN1cnNv
ckFkdmFuY2UoSURCQ3Vyc29yQmFja2VuZCYsIGNvbnN0IEN1cnNvckFkdmFuYwogCiB2b2lkIFdl
YklEQlNlcnZlckNvbm5lY3Rpb246OmN1cnNvckl0ZXJhdGUoSURCQ3Vyc29yQmFja2VuZCYsIGNv
bnN0IEN1cnNvckl0ZXJhdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQgKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2Fs
bGJhY2spCiB7Ci0gICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gc2VydmVyUmVxdWVzdCA9IEFzeW5j
UmVxdWVzdEltcGw8UGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NS
ZWZQdHI8U2hhcmVkQnVmZmVyPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPj46OmNyZWF0
ZShjb21wbGV0aW9uQ2FsbGJhY2spOworICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHNlcnZlclJl
cXVlc3QgPSBjcmVhdGVSZWY8QXN5bmNSZXF1ZXN0SW1wbDxQYXNzUmVmUHRyPElEQktleT4sIFBh
c3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBQYXNzUmVmUHRyPElE
QkRhdGFiYXNlRXJyb3I+Pj4oY29tcGxldGlvbkNhbGxiYWNrKTsKIAogICAgIHNlcnZlclJlcXVl
c3QtPnNldEFib3J0SGFuZGxlcihbY29tcGxldGlvbkNhbGxiYWNrXSB7CiAgICAgICAgIGNvbXBs
ZXRpb25DYWxsYmFjayhudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBJREJEYXRhYmFzZUVycm9y
OjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIlVua25vd24gZXJy
b3Igb2NjdXJlZCBpdGVyYXRpbmcgZGF0YWJhc2UgY3Vyc29yIikpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254583</attachid>
            <date>2015-06-09 11:46:38 -0700</date>
            <delta_ts>2015-06-09 11:46:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145384-20150609204612.patch</filename>
            <type>text/plain</type>
            <size>4000</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1MzYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ODNkY2Y2NjM3YTYxNDNkY2RhMzExZTM3NWE5ZTFkOTAyMTM3ZDU2Li43ZjMwMzc1YjBiNzJlMTY5
MDkzMWI5YWYzMzhiODczYmUyZTExY2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxNS0wNi0wOSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5j
b20+CisKKyAgICAgICAgSW50cm9kdWNlIFdURjo6Y3JlYXRlUmVmPFQ+KEFyZ3MmJi4uLikKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NTM4NAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9y
L1NjcmlwdENhbGxTdGFjay5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFj
azo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNr
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwOgorICAg
ICAgICAoSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRDYWxsU3RhY2spOgorICAgICAgICAoSW5zcGVj
dG9yOjpjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrRnJvbUV4Y2VwdGlvbik6CisKIDIwMTUtMDYtMDkgIENz
YWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbY21ha2VdIEZp
eCB0aGUgc3R5bGUgaXNzdWVzIGluIGNtYWtlIHByb2plY3QgZmlsZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggYjBjN2Y5N2Nj
N2M0MTZkM2QwODVkYWEzYThkYzFiMjBjYzU3ZDk2MC4uOWJkNDBmZjE2MjEwNGQyMDc4YTAyYzlk
ZTg3Njg4OTA0N2I3MTBhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNS0wNi0wOSAgWmFuIERv
YmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIFdURjo6
Y3JlYXRlUmVmPFQ+KEFyZ3MmJi4uLikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0NTM4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogd3RmL1JlZi5oOgorICAgICAgICAoV1RGOjpjcmVhdGVSZWYpOgor
ICAgICAgICAqIHd0Zi9SZWZDb3VudGVkLmg6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWQ6OmNy
ZWF0ZVJlZik6CisKIDIwMTUtMDYtMDkgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0
Lm9yZz4KIAogICAgICAgICBbY21ha2VdIEZpeCB0aGUgc3R5bGUgaXNzdWVzIGluIGNtYWtlIHBy
b2plY3QgZmlsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
U2NyaXB0Q2FsbFN0YWNrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2Ny
aXB0Q2FsbFN0YWNrLmNwcAppbmRleCA0OWIwNzE5ZjVhNGE3MWI5NWFiZDJlYzBjNzVhOGU3NTcx
YTE5NGMyLi5iYjQzNWQ2ZjUwNDJjMzUxMTRkMDkwZDIyMWZkZWNiNjcxY2E5MjY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3Bw
CkBAIC0zNiwxNiArMzYsNiBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotUmVmPFNjcmlw
dENhbGxTdGFjaz4gU2NyaXB0Q2FsbFN0YWNrOjpjcmVhdGUoKQotewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFNjcmlwdENhbGxTdGFjayk7Ci19Ci0KLVJlZjxTY3JpcHRDYWxsU3RhY2s+IFNj
cmlwdENhbGxTdGFjazo6Y3JlYXRlKFZlY3RvcjxTY3JpcHRDYWxsRnJhbWU+JiBmcmFtZXMpCi17
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2NyaXB0Q2FsbFN0YWNrKGZyYW1lcykpOwotfQot
CiBTY3JpcHRDYWxsU3RhY2s6OlNjcmlwdENhbGxTdGFjaygpCiB7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaAppbmRleCBkMmNiYjY1
OTYxYmIzOGQ5ZTk1Yjk1NTlkNzUyODhmMTc2ZDAwMDJhLi5lZWEwMjIxN2QxYTViYjE4MzFjYjM4
ZWZiYmY0NWI1MGZlNTgyMTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL1NjcmlwdENhbGxTdGFjay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmgKQEAgLTQzLDEwICs0Myw2IEBAIG5hbWVzcGFjZSBJbnNw
ZWN0b3IgewogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgU2NyaXB0Q2FsbFN0YWNrIDogcHVibGlj
IFJlZkNvdW50ZWQ8U2NyaXB0Q2FsbFN0YWNrPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0
IHNpemVfdCBtYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlID0gMjAwOwotICAgIAotICAgIHN0YXRp
YyBSZWY8U2NyaXB0Q2FsbFN0YWNrPiBjcmVhdGUoKTsKLSAgICBzdGF0aWMgUmVmPFNjcmlwdENh
bGxTdGFjaz4gY3JlYXRlKFZlY3RvcjxTY3JpcHRDYWxsRnJhbWU+Jik7Ci0KICAgICB+U2NyaXB0
Q2FsbFN0YWNrKCk7CiAKICAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGF0KHNpemVfdCkgY29u
c3Q7CkBAIC02MSw2ICs1Nyw4IEBAIHB1YmxpYzoKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q29uc29sZTo6U3RhY2tUcmFjZT4gYnVpbGRJbnNwZWN0b3JBcnJheSgpIGNvbnN0OwogCiBw
cml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBSZWZDb3VudGVkPFNjcmlwdENhbGxTdGFjaz47CisK
ICAgICBTY3JpcHRDYWxsU3RhY2soKTsKICAgICBTY3JpcHRDYWxsU3RhY2soVmVjdG9yPFNjcmlw
dENhbGxGcmFtZT4mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVmQ291bnRlZC5o
IGIvU291cmNlL1dURi93dGYvUmVmQ291bnRlZC5oCmluZGV4IGM5YzY2MzliZGRhZGQ4ZDIyNGE5
ZTIzNzdmOThkNGU3ODU0OGMxYTMuLmVkYzY4Njk4YTQ0ZGYzZWI0M2I3NjE0NmUwYjFhMjU1MTkx
NTU0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWQuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9SZWZDb3VudGVkLmgKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogCiBuYW1lc3BhY2UgV1RGIHsK
IApAQCAtMTQwLDYgKzE0MSwxMiBAQCBpbmxpbmUgdm9pZCBhZG9wdGVkKFJlZkNvdW50ZWRCYXNl
KiBvYmplY3QpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBSZWZDb3VudGVkIDogcHVibGlj
IFJlZkNvdW50ZWRCYXNlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZWZDb3VudGVkKTsg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUu
Li4gQXJncz4KKyAgICBzdGF0aWMgUmVmPFQ+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3Mp
Li4uKSk7CisgICAgfQorCiAgICAgdm9pZCBkZXJlZigpCiAgICAgewogICAgICAgICBpZiAoZGVy
ZWZCYXNlKCkpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>